IVR

Материал из Xgu.ru

Перейти к: навигация, поиск


IVR (Interactive Voice Response) — технология, позволяющая человеку взаимодействовать с компьютерной системой, передавая ей сигналы с помощью клавиатуры или голоса[1] и получая от неё ответы голосом. Взаимодействие, чаще всего, производится по телефону, а сигналы пользователя передаются с помощью DTMF-последовательностей. Технология IVR используется чаще всего, чтобы сократить нагрузку на людей в системах массового обслуживания по телефону, например, в банках, страховых компаниях, телекоммуникационных операторах и других.


[править] Настройка IVR в Астериске

Настройка IVR в Астериске выполняется через диалплан.

Пример простейшего IVR в Астериске:

exten => _41XX,1,Answer
exten => _41XX,n,Wait(1)
exten => _41XX,n,Record(/tmp/proba${EXTEN:2}:gsm,3)
exten => _41XX,n,Playback(/tmp/proba${EXTEN:2})

exten => 5211,1,Answer
exten => 5211,n,Playback(/tmp/proba99)
exten => 5211,n,WaitExten()
exten => 1,1,Playback(/tmp/proba01)
exten => 1,n,Goto(demo1,5211,1)
exten => 2,1,Playback(/tmp/proba02)
exten => 2,n,Goto(demo1,5211,1)
exten => 3,1,Playback(/tmp/proba03)
exten => 3,n,Goto(demo1,5211,1)
exten => 0,1,Playback(/tmp/proba98)
exten => 0,n,Hangup

Сначала на разных расширениях, начинающихся на 41, мы записываем фразы, а затем используем их по номеру 5211.

Используются фразы 01,02,03,98 и 99. Они образуют интерактивное меню, в котором:

  • 99 — приветствие;
  • 98 — прощание;
  • 01,02,03 — три пункта, доступных после приветствия.

Меню зациклено. Выход из него возможен по нажатию любой клавиши за исключением 1,2,3 или 0. При нажатии 0 производится прощание и завершение разговора. При нажатии остальных клавиш производится завершение разговора без сообщений.

Есть специальные расширения, которые позволяют сделать диалог более удобным:

  • t — завершение по таймауту;
  • i — неверное нажатие.

Если в приведённый выше диалплан добавить строки:

exten => i,1,Playback(/tmp/proba97)
exten => i,n,Goto(demo1,5211,1)
exten => t,1,Playback(/tmp/proba98)
exten => t,n,Hangup

то в случае неверного набора будет проигрываться сообщение 97 и происходить возврат в основное меню, а в случае таймаута будет производиться прощание.


Пример крутого разветвлённого меню:

[deeper]
exten => s,1,Background(demo-nomatch)
;exten => s,1,AGI(festival-script.pl|"deeper menu")
exten => s,2,Goto,options|s|1

[options]
exten => s,1,Background(demo-instruct)
;exten => s,1,AGI(festival-script.pl|"options menu")
exten => 1,1,Goto,deeper|s|1
exten => 2,1,Goto,sales|s|1

[sales]
exten => s,1,Background(demo-thanks)
;exten => s,1,AGI(festival-script.pl|"sales menu")
exten => 0,1,Goto,from-sip|1000
exten => 1,1,Goto,Menu|s|1

[Menu]
exten => s,1,Background(demo-congrats)
;exten => s,1,AGI(festival-script.pl|"menu menu")
exten => 1,1,Goto,sales|s|1
exten => 2,1,Goto,options|s|1
exten => i,1,Goto,s
exten => t,1,Goto,s


;The specific method to enter the menu is up to you but I used my sip phone to test.
[from-sip]

exten => 100,1,Answer
exten => 100,2,Goto,Menu|s|1

Ещё более навороченное:


[править] Дополнительная информация

  • IVR – голосовое дерево — IVR – голосовое дерево на Asterisk
  • Interactive voice response menus (англ.) — построение интерактивных голосовых меню с помощью Asterisk
  • Record (англ.) на asteriskgruru.com — подробнее о действии Record() из диалплана Астериска

[править] Примечания

  1. См. например, LumenVox
Источник — «http://xgu.ru/wiki/IVR»