IVR на Elastix.

Задача.

IVR будет состоять из 2-х пунктов.

1. Пользователю предлагается выбрать язык нажатием клавиш 2 или 1 (английский или русский соответственно). Если ничего не выбрано звонок переходит ко 2-му пункту меню с русской локализацией. При не корректном наборе повторное проигрывание сообщения и при повторном не корректном наборе переход на русскоязычное меню.

2. Пользователю проигрывается сообщение на выбранном языке с просьбой набрать внутренний номер телефона или дождаться ответа оператора. Дальнейшая терминация вызова на набранный номер телефона или соединение с оператором по тайм-ауту (если абонент ничего не набрал) и при не корректном наборе.

Дано 3 файла записанных в высоком качестве, в формате m4a.

1.m4a - Предложение выбрать язык нажатием 1 - русский, 2 - английский.

2.m4a - Предложение набрать номер или дождаться ответа оператора на русском языке.

3.m4a - Предложение набрать номер или дождаться ответа оператора на английском языке.

 

Вызов должен приходить на федеральный городской номер.

 

Некоторые особенности задачи.

1. В случае ошибки выбора языка, предложение должно повториться два раза после чего вызов должен направляться в русскоязычное меню.

2. Кроме зарегистрированных внутренних экстеншенов должны набираться внутренние номера всех филиалов находящихся за разными voip шлюзами.

3. Не должны набираться внешние номера и должен отсутствовать доступ к системным функциям.

4. В случае ошибки в наборе номера, либо по таймауту, в зависимости от выбранного языка, вызов должен направляться на разных операторов. Количество попыток правильно набрать номер должно быть не более 3-х.

5. Системные сообщения (например: номер набран не правильно, повторите еще раз) должны быть локализованы в соответствии с выбранным языком.

 

Способ и этапы выполнения задачи.

IVR хоть и простейший однако стандартных гуевых средств для решения задачи не достаточно. Поэтому будем использовать некоторые возможности asterisk не доступные в гуи Elastix.

  • Нужно будет сделать следующее:
  • Cконвертировать файлы в нужный формат и загрузить их на сервер.
  • Настроить соответствующий план набора в соответствующем контексте.
  • Создать Custom Destinations для каждого языка.
  • Создать сам IVR.
  • Настроить входящий вызов на этот IVR.

Выполнение.

Сконвертируем файлы в нужный формат. Понадобятся стандартные утилиты avconv и sox. Для начала в wav:

avconv -i 1.m4a out/monolang.wav avconv -i 2.m4a out/monoruavtosekretar.wav

avconv -i 3.m4a out/monoenavtosekretar.wav

Далее в alaw:

sox out/monolang.wav -e a-law -t RAW -r 8000 -c 1 monolang.alaw

sox out/monoruavtosekretar.wav -e a-law -t RAW -r 8000 -c 1 monoruavtosekretar.alaw

sox out/monoenavtosekretar.wav -e a-law -t RAW -r 8000 -c 1 monoenavtosekretar.alaw

monolang.alaw - сообщение с предложением выбрать язык нажатием клавиш: 1 - русский и 2 - английский.

monoruavtosekretar.alaw - предлагается на русском языке предлагается набрать внутренний номер телефона сотрудника или дождаться ответа оператора.

monoenavtosekretar.alaw - тоже самое на английском языке.

Загрузим файлы в систему. PBX -> PBX Configuration -> System Recording. Загрузка файлов в систему

Создадим контекст в файле extentions.conf (или там, где находится нужный план набора, в данном случае это /etc/asterisk/extensions_corp.conf) куда должны попадать вызовы при нажатии клавиш 1 или 2. План набора.

[monoavtosecretar]

exten => 1,1,Set(inum=0) ; Отсчет попыток неправильного набора

exten => 1,2, Background(custom/monoruavtosekretar) ; Сообщение на русском языке с просьбой набрать номер или дождаться ответа секретаря

exten => 1,3, WaitExten(4) ; Ожидание набора номера

exten => 2,1,Set(CHANNEL(language)=en) ; Устанавливаем английскую локализацию (для системных сообщений на английском языке)

exten => 2,2,Set(inum=0) ; Отсчет попыток неправильного набора

exten => 2,3, Background(custom/monoenavtosekretar) ;Сообщение на английском языке с просьбой набрать номер или дождаться ответа секретаря

exten => 2,4, WaitExten(4) ; Ожидание набора номера

exten => t,1,Dial(SIP/3115@mono,,S(3500)) ;Терминация вызова на оператора по таймауту.

exten => i,1,Playback(pbx-invalid) ;Системное сообщение об ошибке в наборе номера и просьбой повторить попытку набора

exten => i,n,Set(inum=$[${inum}+1]) ;Считаем кол-во попыток не правильного набора

exten => i,n,GotoIf($["${inum}" < "3"]?1,3) ;При кол-ве ошибок в наборе < 3 предлагаем повторить попытку отправляя в пункт 1,3 этого контекста

exten => i,n,Dial(SIP/3115@mono,,S(3500)) ;При кол-ве ошибок превысевших установленное значение отправляем вызов оператору

exten => _[1-6]XXX,1,Goto(from-internal,${EXTEN},1) ; Отправляем вызов в основной контекст

  • Создадим два Custom Destinations:
  • monoavtosecretar_eng со значением monoavtosecretar,2,1 для англоязычных пользователей
  • monoavtosecretar_rus со значением monoavtosecretar,1,1 для русскоязычных пользователей.

, где monoavtosecretar созданный нами контекст Для этого нужно перейти в интерфейс Free PBX: Unembedded FreePBX® -> Admin - > Custom Destination. Free PBX. Custom Destinations Custom Destinations.

Теперь создаем собственно сам IVR. IVR. Elastix.

IVR Name - Имя нашего IVR.

Announcement - Первое сообщение с предложением выбрать языковую локализацию.

Direct Dial - Прямой набор (набор внутренних номеров).

На этом этапе нам это не нужно, поэтому Disable.

Timeout - Большой таймаут тоже не нужен.

Invalid Retries - Кол-во ошибок набора. Ошибиться в двух цифрах сложно поэтому только 2.

Invalid Recording - Сообщение об ошибке в данном случае не нужно.

Invalid Destination - Если абонент всетаки не смог с третьего раза набрать 1 или два направляем его дальше с русской локализацией.

IVR Entries 1- при наборе 1 переходим в русское меню. 2- при наборе 2 переходим в английское меню. t- по таймауту переходим в русское меню.

 

Настроим входящий вызов. Переходим в Inbound Routes и добавляем новый или редактируем уже существующий route. Inbound route

Нужно всего несколько параметров: Description - Описание.

DID Number - Собственно сам номер на который приходит вызов.

Set Destination - Созданный нами IVR.

 


Похожие материалы: