В приложении IVR редактор (IVR editor) создаются сценарии работы услуги IVR.

IVR (Interactive Voice Response) — система интеллектуальной маршрутизации вызовов на основе информации, вводимой клиентом с клавиатуры телефона при помощи тонального набора, текущего времени и дня недели, номера вызывающего и вызываемого абонента, с возможностью оповещения абонентов при помощи звуковых файлов, загруженных на устройство. Данная функция необходима для организации call-центров, служб такси, технической поддержки и т.п.

IVR-скрипты разделяются по двум типам вызовов:

  • Скрипт для входящего вызова на IVR;
  • Скрипт для исходящего вызова с IVR.

Сценарии IVR находятся во внутреннем хранилище системы. Просмотр и редактирование IVR-сценариев доступно только через IVR-редактор web-конфигуратора.

Рисунок 1 — Интерфейс web-приложения "IVR редактор" ("IVR editor")

Управление скриптом

Для добавления нового скрипта нажмите кнопку "Добавить" ("Add") , выберите, какие вызовы будет обрабатывать скрипт (исходящие, входящие), и укажите имя скрипта.

Для удаления скрипта выберите скрипт и нажмите кнопку "Удалить" ("Remove")

После выполнения настроек для сохранения внесенных изменений нажмите кнопку "Сохранить" ("Save") .
Для проверки правильности скрипта используется кнопка "Валидировать" ("Validate") .
Для загрузки IVR-скрипта с ПК пользователя используется кнопка "Импортировать" ("Import").
Для сохранения IVR-скрипта на ПК пользователя используется кнопка "Экспортировать" ("Export") .
Для изменения названия IVR-скрипта используется кнопка "Переименовать" ("Rename") .

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

  • Текст (Description) — текст, озвучиваемый скриптом;
  • OAuth-токен (OAuth token) — OAuth-токен для интеграции с Yandex Speech API;
  • folderld (folderld) — folderld идентификатор директории с Yandex Speech API;
  • Язык (Language) — язык озвучивания текстового сообщения;
  • Диктор (Speaker) — голос озвучивания тестового сообщения;
  • Эмоция (Emotion) — эмоциональная окраска голоса;
  • Скорость (Speed) — скорость воспроизведения текстового сообщения;
  • Завершить, если tts не доступен (Terminate if tts failed) — завершить ivr скрипт в случае недоступности tts.

Создание и редактирование скрипта

Раздел для создания и редактирования скрипта представляет собой конструктор, в центре поля формируется блок-схема скрипта IVR.
В верхней части расположены типовые блоки, в правой части — список настраиваемых параметров для текущего блока:

Чтобы выделить блок на схеме, кликните на нем левой кнопкой мыши. Выделенный блок имеет границы желтого цвета.
Чтобы добавить блок, выделите пустой блок "Добавить" ("Add action") и выберите требуемый блок на панели инструментов, кликнув на нем левой кнопкой мыши.

В поле справа необходимо настроить параметры для созданного блока. Логические связи для вновь созданного элемента будут добавлены автоматически.

Логическая связь для блока "Goto" задается вручную, для этого в параметрах блока в поле "Перейти к блоку" ("Go to") необходимо указать требуемый блок. Логическая связь "Goto" изображается пунктиром.

Для перемещения блока необходимо выбрать блок и нажать кнопку "Перемещение блоков" ("Dragging blocks").

Для создания подграфа выделите блок, к которому будут привязаны новые логические связи, и нажмите кнопку "Создать подграф" ("Make subgraphs").

Для перемещения подграфа необходимо выбрать блок и нажать кнопку "Перемещение подграфов" ("Dragging subgraphs").

Чтобы убрать выделенный блок со схемы, необходимо выбрать блок и в разделе настройки параметров нажать кнопку "Удалить блок" ("Delete block"). Если данный блок имеет нижестоящие логические связи, будет удалена вся ветка объектов, для которой данный блок является корневым.

Чтобы убрать подграф со схемы, необходимо выбрать блок,к которому привязаны нижестоящие логические связи, и в разделе настройки параметров нажать кнопку "Удалить подграф" ("Delete subgraph").

Описание блоков IVR для скриптов для входящих и исходящих вызовов приведено в таблицах 1, 2.

Таблица 1 — Описание блоков IVR для скриптов для входящих вызовов

ОбозначениеНазваниеОписание

Begin

Блок, необходимый для выдачи абоненту сигнала КПВ, данный блок всегда находится первым в списке сценариев. При поступлении звонка на блок RING состояние вызова не меняется.

Описание (Description) — краткое описание работы блока;

Длительность проигрывания КПВ, c (Ringback duration, s) — выбор длительности проигрывания сигнала КПВ либо отключено.

Добавить (Add action)Пустой блок, предназначенный для добавления блока.

Info

Блок для проигрывания одного или нескольких голосовых сообщений вызывающему абоненту в предответном состоянии (без снятия трубки абонентом B). То есть при проигрывании данного блока плата за соединение не производится. Данный блок может находиться в сценарии после блоков, которые не меняют состояние вызова, и если ранее не было перехода в ответное состояние. Блок полезен для информирования вызываемого абонента дежурной информацией, пока не освободится ресурс, который сможет обработать вызов.

Описание (Description) — краткое описание работы блока.

Сообщения для проигрывания до ответа абонента (Info message) — выбор одного или нескольких голосовых сообщений для проигрывания вызывающему абоненту. Можно выбрать файл, тон или проиграть переменную (дата, цифры, номер, время). При выборе файла необходимо указать его расположение (system, domain), группу и имя файла.

