3. Сценарий за десять минут
Эта глава — сквозной проход. Мы соберём с нуля маленький, но настоящий
сценарий: вызов принимается, абонент слышит приветствие, нажимает 1
или 2 и попадает в отдел продаж или в поддержку. Не нажал ничего —
разговор заканчивается.
Ничего из сделанного здесь не понадобится запоминать: каждое действие разбирается подробно в своей главе. Смысл прохода в том, чтобы увидеть, как части редактора работают вместе.
Шаг 1. Новый сценарий
Новый сценарий заводится в списке сценариев платформы. Редактор открывает его уже не пустым: в шаблоне два компонента.
Старт — точка входа. С неё начинается любой вызов, удалить её нельзя, и она в сценарии одна. Ответ — снятие трубки: до него абонент слышит гудки, после — то, что вы ему проиграете.
Справа открыта вкладка Компоненты — палитра. Внизу палитры счётчик: пока в сценарии два компонента, ноль переменных и ноль вложений.
Шаг 2. Приветствие
В палитре компоненты разложены по группам — Управление, Работа с данными, Обмен сообщениями, Телефония. Нам нужно Воспроизведение из группы Телефония.
Выбранный компонент подсвечивается рамкой, а курсор над картой становится «заряженным»: следующий клик по полю поставит компонент в это место.
|
Если групп много и глазами искать долго, наберите название в поле Поиск компонента над списком — палитра оставит подходящие. |
Ставим Воспроизведение правее Ответа и сразу даём ему имя: панель переключилась на вкладку Свойства, и верхнее поле в ней — имя.
Заголовок панели над полем имени говорит, что это Воспроизведение
под номером #3. Номер присвоен при создании и больше не изменится:
по нему компонент отличается от такого же соседнего, даже если имена
совпадут.
Шаг 3. Остальные компоненты
Тем же способом ставим ещё четыре компонента:
| Что ставим | Группа | Имя |
|---|---|---|
Меню |
Управление |
|
Перевод |
Телефония |
|
Перевод |
Телефония |
|
Отбой |
Телефония |
|
Теперь свяжем их. Связь протягивается мышью с зажатой Ctrl: нажали на компоненте-источнике, довели курсор до цели, отпустили.
Нужны три связи: Ответ → Приветствие, Приветствие → Выбор отдела и Выбор отдела → Не дождались.
Последняя связь получилась красной и подписана «Прочее». Так и задумано: Ctrl тянет основную ветку компонента, а у Меню основная ветка — это «куда идти, если ни один пункт не подошёл». Ветки по нажатым кнопкам задаются иначе, к ним мы вернёмся на шаге 5.
|
Ctrl отвечает только за связи и ни за что больше. У модификаторов в редакторе строго разведённые роли: Alt — привязка к сетке, Shift — состав выделения. Они не смешиваются, и это позволяет не помнить, «что будет, если нажать оба». |
Шаг 4. Куда попадёт нажатая кнопка
Чтобы Меню могло разветвить вызов, нажатая кнопка должна где-то храниться. Место для значения — переменная.
Заводить её отдельно не обязательно: переменная создаётся прямо там, где
впервые понадобилась. Выделяем Приветствие, находим в его свойствах
строку Буфер для DTMF, набираем в ней dtmf — и редактор предлагает
создать такую переменную.
Тип ставим Строка: DTMF бывает не только цифрой, но и звёздочкой с решёткой, а в число они не влезут. Скоуп оставляем Локальная — переменная нужна только внутри этого вызова.
Добавить создаёт переменную, но не подставляет её в поле: новую строку надо ещё увидеть в перечне. Клик по имени возвращает переменную туда, откуда окно открыли.
Осталось сказать, сколько кнопок ждать. В строке Количество символов
ставим 1.
Обратите внимание на строку Очистить буфер DTMF. Её не было минуту назад: она появилась, как только у буфера возникло значение. Так устроены почти все компоненты — поле показывается, только когда в нём есть смысл. Если знакомое поле «пропало», причина почти всегда в этом; подробно — в главе про инспектор.
|
Поле Файл мы оставляем пустым: выбор звукового файла — тема отдельной главы, и на устройство сценария он не влияет. Работать такой сценарий будет, просто молча. |
Шаг 5. Ветки меню
Теперь Меню. У него два ключевых свойства: Аргумент — что сравнивать, и Значения — таблица «нажали столько — идём туда».
Выделяем Выбор отдела и открываем Аргумент кнопкой … в его строке.
Переключатель Константа / Переменная говорит, откуда брать значение.
Нам нужна Переменная — та самая dtmf, в которую Приветствие положит
нажатую кнопку.
|
Вкладки Выражение и Шаблон наверху окна — два других способа задать то же поле: посчитать значение формулой или собрать из текста с подстановками. Для меню они не нужны, но помнить об их существовании стоит: так устроено любое поле-аргумент в редакторе. |
Дальше — таблица. Открываем Значения и заполняем две строки: 1 ведёт
в Продажи, 2 — в Поддержку.
Пустая строка внизу появляется сама: заполнили предпоследнюю — снизу добавилась следующая. Ручкой слева строки переставляются, крестиком справа удаляются.
Сохранить в окне закрывает таблицу — и на карте появляются две новые
стрелки, подписанные 1 и 2.
Карта и свойства — два взгляда на одно и то же. Мы задали ветки таблицей, и стрелки нарисовались сами; можно было наоборот — протянуть стрелки на карте, и строки появились бы в таблице.
Шаг 6. Сохранение
Всё это время сценарий менялся только у вас: точка рядом с кнопками отмены в шапке как раз и означает «есть несохранённые правки». Кнопка Сохранить отправляет сценарий на сервер.
Сообщение появляется в углу и исчезает само. Точка из шапки пропала — несохранённых правок больше нет.
Под галкой рядом с Сохранить есть ещё несколько действий:
- Сохранить как
-
создаёт копию под новым именем, оставляя оригинал нетронутым. Полезно перед крупной переделкой.
- История
-
список прежних версий сценария; любые две можно сравнить, а любую — восстановить.
- Отменить изменения
-
возвращает сценарий к тому, что лежит на сервере.
- Удалить
-
убирает сценарий с сервера. Спрашивает подтверждение и необратимо.
|
Если между открытием сценария и сохранением его успел изменить кто-то ещё, редактор об этом скажет и спросит, перезаписывать ли. Слияния правок нет: перезапись означает, что чужие изменения потеряются. Прежде чем соглашаться, стоит посмотреть в истории, что именно поменял коллега. |
Что мы сделали
За шесть шагов мы прошли почти по всему редактору:
-
поставили компоненты из палитры и дали им имена;
-
связали их, различив основную ветку и ветки по значению;
-
завели переменную там, где она понадобилась;
-
задали аргумент, увидев четыре способа задать одно поле;
-
заполнили табличное свойство и убедились, что карта и панель — одно и то же;
-
сохранили сценарий на сервер.
Дальше руководство разбирает каждое из этих действий подробно. Следующая глава — про то, как не потеряться, когда компонентов станет не шесть, а четыреста.