Доброго времени суток!
Сегодня разберем простейший IVR скрипт на vxml. На работе часто бывают случаи, когда нужно настроить автоответчик для правильного распределение звонка. Если у вас станция Cisco Call Manager Express, то удобнее будет это сделать на vxml. Начнём!
Voice XML - это язык XML, которая способствует взаимодействию абонента с приложением. VXML состоит из
form и
menu.
form может использоваться для сбора данных от звонящего, для проигрывания подсказки (prompt) и т.д..
menu позволяет выбрать абоненту различные меню и переводят его к другим
form или
menu. Давайте попробуем кратко разобрать простой vxml скрипт:
<?xml version="1.0"?>
<vxml version="2.0" base="flash:IVR.vxml">
<var name="number"/> --------- Объявляем переменную
number
<form id="main"> ---------- Создаем
form с именем
main
<property name="timeout" value="5s"/>
<block>
<prompt>
<audio src="flash:/IVR/WelcomePromt-Alaw.wav"/> ----- Указываем расположение файла Приветствие (Приветствие говорит: Здравствуйте! Вы позвонили ...... Наберите номер абонента или ждите ответа оператора)
</prompt>
</block>
<field name="get_phone_num" type="number"> ------- Используется для сбора набранного номера от звонящего. Тип вводимых данных
номер. (Может быть boolean, date
)
<grammar type="application/grammar+regex">[0-9][0-9][0-9][0-9]</grammar> ---- Формат набираемого номера четырехзначный
<filled>
<assign expr="'phone://'+get_phone_num" name="number"/> ---- Назначаем значение
<goto next="#TransferToDestNumber"/> ----- переводим в другой form для перевода звонка
</filled>
</field>
<catch event="noinput"> <goto next="#sek"/> </catch> ---- Если абонент ничего не нажал, то переводим его в
form sek.
</form>
<form id="TransferToDestNumber"> ---------- Создаем
form с именем
TransferToDestNumber
<transfer name="mycall" connecttimeout="20s" destexpr="number" bridge="true"> --- Звонок переводится в набранный номер
<filled>
<if cond="mycall == 'busy'">
<prompt><audio src="flash:/IVR/busy-1.wav"/></prompt> ---- Проигрывается указанный звуковой файл, если набираемый номер занят
<elseif cond="mycall == 'noanswer'"/>
<prompt><audio src="flash:/IVR/absent.wav"/></prompt> ------ Проигрывается указанный звуковой файл, если набираемый номер не отвечает.
</if>
</filled>
</transfer>
</form>
<form id="sek"> --------- Создаем
form с именем
sek
<transfer name="mycall" connecttimeout="30s" dest="phone://1010" bridge="true">
<filled>
<if cond="mycall == 'busy'">
<prompt><audio src="flash:/IVR/busy-1.wav"/></prompt>
<elseif cond="mycall == 'noanswer'"/>
<prompt><audio src="flash:/IVR/absent.wav"/></prompt>
</if>
</filled>
</transfer>
</form>
</vxml>
Вот и всё. В данном скрипте не было примера с
menu. Возможно будет в следующих статьях. Удачного всем дня!