Количество проигрываний (Replay files\tones) — выбор количества циклов проигрывания сообщений, сообщения проигрываются по очереди, начиная с первого.
Перед блоком "Info" могут стоять только блоки, которые не влияют на состояние вызова (Ring, Info, Digitmap, Time, Goto).

Play

Блок для проигрывания одного или нескольких голосовых сообщений вызывающему абоненту в разговорном состоянии (после ответа абонента B). Блок используется для информирования абонента А.

Описание (Description) — краткое описание работы блока.

Сообщения для проигрывания (Play message) — выбор одного или нескольких голосовых сообщений для проигрывания вызывающему абоненту. Можно выбрать файл, тон, синтезировать речь, проиграть переменную (дата, цифры, номер, время).
При выборе файла нужно указать расположение файла (system, domain), группу и имя файла. 

Количество проигрываний (Replay files\tones) — выбор количества циклов проигрывания. Сообщения проигрываются по очереди, начиная с первого.

Ivr

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

Описание (Description) — краткое описание работы блока.

Сообщения/сигналы для проигрывания — в таблице приводится список звуковых файлов для проигрывания:

  • Тип (Type) — тип проигрываемого звукового файла: файл (file) — звуковой файл, загруженный на устройство; тон (tone) — выбор проигрываемого системного звука (цифра DTMF, dialtone, busy, ringback); переменная (дата, цифры, номер, время); синтезированная речь.
  • Имя (Name) — название звукового файла или системного звука.

Список пунктов IVR меню, выбираемых абонентом: (IVR commands)

  • Выбор абонента (Command) — конфигурирование логики дальнейшего прохождения вызова. При нажатии сконфигурированной комбинации цифр устройство определяет исходящую ветку блока IVR. В случае если абонент ничего не нажал, выбирается ветка "No Match".
  • Описание (Description) — краткое описание.
  • Время ожидания выбора абонента, с (Time of wait, s) — таймер набора дополнительного номера, по истечении данного таймера происходит выбор исходящей ветки IVR.
  • Распознаваемые фразы (Recognizable phases) — редактор фраз, распознаваемых блоком:

    Выбор абонента (Command) — конфигурирование логики дальнейшего прохождения вызова. Распознанная фраза опредетит исходяющую ветку IVR.

    Описание (Description) — краткое описание.

    Фраза (Phaze) — распознаваемая фраза абонента. Задается буквами русского алфавита в нижнем регистре.

    Время ожидания выбора абонента, с (Time of wait, s) — таймер набора дополнительного номера, по истечении данного таймера происходит выбор исходящей ветки IVR.

Разрешить донабор (Allow extension dialing) — при установленном флаге разрешается донабор номера, после набора которого будет произведена маршрутизация по плану нумерации устройства, например, можно совершить набор внутреннего абонента.

Дополнительная обработка донабора (Additional processing extension dialing) — при установленном флаге разрешается дополнительная обработка донабора.

Тип доступа (Access type) — выбор категории доступа. При помощи категории доступа можно сделать ограничение вызова на номер, который был набран абонентом в блоке IVR. Можно не выбирать тип доступа, тогда будет использоваться тот, что назначен на абонента А.

Количество цифр для донабора (Max dialing digits) — максимальное количество цифр номера, которое можно набрать при помощи донабора номера.

Межцифровой интервал, с (Interdigit timeout, s) — значение межцифрового интервала донабираемого номера.
Если на входе в блок вызов находится в предответном состоянии, то блок автоматически переводит его в активное состояние (посылает ответ вызывающему абоненту), после чего осуществляется дальнейшее выполнение логики блока.

Time

Блок, необходимый для выбора логики приема вызовов в соответствии с текущим временем и днем недели.

Описание (Description) — краткое описание работы блока.

Часовой пояс (Time zone) — выбор часового пояса.

Для изменения временного диапазона укажите интервал времени в полях "Начало" ("Begin")"Окончание" ("End") и выберите дни недели, установив соответствующие флаги в полях "Понедельник" ("Monday") — "Воскресение" ("Sunday")"Рабочий" ("Work")"Выходной" ("Holiday")"Предпраздничный" ("Half holiday")"Праздничный" ("Day off"). Нажмите кнопку "Сохранить время" ("Save time"). Для добавления нового временного диапазона нажмите кнопку "Добавить время" ("Add time")

Дополнительно в блоке можно использовать расписания, которые создаются в приложении "Календарь" ("Calendar"). Для добавления нового расписания используйте кнопку "Добавить расписание" ("Add schedule").
Блок не меняет состояния вызова.

Dial

Блок, необходимый для набора заданного номера, маршрутизация данного номера происходит по плану нумерации устройства.

Описание (Description) — краткое описание работы блока.

Номер (Number) — номер абонента. Список доступных переменных:

  • %CGPN% — номер вызывающего абонента;
  • %CDPN% — номер вызываемого абонента;
  • %EXTENSION% — цифры донабора.

Время ожидания (Wait timeout) — время ожидания ответа (параметр опциональный, если не задан — используется значение, заданное на уровне домена (по умолчанию 1 минута)).

- Продолжительность разговора (Conversation Timeout) — максимальное время разговора (параметр опциональный, если не задан — используется значение, заданное на уровне домена (по умолчанию 1 час)).

Постобработка (Post processing) — открывает в блоке Play дополнительную ветку для действий в IVR сценария после завершения диалога.

Звонок из под абонента А (Call from subscriber A) — если значение установлено в True, то вызовы совершаются из под интерфейса абонента А, если значение установлено в False, то вызов будет совершен из под интерфейса IVR. Этот параметр может использоваться для построения сложных схем маршрутизации по интерфейсу.

