3. Сценарий за десять минут

Эта глава — сквозной проход. Мы соберём с нуля маленький, но настоящий сценарий: вызов принимается, абонент слышит приветствие, нажимает 1 или 2 и попадает в отдел продаж или в поддержку. Не нажал ничего — разговор заканчивается.

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

Готовый сценарий на карте
Figure 1. Что получится в конце

Шаг 1. Новый сценарий

Новый сценарий заводится в списке сценариев платформы. Редактор открывает его уже не пустым: в шаблоне два компонента.

Пустой шаблон: Старт и Ответ
Figure 2. Новый сценарий из шаблона

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

Справа открыта вкладка Компоненты — палитра. Внизу палитры счётчик: пока в сценарии два компонента, ноль переменных и ноль вложений.

Шаг 2. Приветствие

В палитре компоненты разложены по группам — Управление, Работа с данными, Обмен сообщениями, Телефония. Нам нужно Воспроизведение из группы Телефония.

Палитра с выбранным «Воспроизведением»
Figure 3. Компонент выбран в палитре

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

Если групп много и глазами искать долго, наберите название в поле Поиск компонента над списком — палитра оставит подходящие.

Ставим Воспроизведение правее Ответа и сразу даём ему имя: панель переключилась на вкладку Свойства, и верхнее поле в ней — имя.

Новый компонент на карте
Figure 4. Компонент поставлен и назван

Заголовок панели над полем имени говорит, что это Воспроизведение под номером #3. Номер присвоен при создании и больше не изменится: по нему компонент отличается от такого же соседнего, даже если имена совпадут.

Шаг 3. Остальные компоненты

Тем же способом ставим ещё четыре компонента:

Что ставим Группа Имя

Меню

Управление

Выбор отдела

Перевод

Телефония

Продажи

Перевод

Телефония

Поддержка

Отбой

Телефония

Не дождались

Теперь свяжем их. Связь протягивается мышью с зажатой Ctrl: нажали на компоненте-источнике, довели курсор до цели, отпустили.

Нужны три связи: ОтветПриветствие, ПриветствиеВыбор отдела и Выбор отделаНе дождались.

Цепочка компонентов со связями
Figure 5. Компоненты расставлены и связаны

Последняя связь получилась красной и подписана «Прочее». Так и задумано: Ctrl тянет основную ветку компонента, а у Меню основная ветка — это «куда идти, если ни один пункт не подошёл». Ветки по нажатым кнопкам задаются иначе, к ним мы вернёмся на шаге 5.

Ctrl отвечает только за связи и ни за что больше. У модификаторов в редакторе строго разведённые роли: Alt — привязка к сетке, Shift — состав выделения. Они не смешиваются, и это позволяет не помнить, «что будет, если нажать оба».

Шаг 4. Куда попадёт нажатая кнопка

Чтобы Меню могло разветвить вызов, нажатая кнопка должна где-то храниться. Место для значения — переменная.

Заводить её отдельно не обязательно: переменная создаётся прямо там, где впервые понадобилась. Выделяем Приветствие, находим в его свойствах строку Буфер для DTMF, набираем в ней dtmf — и редактор предлагает создать такую переменную.

Окно «Переменные» с новой переменной dtmf
Figure 6. Окно переменных: имя уже подставлено

Тип ставим Строка: DTMF бывает не только цифрой, но и звёздочкой с решёткой, а в число они не влезут. Скоуп оставляем Локальная — переменная нужна только внутри этого вызова.

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

Осталось сказать, сколько кнопок ждать. В строке Количество символов ставим 1.

Свойства компонента «Приветствие»
Figure 7. Свойства «Приветствия»

Обратите внимание на строку Очистить буфер DTMF. Её не было минуту назад: она появилась, как только у буфера возникло значение. Так устроены почти все компоненты — поле показывается, только когда в нём есть смысл. Если знакомое поле «пропало», причина почти всегда в этом; подробно — в главе про инспектор.

Поле Файл мы оставляем пустым: выбор звукового файла — тема отдельной главы, и на устройство сценария он не влияет. Работать такой сценарий будет, просто молча.

Шаг 5. Ветки меню

Теперь Меню. У него два ключевых свойства: Аргумент — что сравнивать, и Значения — таблица «нажали столько — идём туда».

Выделяем Выбор отдела и открываем Аргумент кнопкой в его строке.

Окно «Аргумент» с выбранной переменной dtmf
Figure 8. Аргумент: значение переменной

Переключатель Константа / Переменная говорит, откуда брать значение. Нам нужна Переменная — та самая dtmf, в которую Приветствие положит нажатую кнопку.

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

Дальше — таблица. Открываем Значения и заполняем две строки: 1 ведёт в Продажи, 2 — в Поддержку.

Диалог «Меню»: две строки значений
Figure 9. Таблица веток меню

Пустая строка внизу появляется сама: заполнили предпоследнюю — снизу добавилась следующая. Ручкой слева строки переставляются, крестиком справа удаляются.

Сохранить в окне закрывает таблицу — и на карте появляются две новые стрелки, подписанные 1 и 2.

Готовый сценарий на карте
Figure 10. Сценарий собран

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

Шаг 6. Сохранение

Всё это время сценарий менялся только у вас: точка рядом с кнопками отмены в шапке как раз и означает «есть несохранённые правки». Кнопка Сохранить отправляет сценарий на сервер.

Уведомление о сохранении
Figure 11. Сценарий сохранён

Сообщение появляется в углу и исчезает само. Точка из шапки пропала — несохранённых правок больше нет.

Под галкой рядом с Сохранить есть ещё несколько действий:

Сохранить как

создаёт копию под новым именем, оставляя оригинал нетронутым. Полезно перед крупной переделкой.

История

список прежних версий сценария; любые две можно сравнить, а любую — восстановить.

Отменить изменения

возвращает сценарий к тому, что лежит на сервере.

Удалить

убирает сценарий с сервера. Спрашивает подтверждение и необратимо.

Если между открытием сценария и сохранением его успел изменить кто-то ещё, редактор об этом скажет и спросит, перезаписывать ли. Слияния правок нет: перезапись означает, что чужие изменения потеряются. Прежде чем соглашаться, стоит посмотреть в истории, что именно поменял коллега.

Что мы сделали

За шесть шагов мы прошли почти по всему редактору:

  • поставили компоненты из палитры и дали им имена;

  • связали их, различив основную ветку и ветки по значению;

  • завели переменную там, где она понадобилась;

  • задали аргумент, увидев четыре способа задать одно поле;

  • заполнили табличное свойство и убедились, что карта и панель — одно и то же;

  • сохранили сценарий на сервер.

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

◀ 2. Первый запуск

4. Навигация по карте ▶