Доброго времени суток!
Сегодня разберем простейший 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. Возможно будет в следующих статьях. Удачного всем дня!