Блок имеет 2 выхода, первый — если абонент занят или не отвечает (выход «Busy/No answer»), второй — произошла какая-либо ошибка (выход «error»).

Numbers

Блок, необходимый для выбора логики при прохождении вызова в соответствии с номером вызывающего абонента.

Описание (Description) — краткое описание работы блока.

- Список номеров (Numbers) — список абонентов с приоритетом. В поле Номер (Number) нужно указать номер вызывающего абонента.

Блок имеет 2 выхода, первый — при совпадении номера вызывающего абонента с заданным шаблоном (выход «yes»), второй — при несовпадении (выход «no»).
Особенности: Блок не меняет состояния вызова.

Digitmap

Блок, необходимый для выбора логики при прохождении вызова в соответствии с номером вызываемого абонента. Номер вызываемого абонента проверяется на этапе входа в блок digitmap.

- Описание (Description) — краткое описание работы блока.

- Переменная (Variable) — переменная для проверки.

- Список масок набора (Digitmap) — таблица со списком масок набора. В поле Маска (Mask) нужно указать шаблон номера вызываемого абонента.

- Модификатор — как модифицировать номер в случае удовлетворения критерия отбора.
Правила модификации:

  • ‘.’ и ‘-’ — удаление цифры;
  • ‘X’, ‘x’ — цифра/знак на данной позиции остается неизменной (обязательная);
  • ‘?’ — цифра/знак на данной позиции остается неизменной (необязательная);
  • ‘+’ — добавление последующих цифр/знаков;
  • ‘!’ — окончание разбора, все дальнейшие цифры номера отрезаются;
  • ‘$’ — окончание разбора, все дальнейшие цифры номера не изменяются;
  • ‘0-9’, ‘D’, ‘#’ и ‘*’ (без знака +) — замещение цифры на данной позиции.

Блок имеет 2 выхода, первый — при совпадении номера вызываемого абонента с заданным шаблоном (выход «yes»), второй — при несовпадении (выход «no»).
Особенности: Блок не меняет состояния вызова.

Goto

Блок, необходимый для перевода вызова на другой произвольный блок сценария. 

Описание (Description) — краткое описание работы блока.

Максимальное число срабатываний (Max hops) — выбор количества циклов прохождения звонка через данный блок для защиты от зацикливания вызова.
Для выбора блока, на который будет совершен переход, нажмите кнопку "Выбрать блок для перехода" ("Select block for redirect") и укажите блок на схеме. 
Особенности: Блок не меняет состояния вызова.

Rec

Включение режима записи.

Описание (Description) — краткое описание работы блока.

Caller info

Модификация отображаемого имени вызывающего абонента.

Описание (Description) — краткое описание работы блока.

Список абонентов (Caller info) — список абонентов, для которых выполняется модификация имени: 

  • Маска номера (Mask number) — маска номера. 
  • Имя абонента (Display name) — отображаемое имя абонента.

Fax

Передача факса на электронную почту.

Описание (Description) — краткое описание работы блока.

Список адресов (Emails) — список адресов электронной почты, на которую будет отправлен факс. Можно использовать переменную %CALLER_EMAIL%

Тема сообщения (Subject) — тема электронного письма. В теме письма допускается использование тегов:

  • %SData% — "Дата и время приема";

  • %SPName% — "Имя отправляющей стороны";
  • %SPNumber% — "Номер отправляющей стороны";
  • %RPName% — "Имя принимающей стороны";
  • %RPNumber% — "Номер принимающей стороны".

Сообщение (Body) — текст сообщения.

Имя отправителя (Sender name) — имя отправителя электронной почты.

Имя получателя (Receiver name) — имя получателя электронной почты.

Пауза (Pause) — длительность паузы, (0-15) секунд.

Блок имеет 2 выхода, первый — при отправке успешного факса на почту (выход «yes»), второй — при неуспешной отправке (выход «no»).

Queue

Распределение входящих вызовов по указанным номерам.

Описание (Description) — краткое описание работы блока.

Имя очереди (Queue name) — имя очереди.

Описание очереди (Queue description) — краткое описание очереди.

Агенты (Agents) — список номеров агентов для обработки очереди(выбор из справочника или произвольный номер).

Длина очереди (Queue lenght) — максимальное количество абонентов, которые могут находиться в очереди [0-9999].

Время ожидания (Wait timeout) — максимальное время ожидания в очереди, с [0-3600].

Режим распределения (Distribution mode) — режим распределения вызовов из очереди по агентам:

  • Случайный выбор (Random)
  • Серийный (Serial)
  • Нарастающий (Progressive)
  • Циклический  (Cyclic)
  • Массовый обзвон (Multicall)

Фоновая музыка (Fone music) — звуковой файл, который будет проигрываться при ожидании абонента в очереди.

- Оповещение в очереди (Queuing) — сообщение абоненту при постановке его в очередь.

Прогноз времени ожидания (Forecast timeout) — сообщение для информирования абонента о прогнозируемом времени ожидания.

Queue CC

Распределение входящих вызовов в выбранную очередь.

Описание (Description) — краткое описание работы блока;

Действие трансфера (Transfer scenario) — действие трансфера (дать отбой, уведомить и дать отбой, переадресовать, вернуть в очередь):

  • Дать отбой — если абонент, на которого совершают несопровождаемый трансвер, не ответит или даст отбой, то на агента пойдет callback. В случае неответа на callback — абонент будет отбит.
  • Уведомить и дать отбой — если абонент, на которого совершают несопровождаемый трансвер, не ответит или даст отбой, то на агента пойдет callback. В случае неответа на callback — абоненту проиграется уведомление и будет дан отбой.
  • Переадресовать — если абонент, на которого совершают несопровождаемый трансвер, не ответит или даст отбой, то на агента пойдет callback. В случае неответа на callback — абонент будет переадресован на заданный номер.
  • Вернуть в очередь — если абонент, на которого совершают несопровождаемый трансвер, не ответит или даст отбой, то на агента пойдет callback. В случае неответа на callback — абонент будет возвращен в очередь.

