Шаг 20. IVR (Interactive Voice Response)

Кейс: Абонент вызывает номер, за которым находится сервис автообслуживания IVR (код абонентской функции). Сервис приветствует абонента, задает ему вопросы, абонент вводит DTMF, и сервис производит настроенные администратором действия, например: воспроизводит файлы, записывает голос абонента и размещает в почтовый ящик, переводит абонента на указанный им номер и т.д.

Сервис автообслуживания является SIP-UA, соответственно характер взаимодействия с ним полностью аналогичен случаю звонка в конференцию на шаге 19.

Чтобы сервис автообслуживания запустился, в домене должны существовать:

  • Код абонентской функции типа "IVR", ссылающийся на код сценария IVR.

  • Сценарий IVR, созданный администратором.

  • Правила маршрутизации на код абонентской функции.

Обслуживанием экземпляра сценария IVR занимается роль IVRScript. Резервируется и масштабируется в режиме Active-Active. Аналогично конференции обслуживание производится на ближайшем к инициатору звонка сайте, обслуживающем домен, в котором маршрутизацией применены код абонентской функции и сам сценарий. Роль IVRScript использует собственный медиа-контекст, в котором помимо абонента добавляются плееры и рекордеры. IVRScript поддерживает все виды и направления переводов.

Как только звонок достигает роли IVRScript, там сразу активируется обработчик сценария, в который подгружается указанный сценарий IVR.

ivr_comp

Каждый сценарий IVR – это созданный администратором в визуальном редакторе алгоритм. Администратор добавляет в сценарий абстрактные компоненты сценариев, параметризует их и связывает в последовательности выполнения. Сценарий выполняется до тех пор, пока абонент не положит трубку, пока не завершится сценарий (компоненты СТОП, перевод абонента на указанный номер, разрыв связи). Существуют также различные ошибочные ситуации, которые также прерывают работу обработчика сценария.

script sample

Каждый компонент сценариев ответственен за абстрактную функциональность, которую администратор использует по своему усмотрению. Для передачи данных между компонентами используются переменные сценария, либо другие области данных, располагающиеся на диске в базе данных или на других внешних ресурсах.

Любой звонок в сервис автообслуживания IVR начинает обслуживание с компонента СТАРТ и требует ответа от сервера IVR – компонент SIP-ответ. Помимо удачного ответа (код 200), устанавливающего сеанс связи, может быть отправлен и любой неудачный ответ, фактически разрывающий соединение.

Особенностью является возможность настройки в сценарии ветки пост-обработки, активирующейся по тому или иному коду завершения сценария.

Некоторые компоненты сценариев:

  • Старт

  • Ответ

  • Пауза

  • Сравнение

  • Присвоение

  • Воспроизведение файла

  • Воспроизведение числа

  • Запись

  • Прием DTMF

  • Генерация DTMF

  • Перевод на номер

  • Перевод с сопровождением

  • Исходящий вызов с обслуживанием в сценарии IVR

  • Запуск сценария (вложенного или асинхронного)

  • Запрос к БД

  • Запрос к внешнему URL (например, http)

  • Запрос к файловому хранилищу S3

  • Запрос/событие в вебсокет подключение

  • Операция (различные виды сущностей)

  • Мониторинг (различные виды сущностей)

  • Файловая операция

  • Отправка почты (SMTP)

  • Прием почты (POP3)

  • Отправка/прием факса (T.30, T.38)

  • Парсер текста (xml, json, regex)

  • Завершение звонка

  • Запуск процесса ОС

  • Постановка/взятие с парковки

  • Управление голосовой почтой

  • Распознавание речи в текст

  • Синтез речи из текста

  • Мьютекс (критическая секция)

  • Внешнее управление

  • Метка

  • Передача управления на метку

  • Вызов функции на метке

  • Возврат управления из функции

В качестве данных для компонентов выступают параметры, которые администратор определяет с помощью аргументов. Аргументами могут являться константы (числовые, строковые и дата/время), переменные сценариев, произвольные выражения с использованием стандартного синтаксиса, большого перечня функций сценариев, а также расширенного синтаксиса Erlang.

Table 1. Используемые термины
Термин Определение

Сценарий IVR

!

Экземпляр сценария IVR

!

IVRScript

!

плеер

!

рекордер

!

компоненты сценариев

!

ветка пост-обработки

!

код завершения сценария

!

переменные сценариев

!

аргументы сценариев

!

выражения сценариев

!

функции сценариев

!