В сегодняшней статье расскажем про настройку IVR (Interactive Voice Response) стандартными способами Asterisk, без использования графической оболочки FreePBX.
Аббревиатура IVR описывает систему, в которой вызывающий абонент, по средствам кнопок на телефоне осуществляет навигацию в голосовом меню и соединяется с нужным отделом, сотрудником и службой. В масштабах крупного "Enterprise", конечно, IVR описывает гораздо более сложные системы, где используются различные технологии интеграции. Но мы рассмотрим простейший вариант.
Про настройку IVR через графический интерфейс FreePBX, читайте в нашей статье.
Немного теории
Перед тем как создать простейший пример IVR, необходимо разобраться во внутренних приложениях, которыми оперирует Asterisk.
Приложение Background() проигрывает звуковую запись и в то же время слушает входящие сигналы DTMF (Dual-Tone Multi-Frequency). Система, тем временем, пытается найти совпадения введённых цифр DTMF и внутреннего номера (extension) в текущем контексте дайл-плана, если совпадение есть, то Asterisk отправит вызов на найденный номер.
Приложение WaitExten() необходимо, если вы хотите заставить Asterisk подождать какое-то время после того, как он воспроизведет звуковую запись. Параметры, задающиеся в WaitExten() - это количество секунд, которые система будет ждать, прежде чем разрешит абоненту совершить набор внутреннего номера, например – WaitExten(10).
Приложение Goto() позволяет переходить с одной позиции в дайл-плане на другую – это может быть контекст (context), внутренний номер (extension) и приоритет (priority).
Конфигурация
Теперь мы можем создать простейший пример голосового меню, используя вышеупомянутые приложения. Как правило, IVR создаётся в новом контексте, таким образом оставаясь независимым от остальных настроенных extension’ов в дайл-плане.
Основная запись, содержащая сценарий голосового меню будет следующей: "Здравствуйте вы позвонили в компанию %companyname%. Для того, чтобы соединиться с отделом поддержки нажмите 1. Для того, чтобы соединиться с отделом продаж нажмите 2. Если Вы знаете внутренний номер абонента, наберите его в тональном режиме".
Настройку IVR проводим в файле extensions.conf и добавляем туда следующую запись:
[ivr-example] exten => s,1,Answer(500) same => n(loop),Background(Main_IVR_record) exten => 1,1,Goto(3445,s,1) #Переход в контекст отдела поддержки по нажатию кнопки 1. 3444 – Ринг группа отдела поддержки. exten => 2,1,Goto(3444,s,1) #Переход в контекст отдела продаж нажатию кнопки 2. 3445 – Ринг группа отдела продаж. exten => _XXX,1,Dial(SIP/${EXTEN}@Asterisk) #Набор внутреннего номера сотрудника
Теперь, для инициализации IVR, остается только вызвать контекст [ivr-example].