Имя очереди (Queue name) А- имя очереди;

Режим уведомления о позиции (Position notification mode) — режим уведомления о позиции (абсолютная позиция, позиция относительно времени добавления, позиция относительного приоритета);

Прогноз времени ожидания (Time prediction) — режим прогнозирования времени ожидания (прямой, оптимистичный, монотонный, сглаженный):

  • Прямой (direct) — новый прогноз делается каждую минуту, при этом количество оставшихся минут сообщается честно. Если например, в прошлый раз абоненту было озвучено оставшееся время 5 минут, а в этот раз очередь посчитала, что осталось 7 минут (например в очередь встал более приоритетный вызов), то абоненту будет честно озвучено оставшееся время 7 минут.
  • Оптимистичный (optimistic) — новый прогноз делается каждую минуту, при этом количество оставшихся минут сообщается честно, только если предсказываемое время сокращается, либо остаётся неизменным. Если же предсказываемое время увеличилось, например, с 5 до 7 минут, то абоненту будет сообщен предыдущий прогноз, то есть 5 минут, как в данном примере.
  • Монотонный (monotonic) — новый прогноз делается каждую минуту, при этом первое предсказание делается честно, а далее количество оставшихся минут монотонно убывает на единицу пока не достигнет 1. Далее абоненту всегда озвучивается прогноз в одну минуту.
  • Сглаженный (smooth) — аналогично предыдущему режиму первый прогноз времени ожидания делается честно, а далее количество оставшихся минут монотонно убывает на единицу пока не достигнет 1. Однако IVR сценарий пытается компенсировать скачки предсказываемого времени, сужая, либо растягивая интервалы предсказания. Например первый раз абоненту было озвучено оставшееся время ожидания 5 минут. Через минуту предсказываемое время ожидания оказалось 6 минут (например из-за принятого на обработку вне очереди приоритетного разговора), но, согласно алгоритму время должно убывать монотонно, поэтому абоненту озвучивается 4 минуты. Чтобы компенсировать скачек времени сценарий вновь сообщит оставшееся время не через минуту, а пропорционально разнице между 6 и 4 минутами, то есть через 6/4 = 1,5 минуты. Обратные скачки также компенсируются, но уже в сторону сужения интервала прогноза, но не чаще чем раз в 30 секунд. В нашем примере через полторы минуты будет озвучено 3 минуты и интервал ожидания будет вновь скорректирован. Таким образом данный режим повторяет режим monotonic, при этом стараясь, чтобы озвучиваемое время убывало плавно, и не приходилось потом многократно озвучивать единицу, или наоборот, чтобы ответ не происходил намного раньше, чем предсказывалось абоненту.

Сценарии нотификаций (Notificaton scenario) — позволяет нам указать в каком порядке проигрывать и проигрывать ли приветствие, позицию в очереди,предсказываемое время ожидания. Доступны параметры:

  • Однократное приветствие;
  • Оповещение;
  • Позиция;
  • Время ожидания;

- Приветствие (Fone music) — звуковой файл, который будет проигрываться при ожидании абонента в очереди;

Фоновая музыка (Fone music) — звуковой файл, который будет проигрываться при ожидании абонента в очереди;

- Оповещение в очереди (Queuing) — сообщение абоненту при постановке его в очередь;

Прогноз времени ожидания (Forecast timeout) — сообщение для информирования абонента о прогнозируемом времени ожидания;

 - Уведомление об ответе (Answer notification) — сообщение после ответа оператора(нотификация идет абоненту и оператору);

Перезвонить, если абонент не дождался (Callback on failure) — режима работы сервиса очереди Callback. Если абонент не дождался ответа оператора, то вызов отмечается специальным признаком и размещается в очереди в режиме Callback.

Перезвонить при сработавшем ограничении (Callback on overload) — режима работы сервиса очереди Callback. Позволяет добавлять в очередь в режиме callback вызов, который не проходит ни по одному из граничных условий (max_predicted_time или queue_length);

- Идет соединение с клиентом (Notify callback message) — сообщение оператору при обратном вызове;

- Проигрывать КПВ оператору (Play ringback to operator) — при обратном вызове оператору проигрывается КПВ;

Next

Продолжение выполнения в следующем IVR скрипте.

Описание (Description) — краткое описание работы блока;

IVR script (IVR script) — внешний IVR скрипт для дальнейшего исполнения.

Set

Описание переменных IVR скрипта.

Описание (Description) — краткое описание работы блока;

Переменные (Variables) — список переменных. Доступен для использования в скрипте и вложенных скриптах:

  • CGPN — номер вызывающего абонента;
  • CDPN — номер вызываемого абонента;
  • PRIORITY — приоритет вызова;
  • SKILLS — навыки требуемые для обработки вызова в очереди;

Доступные для чтения переменные:
YEAR, MONTH, DAY, HOUR, MINUTE, SECOND — дата и время выполнения скрипта;
IVR_LAST_COLLECT — набранные символы для предыдущего блока IVR;
DOMAIN — имя домена;

Для получения значения переменной нужно указать имя переменной заключенное в символы.
Также, можно не указывать значение для переменной. Это не будет являться ошибкой.
Например: /%CGPN%/prompt/alarm_prompt.wav эквивалентно /1234/prompt/alarm_prompt.wav

VoiceMail

