16. Меню и переводы

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

Меню: ветвление по значению

Меню сравнивает аргумент с набором значений и уводит вызов туда, где совпало (Компонент Меню). Классический случай — «нажмите 1 для продаж, 2 для поддержки», но сравнивать можно что угодно: код региона, ответ базы, номер абонента. Само нажатие Меню не собирает — это делает компонент до него.

Свойства компонента «Меню»
Figure 1. Свойства «Меню»
Аргумент

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

Значения

таблица «нажали столько — идём туда».

Переход, прочее

куда уйти, если ни одно значение не подошло.

Таблица значений

Диалог «Меню» с двумя ветками
Figure 2. Таблица веток меню

Левая колонка — с чем сравнивать, правая — куда идти. Левая ячейка тоже аргумент: сравнивать можно не только с константой.

Пустая строка внизу появляется сама. Ручка слева переставляет строки, крестик справа удаляет. Порядок важен: сравнение идёт сверху вниз, и первое совпадение выигрывает.

Ctrl и протяжка от Меню заполняет не строку таблицы, а Переход, прочее — основную ветку этого типа. Ветки по значениям задаются только таблицей.

Зато обратное верно: заполнив таблицу, вы увидите новые стрелки на карте с подписями-значениями. Карта и таблица — одно и то же.

Что будет, если удалить цель

Удалили компонент, на который вела ветка, — соответствующая ячейка перехода опустеет. Сама строка таблицы останется: значение вы задавали, и стирать его редактор не станет.

Строка с пустым переходом безобидна, но и бесполезна: совпадение произойдёт, а идти будет некуда. Такие строки стоит вычищать.

Переводы

Перевод отдаёт вызов на другой номер: оператору, в очередь, на внешний телефон.

Свойства компонента «Перевод»
Figure 3. Свойства «Перевода»
Номер

куда переводим. Аргумент — значит, номер можно и вычислить.

Код результата, Описание результата, SIP-код, Причина

куда положить, чем закончилась попытка. Всё это поля-переменные, и заполнять их не обязательно — но без них разобраться потом, почему перевод не удался, будет нечем.

Назначение остальных свойств — в справочнике: Компонент Перевод.

Три ветки вместо одной

У перевода нет «основного» исхода в привычном смысле: разговор либо состоялся, либо нет, и все интересные случаи — неудачные.

Переход, отказ

абонент на той стороне отклонил вызов или занят.

Переход, время

никто не ответил за отведённое время.

Переход, время подписки

истёк срок ожидания события.

Если перевод не удался, а соответствующая ветка не заполнена, вызов абонента просто оборвётся: идти дальше некуда.

Поэтому Переход, время и Переход, отказ стоит вести хотя бы на общее «извините, все заняты» — это дешевле, чем обрыв в трубке.

◀ 15. Выражения и шаблоны

17. Присвоения, параметры, списки ▶