IVR — голосовое дерево на Asterisk
IVR (Interactive Voice Response) – система, позволяющая организовать интерактивный звуковой интерфейс, управление которым осуществляется пользователем при помощи нажатий соответствующих клавиш на своем телефоне.
Основной составляющей является голосовое дерево – это список меню и подменю, а так же связанных с ними действий, к которым имеет доступ клиент. Рассмотрим на примере процесс развертывания голосовых деревьев IVR с помощью программы для IP-телефонии Asterisk. Что нам для этого нужно:
- Система с установленной и настроенной программой.
- Заведенный в Asterisk телефонный номер.
При этом номер может быть заведен несколькими путями:
- при помощи протоколов SIP и H.323;
- при помощи цифрового потока Е1;
- через аналоговую линию.
Рассмотрим структуру простого дерева, обычно это приветствие клиента и список базовых действий:
«Здравствуйте, Вас приветствует наша компания.
Для того чтобы связаться с директором — нажмите 1.
Для того чтобы связаться с заместителем директора — нажмите 2.
Для того чтобы вызвать дежурного – нажмите 3.
Для того чтобы прослушать информацию заново – нажмите 9.»
Если пользователь хочет выбрать действие «связаться с директором» - он набирает цифру 1, и ему предлагается подменю, содержащее более детальную информацию:
«Вы выбрали связаться с директором.
Для того чтобы позвонить секретарю – нажмите 5.
Для того чтобы оставить сообщение на автоответчике – нажмите 6.
Для возврата в предыдущее меню – нажмите 0.»
Теперь, зная, какую структуру мы хотим придать нашему IVR дереву, и имея телефонный номер, при звонке на который активизируется IVR, например, 8-495-5555555, приступим к работе над кодом.
Первым делом в корневой папке программы требуется создать файл, который будет содержать дерево. Создадим такой файл с именем company.tree и запишем в него пока только одну строку:
[company_tree]
Следующим шагом необходимо отредактировать файл extensions.conf, в котором Asterisk содержит сведения о маршрутизации. Находится он в корневой папке программы /etc/asterisk.
В начало файла дописываем строку, которая подключит файл с деревом к плану маршрутизации:
#include «company.tree»
Далее перейдем к контексту входящих звонков, и сделаем указание на наш файл:
exten => 84955555555,1,Goto(company_tree,s,1)
Как только Asterisk обнаружит входящий звонок на указанный номер, он перейдет в контекст company_tree на первую строку «s», которая содержится в созданном нами файле. Вложенность необходима для предотвращения некорректной маршрутизации при пересечении контекстов в файле маршрутизации.
Так же следует помнить, что Asterisk работает с аудиофайлами в формате *.ulaw, но при записи пути к файлу это расширение не указывается. Например:
Background(/home/IVR/back_music)
Данная строка указывает на то, что для фонового звучания будет использован файл back_music.ulaw
Хорошей программой для работы с такими файлами является GXTranscoder, так же подойдут CoolEdit и Adobe Audition.