Блок для отправления голосового сообщения.

Описание (Description) — краткое описание работы блока;

Номер владельца (Owner number) — телефонный номер для отправки голосового сообщения;

Сообщения для проигрывания перед началом записи (Play message before begin recording) — список медиаресурсов для проигрывания перед записью голосовой почты:
Тип (Type) — тип проигрываемого звукового файла: файл (file) — звуковой файл, загруженный на устройство; тон (tone) — выбор проигрываемого системного звука (цифра DTMF, dialtone, busy, ringback).
Имя (Name) — название звукового файла или системного звука;

Сообщения для проигрывания после окончания записи (Play message after recording) — список медиаресурсов для проигрывания после записи голосовой почты:
Тип (Type) — тип проигрываемого звукового файла: файл (file) — звуковой файл, загруженный на устройство; тон (tone) — выбор проигрываемого системного звука (цифра DTMF, dialtone, busy, ringback).
Имя (Name) — название звукового файла или системного звука;

Кнопка остановки (Stop digit) — кнопка остановки записи голосового сообщения;

Список адресов (Emails) — список адресов для отправки голосовой почты;

Имя отправителя (Email from) — отправитель сообщения. Доступные макросы: DATE, TIME, CALLING, DISPLAYNAME;

Тема сообщения (Email subject) — тема сообщения. Доступные макросы: DATE, TIME, CALLING, DISPLAYNAME;

Тело сообщения (Email body) — тело сообщения. Доступные макросы: DATE, TIME, CALLING, DISPLAYNAME.

Condition

Блок условия. 

Данный блок предназначен для проверки булевых условий, составленных из переменных и строк. Важно отметить, что все операции выполняются над строками. В блоке можно задать до 10 условий. Каждому условию задается соответствующая ветка выхода (от 0 до 10) из блока в другой блок. В блоке Condition переход осуществляется по ветке первого истинного условия (если истинных условий несколько, выбирается первое). В случае, если в блоке Condition ни одно из условий не оказалось истинным, то выполнится переход по ветке False.

Описание (Description) — краткое описание работы блока;

Условие (Condition) — блок предназначен для проверки булева условия, составленного из переменных, констант. Для формирования условий существуют следующие операторы (подробное описание находится в разделе IVR редактор (IVR editor)).

Request to RADIUS/HTTP

Блок для интеграции с внешним сервером.

Нстройки RADIUS запроса:

- RADIUS сервера (RADIUS servers) — поле для добавления сконфигурированных в системе RADIUS серверов;

  • Имя (Name) — идентификатор RADIUS сервера (нужен только для того, чтобы отличить этот RADIUS сервер среди прочих в данном списке);
  • Хост (Host) — имя хоста или IP адрес расположения RADIUS сервера;
  • Порт (Port) — порт, на котором располагается RADIUS сервер;
  • Секретный ключ (Secret key) — поле secret для RADIUS сервера;
  • Повторы (Retry) — количество попыток запросов на данный RADIUS сервер, прежде чем перейти к следующему RADIUS серверу по списку;
  • Ожидание ответа (Retry-timeout) — время через которое будет произведена повторная отправка RADIUS запроса;
  • Пауза по неответу (Idle-timeout) — максимальное время ожидание ответа RADIUS сервера на запросы. После его истечения, повторные запросы перестанут отправляться;
  • Версия протокола IP — типа используемого протокола.

- Метод (Method) — метод посылки запроса на RADIUS сервер, используются следующие методы:

  • Access;
  • Accounting start;
  • Accounting stop;
  • Accounting update;

- Атрибуты запроса (Request attributes)- список RADIUS атрибутов, которые будут отправлены в запросе;

  • Вендор (Vendor) — положительное число, либо слово global в случае, если атрибут не является vendor-specific;
  • Атрибут (Attribute) — положительное число, идентификатор атрибута;
  • Значение (Value) — значение атрибута;

- Атрибуты ответа (Response attributes) — список RADIUS атрибутов, которые будут получены в ответе на запрос с указанием, в какие переменные IVR скрипта необходимо мапить определенные RADIUS атрибуты;

  • Вендор (Vendor)   — положительное число, либо слово global в случае, если атрибут не является vendor-specific;
  • Атрибут (Attribut) — положительное число, идентификатор атрибута;
  • Переменная (Varible) — переменная, в которую стоит записывать полученное значение атрибута;

- Регулярное выражение (Regular expression) — является ли переменная регулярным выражением.

Настройки HTTP запроса:

- URL — полный URL запроса на http сервер. При необходимости в URL можно использовать переменные текущего IVR сценария.

Пример:  http://infoUserServer.co/shirts?style=%CDPN%

- Метод (Method) — метод HTTP запроса (HEAD, GET, PUT, POST, TRACE, OPTION, DELETE);

- Время запроса (Request timeout) — время попытки запроса на HTTP сервер в миллисекундах;

- Тип в теле запроса (Content type) — тип данных, находящихся в теле запроса;

- Тело запроса (Body) — тело запроса (строка с возможным наличием макро-переменных);

- Заголовки (Headers) — заголовок HTTP запроса.

  • Ключ (Key) — Ключ http заголовка;
  • Значение (Value) — Строка с возможным значние макропеременных;

- Тип в теле ответа (Response type) — Тип данных, находящихся в теле ответа;

- Максимальный размер ответа (Мax bytes) — Максимальный размер ответа;

- Кодировка в ответе (Responce codec) — Кодировки, поддерживаемые в ответе;

- Коды (Codes) — Коды.

Raiting

Блок для оценки качества обслуживания операторов Call-центра:

Описание (Description) — краткое описание работы блока;

- Сообщения/сигналы для проигрывания (Play tone) — звуковые файлы, которые будут проигрываться перед тем как абонент выставит оценку;

- Время ожидания выбора абонента (Time of wait) — время, которое выделяется для того, чтобы абонент поставил оценку оператору Call-центра;

- Диапазон оценки (Rating interval) — диапазон в рамках которого выставляется оценка.

Таблица 2 — Описание блоков IVR для скриптов для исходящих вызовов

ОбозначениеНазваниеОписание

Outgoing call

Стартовый блок для исходящих сценариев.

Описание (Description) — краткое описание работы блока.

Добавить (Add action)Пустой блок, предназначенный для добавления блока.

PlayOut

Блок для проигрывания одного или нескольких звуковых файлов после ответа. 

Описание (Description) — краткое описание работы блока.

Сообщения для проигрывания (Play message) — выбор одного или нескольких голосовых сообщений для проигрывания после ответа. Файл можно выбрать из списков доступных через MSR медиаменеджер. Нужно указать направление файла (кому будет проигрываться после ответа: всем, вызывающему абоненту, вызываемому абоненту), количество циклов проигрывания (1-5 раз). Сообщения проигрываются по очереди, начиная с первого.

Connect

Блок для установления соединения с абонентом. 

Описание (Description) — краткое описание работы блока.

Установление соединения (Making a connection)- выбор направления вызова: на вызывающего(origination)абонента; на вызываемого (termination) абонента; на абонента с определенным номером. 

Номер (Number) — номер абонента. Список доступных переменных:

  • %CGPN% — номер вызывающего абонента;
  • %CDPN% — номер вызываемого абонента;
  • %EXTENSION% — цифры донабора.

Приветствие (Greeting) — звуковой файл, который будет проигрываться в начале установления соединения. Файл можно выбрать из списков доступных через MSR медиаменеджер. Можно не устанавливать, тогда ничего не будет проигрываться. 

Фоновая музыка (Fone music) — звуковой файл, который будет проигрываться при ожидании установления соединения. Файл можно выбрать из списков доступных через MSR медиаменеджер. Можно не устанавливать, тогда ничего не будет проигрываться. 

- Тип доступа (Access type) — определяет тип доступа для соединения с абонентом.

- Таймер ожидания (Wait timeout) — задает таймер ожидания ответа абонента.

- Таймер окончания беседы (Conversation timeout) — задает таймер окончания беседы.

Goto

Блок, необходимый для перевода вызова на другой произвольный блок сценария. 

Описание (Description) — краткое описание работы блока.

Максимальное число срабатываний (Max hops) — выбор количества циклов прохождения звонка через данный блок для защиты от зацикливания вызова.

Для выбора блока, на который будет совершен переход, нажмите кнопку "Выбрать блок для перехода" ("Select block for redirect") и укажите блок на схеме. 
Особенности: Блок не меняет состояния вызова.

Talk

Блок ожидания завершения разговора. 

Описание (Description) — краткое описание работы блока.

- Приветствие (Greeting) — установка оповещения при начале разговора. Можно не устанавливать, тогда ничего не будет проигрываться.

Request to RADIUS/HTTP

Блок для интеграции с внешним сервером.

- Тип (Request type) — Выбор типа запроса к серверу (http или radius);

Настройки RADIUS запроса:

- RADIUS сервера (RADIUS servers) — поле для добавления сконфигурированных в системе RADIUS серверов;

  • Имя (Name) — идентификатор RADIUS сервера (нужен только для того, чтобы отличить этот RADIUS сервер среди прочих в данном списке);
  • Хост (Host) — имя хоста или IP адрес расположения RADIUS сервера;
  • Порт (Port) — порт, на котором располагается RADIUS сервер;
  • Секретный ключ (Secret key) — поле secret для RADIUS сервера;
  • Повторы (Retry) — количество попыток запросов на данный RADIUS сервер, прежде чем перейти к следующему RADIUS серверу по списку;
  • Ожидание ответа (Retry-timeout) — время одной попытки запроса на данный RADIUS сервер (ms);
  • Пауза по неответу (Idle-timeout) — время, в течении которого не будут посылаться запросы на данный RADIUS сервер если он не ответил на retry-count запросов в рамках одной сессии (ms);
  • Версия протокола IP — типа используемого протокола.

Метод (Method) — метод посылки запроса на RADIUS сервер, используются следующие методы:

  • Access;
  • Accounting start;
  • Accounting stop;
  • Accounting update;

- Атрибуты запроса (Request attributes)- список RADIUS атрибутов, которые будут отправлены в запросе.;

  • Вендор (Vendor) — положительное число, либо слово global в случае, если атрибут не является vendor-specific;
  • Атрибут (Attribute) — положительное число, идентификатор атрибута;
  • Значение (Value) — значение атрибута;

- Атрибуты ответа (Response attributes) — список RADIUS атрибутов, которые будут получены в ответе на запрос с указанием, в какие переменные IVR скрипта необходимо мапить определенные RADIUS атрибуты;

  • Вендор (Vendor)   — положительное число, либо слово global в случае, если атрибут не является vendor-specific;
  • Атрибут (Attribut) — положительное число, идентификатор атрибута;
  • Переменная (Varible) — переменная, в которую стоит записывать полученное значение атрибута;

- Регулярное выражение (Regular expression) — является ли переменная регулярным выражение.

Выходы — доступно несколько типов ответов для RADIUS: 

Access -Accept — Разрешить доступ;

Access - Reject — Запретить доступ;

Access -Challenge — Запрос дополнительной информации;

Access - Response — Ответ;

- RADIUS сервера (RADIUS servers) — поле для добавления сконфигурированных в системе RADIUS серверов.

Настройки HTTP зпроса:

- URL — полный URL запроса на http сервер.

- Метод (Method) — метод HTTP запроса (HEAD, GET, PUT, POST, TRACE, OPTION, DELETE);

- Время запроса (Request timeout) — время попытки запроса на HTTP сервер в миллисекундах;

- Тип в теле запроса (Content type) — тип данных, находящихся в теле запроса;

- Тело запроса (Body) — тело запроса (строка с возможным наличием макро-переменных);

- Заголовки (Headers) — заголовок HTTP запроса.

  • Ключ (Key) — Ключ http заголовка;
  • Значение (Value) — Строка с возможным значние макропеременных;

- Тип в теле ответа (Response type) — Тип данных, находящихся в теле ответа;

- Максимальный размер ответа (Мax bytes) — Максимальный размер ответа;

- Кодировка в ответе (Responce codec) — Кодировки, поддерживаемые в ответе;

- Коды (Codes) — Коды.

Next

Продолжение выполнения в следующем IVR скрипте.

Описание (Description) — краткое описание работы блока;

IVR script (IVR script) — внешний IVR скрипт для дальнейшего исполнения.

Воспроизведение звуков в IVR скрипте:

В блоках Play, Info и Ivr существует возможность проигрывания звуков. На данный момент поддержано 4 источника звуков:

  • Добавить файл (Add file) — источником служит аудио файл, хранящийся в медиа ресурсах системы.
  • Добавить тон (Add tone) — медиа сервер сгенерирует звуковой тон согласно заданным параметрам:
    1. Частота 1 Гц (Frequency 1, Hz) — частота первого тона.
    2. Частота 2 Гц (Frequency 2, Hz) — частота второго тона.
    3. Вкл. мс (On, msec) — время проигрывания тона.
    4. Выкл. мс (Off, msec) — время проигрывания тишины.
    5. Бесконечное проигрывание (Endless playback) — тон будет проигрываться до тех пор, пока абонент, который его слушает, не будет отключен.
    6. Длительность тона (Duration, sec) — общее время проигрывания тона.
    7. Dial/Busy/RingBack — предопределенные тоны. 
  • Синтез речи (Add speech) — источником служит звук, сгенерированный сервисом Text to Speech. На данный момент поддерживается генерация голоса только через Yandex TTS API. После оформления доступа к API на стороне Yandex, требуется сконфигурировать сервис ecss-restfs, указав OAuth-token и FolderId. После этого генерация голоса станет доступна:
    1. Текст (Text) — текст для генерации голоса;
    2. OAuth-token — токен для доступа к Yandex TTS API.
      Если данный параметр был определен на уровне конфигурации ecss-restfs — здесь ничего выставлять не требуется. Данный параметр нужно заполнить в том случае, если необходимо указать особые данные Yandex TTS API только для этого IVR сценария.
    3. FolderId- id для доступа к Yandex TTS API.
      Если данный параметр был определен на уровне конфигурации ecss-restfs — здесь ничего выставлять не требуется. Данный параметр нужно заполнить в том случае, если необходимо указать особые данные Yandex API только для этого IVR сценария.
    4. Язык (Language) — язык на котором будет генерироваться речь.
      Если текст был указан на русском языке — следует указать в этом поле русский язык.
      Если текст был указан на другом языке — следует указать в этом поле язык ввода текста.
    5. Спикер (Speaker) — тип голоса, которым будет генерироваться речь.
    6. Эмоция (Emotion) — тип эмоционального окраса для голоса. 
    7. Скорость (Speed) — скорость воспроизведения генерируемой речи.
  • Добавить переменную (Add varible) — система сгенерирует звук согласно заданной переменной. Для этого источника не требуется дополнительных сервисов:
    1. Формат (Format) — формат, согласно которому будет сгенерирован звук:
      1. Дата (Date) — формат даты.
      2. Цифры (Digits) — числовой формат.
      3. Номер (Number) — формат номеров.
      4. Время (Time) — формат времени.

Описание IVR-скриптов для входящих вызовов  

Создание базовой очереди call-центра в IVR-редакторе

Для того, чтобы создать базовую очередь call-центра, необходимо выполнить следующие действия:

  1. Создать скрипт для обработки входящего вызова в IVR-редакторе;
  2. Добавить в скрипт блок Очередь (Queue), можно ввести описания блока и очереди (IVR редактор (IVR editor));
  3. Сконфигурировать блок Очередь (Queue). Необходимо добавить в очередь операторов (это могут быть любые телефонные номера или выбранные из справочника);
  4. Указать ограничения очереди и выбрать стратегию распределения;
  5. Через приложение MSR медиаменеджер выбрать звуковые файлы фоновой музыки, оповещения и прогноза времени ожидания.

Пример:

Использование IVR-скриптов для исходящих вызовов

Цель исходящего скрипта — обслуживать обратный звонок. Например, вызов из формы обратной связи с сайта/личного кабинета и пр.

Этапы организации услуги обратного вызова:

  1. Создание исходящего ivr-скрипта.
    Исходящие IVR-скрипты описывают логику работы callback вызова. Существует два базовых варианта использования исходящих ivr скриптов:

    1.1 Соединение двух абонентов.

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

    При этом в первом блоке connect необходимо соединиться с вызывающим абонентом (оператором), а во втором с вызываемым абонентом (клиентом). Исходящий ivr-скрипт также позволяет производить информирование обеих сторон (как раздельно так и одновременно) посредством блока playout. Для того, чтобы ivr-сценарий не завершился после соединения абонентов используется блок talk, который ожидает окончания разговора.

    1.2 Соединение абонента и входящего ivr-скрипта.

    В случае необходимости соединения клиента с входящим ivr-скриптом можно воспользоваться следующим сценарием:

    В данном случае в блоке connect необходимо соединиться с вызываемым абонентом (клиентом) и после того как он снимет трубку его соединят с входящим ivr-скриптом.

    Если исходящий ivr-скрипт соединил двух абонентов, то дальнейшее соединение с входящим ivr-скриптом запрещено.
  2. Клиенту, который предоставляет услугу Обратный вызов своим абонентам, необходимо создать виджет сервиса Сustom Сallback используя команды Hc_custom_cb — Управление виджетом сервиса "custom callback".

    Виджет представляет собой карточку, которая содержит следующие данные:

    • номер — номер оператора;
    • имя — имя виджета;
    • скрипт — название ivr-скрипта; 
      Ivr-скрипт может содержать вызовы как на Оператора, так и на Абонента.
      В ivr-скрипте можно настраивать проигрываемую информацию Оператору и Абоненту.

      Пример:

      1. Вызвать оператора Клиента;

      2. Проиграть информацию о том, что был заказан Callback;

      3. Играть оператору Клиента фоновую музыку;

      4. Сделать вызов на Абонента;

      5. При ответе Абонента: проиграть информацию Абоненту о том, что сработал Callback;

      6. При ответе Абонента: проиграть информацию Абоненту о том, что он будет соединен с оператором.

    • описание — данное поле должно отображать информацию о назначении данного виджета.

    При создании виджета генерируется идентификатор виджета (widget_id). Данный widget_id устанавливается Клиентом на свой сайт, где будет заполняться web-форма на заявку Обратного вызова.

  3. Абоненту необходимо заполнить заявку на Обратный вызов в web-форме, предоставленной Клиентом, где Абонент должен указать:

    • номер — номер, на который будет произведен обратный вызов со стороны Оператора;
    • время — в указанное время будет произведен обратный вызов со стороны Оператора;
    • количество попыток — количество повторных обратных вызовов в случае не успешного звонка (опциональный параметр, по умолчанию равен 0);
    • время между попытками — время между повторными обратными вызовами. Опциональный параметр, по умолчанию равен 900000 мсек (15 минут).
  4. Обработчик заявки на Обратный вызов вычисляет разницу в мс между текущим моментом времени и моментом времени, когда должен будет активироваться Сallback.

    Затем обработчик через HTTP-запрос оправляет на систему ECSS-10 следующие данные:

    • SUBSCRIBER_NUMBER — номер Абонента;
    • TIME — вычисленная разница по времени;
    • ATTEMPTS — количество попыток;
    • TIMEOUT — время между попытками;
    • WIDGET_ID — идентификатор widget.

    Обработчик должен знать куда отправлять http-запрос:

    • HOST — хост Платформы;
    • PORT — порт Платформы;
    • DOMAIN — домен на котором сгенерирован widget.

    HTTP-запрос: 

    GET http://HOST:PORT/DOMAIN/service/custom_cb/WIDGET_ID?number=SUBSCRIBER_NUMBER&time=TIME&attempts=ATTEMPTS&timeout=TIMEOUT HTTP/1.1

    Пример HTTP-запроса: 

    GET http://localhost:8086/test.domain/service/custom_cb/054b4a0a684aa67c?number=102&time=1&attempts=1&timeout=10000 HTTP/1.1

    Пример HTTP-запроса через curl: 

    curl -G -d "number=102&time=1&attempts=1&timeout=10000" http://localhost:8086/d.local/service/custom_cb/054b4a0a684aa67c --verbose

    или: 

    curl -G http://localhost:8086/d.local/service/custom_cb/054b4a0a684aa67c?number=102\&time=1\&attempts=1\&timeout=10000 --verbose
  5. Система ECSS-10 получив HTTP-запрос, обрабатывает его по следующей схеме:

    • Включается таймер на Обратный вызов — промежуток времени, через который необходимо выполнить Сallback;
    • По истечении времени на таймере выполняется Обратный вызов по IVR-сценарию исходящего вызова указанному в виджете;
    • В случае не успешного соединения (со стороны Оператора или Абонента телефонный номер не отвечает, поступил сигнал занято и т.п.):
      • Если не использованы все попытки на повторное выполнение Обратного вызова, то включается таймер на повторный Сallback (используется попытка).
      • По истечении времени на таймере выполняется Обратный вызов по IVR-сценарию исходящего вызова указанному в виджете;
      • Если использованы все попытки, то Обратный вызов помечается как неудавшийся.

Логические операторы

!, not - логическое НЕ;
&&, and - логическое И;
||, or - логическое ИЛИ.

Операторы сравнения

< - меньше;
<= - меньше или равно;
= - равно;
> - больше;
>= - больше или равно;
<> - не равно.

Так как сравнение выполняется над строками, то сравнение выполняется посимвольно.

Примеры сравнения строк из цифр равной длины:

"101" < "102" = true
"101" =< "102" = true
"101" > "102" = false
"101" >= "102" = false

Примеры сравнения строк из цифр не равной длины:

"101" < "1102" = true
"101" =< "1102" = true
"101" > "1102" = false
"101" >= "1102" = false

Примеры сравнения строк из цифр и букв равной длины:

"A01" < "102" =  false
"A01" =< "102" =  false
"A01" > "102" = true
"A01" >= "102" = true
"A01" < "102" = false, так как строки сравниваются посимвольно, а именно код символа А в таблице ASCI больше кода символа 1.

Оператор вхождения

in - оператор вхождения переменной в список(например %%CGPN%% in (710, 711, 712)).