Предыдущая статья курса: Принципы работы служебных сценариев
Общая информация

Все компоненты служебных сценариев разделены на три группы:
- Компоненты управления - базовые компоненты, реализующие логику работы сценария, взаимодействие с другими сценариями и работу с переменными
- Компоненты работы с данными - сложные компоненты, реализующие механизмы взаимодействия с другими модулями системы, а также внешними сервисами
- Компоненты обмена сообщениями - компоненты, реализующие работу с логами, уведомлениями, сообщениями между сценариями, а также голосовой почтой и заказами звонков.
В рамках данной статьи будут рассмотрены базовые компоненты управления, которые являются основной любого сценария. В следующей статье, будут рассмотрены компоненты работы с данными и обмена сообщениями.
Детальную техническую информацию обо всех компонентах сценариев можно найти на портале Vendor.
Общие параметры компонентов
У каждого компонента есть общий набор параметров - Заголовок, Переходы и Описание.
Заголовок (на скриншоте отмечен зеленым) отображается в визуальном редакторе сценария и используется для отображения смысла этого компонента, либо для уточнения его функции (например, если таких компонентов несколько).
Переходы это параметры компонента, определяющие, какой компонент будет выполняться следующим, в зависимости от результата исполнения текущего компонента. Фактически, установка "стрелочек" задаёт параметр Переход. У каждого компонента может быть несколько переходов, в зависимости от возможных исходов его исполнения (например, разные виды ошибок). Для быстрой установки различных переходов можно использовать горячие клавиши 1-9, протягивая стрелочки левой кнопкой мышки.
Описание используется для хранения развернутого пояснения к настройке компонента и его параметров. Визуально не отображается в редакторе, однако может быть полезным для других пользователей.
В дальнейшем, при разборе компонентов будут описаны только спецефичные для них параметры.
Сохранение результата работы компонента
У некоторых компонентов, которые подразумевают обработку входных данных, есть два параметра, которые отвечают за сохранение результата их работы:
Результат в переменную - в данном параметре задаётся переменная сценария, в которую будет сохранен результат выполнения компонента (например, результат парсинга на скриншоте)
Ошибка в переменную - в данном параметре задается переменная сценария, в которую будет сохранен текст ошибки в случае её возникновения. С помощью этой переменной, по "ветке" ошибка можно получить текст ошибки и записать её в лог, или отобразить пользователю.
Описание базовых компонентов
Старт

Компонент, с которого начинается выполнения сценария или его обособленной ветки.
Свойство | Описание |
---|---|
Тип старта
|
Тип старта сценария.
Возможные значения:
|
Параметр запуска
|
Только для Тип старта = Начало
Поле для указания переменной, в которую будет записано значение из первого параметра запуска |
Инициализировать переменные
|
Только для Тип старта = Начало
Переключатель установки всем переменным сценария значений по умолчанию соответствующего типа. |
Вариант перехода
|
Только для Тип старта = Пост-обработка
Причина заврешения основной ветки выполнения сценария, по возникновению которой в рамках пост-обработки будет выполнена цепочка компонентов, следующих за текущим компонентом СТАРТ. Возможные значения:
|
Время выполнения всего сценария
|
Только для Тип старта = Пост-обработка
Ограничение на выполнение сценария в рамках ветки пост-обработки, в миллисекундах. По истечении сценарий принудительно завершится. |
Стоп

Завершает выполнение ветки сценария корректным образом. Обеспечивает возврат управления из вложенного сценария в вышестоящий сценарий.
Свойство | Описание |
---|---|
Возврат управления
|
Разрешает или запрещает дальнейшую передачу управления предыдущему сценарию в стеке вложенных сценариев при завершении текущего, при условии, что он вложенный.
Возврат произойдет только в том случае, если значение поля – |
Результат
|
Аргумент, содержащий результат, возвращаемый сценарием назад по стеку вызовов. Это сохраняется в переменную родительского сценария, указанную в поле 'Результат в переменную' компонента 'Запуск сценария'.
Также заносит значение в переменную с именем "result", если она существует в сценарии. Эта переменная в ряде функций передает значение из сценария в вышестоящую логику. Например, сценарий внешней авторизации. |
Пауза

Осуществляет задержку сценария перед выполнением следующего компонента. В случае указания нулевого таймаута – компонент пропускается.
В некоторых случаях при работе с большими сценариями удобно использовать компонент «Пауза» в качестве пустышки. Для выравнивания визуального представления сценария, для удобства и быстроты смены свойств. Например, по веткам выхода из компонента «Меню», где каждое свойство перехода задается внутри специального окна путем выбора одного объекта из списка всех объектов сценария.
Свойство | Описание |
---|---|
Время, мс
|
Длительность паузы, в миллисекундах.
В случае отрицательных значений компонент работает в синхронном режиме. В случае |
Очистить события
|
Определяет поведение компонента с очередью необработанных событий.
Необработанные события накапливаются в очереди, если исполняемый во время поступления события компонент не призван их обрабатывать, и остаются в очереди до тех пор, пока очередной компонент не обработает их (или не завершится сценарий). Обрабатывать события могут только асинхронные компоненты, то есть проводящие асинхронные операции и ожидающие событий. К множеству рассматриваемых событий НЕ ОТНОСЯТСЯ события, обрабатываемые самой скрипт-машиной, например события межсценарного взаимодействия, подмены сценариев, завершения или подмены владельца и т.д. К накапливаемым событиям относятся:
Возможные значения:
Использование компонента с нулевым таймаутом и режимом очистки очереди событий может применяться в тех местах сценария, где с точки зрения логики важно сбросить накопленные хвосты. Например введенные ранее DTMF сигналы. |
Сохранить состояние сценария
|
Включение режима сохранения состояния сценария IVR для возможного дальнейшего восстановления разговора с продолжением обслуживания с сохраненной позиции.
Возможные значения:
Применяется совместно с режимом sip_restore_enabled. Имеет смысл только для IVR сценариев. Если состояние сценария не сохранялось, то при восстановлении разговора (в случае пропадания ноды IVR или падения сервера с нодой IVR) сценарий начнется с самого начала от момента маршрутизации сценария на фичакод. Состояние включает весь стек вложенных вызовов, значения всех локальных переменных, стартовые параметры, хранилище, код сценария, номер компонента, время начала, счетчики и т.д. Метаданные сценария не хранятся. Исполнение начнется непосредственно с компонента, следующего за текущим компонентом 'Пауза', исполняющим сохранение. Сценарий будет загружен из доменного центра, поэтому если он существенно изменился (сбились номера компонентов или отсутствует сохраненный номер компонента), то корректное продолжение выполнения будет невозможно. Состояние может быть объемным, операция сохранения состояния не должна применяться после каждого компонента в длинных интенсивных циклах без пауз. При завершении обработчика сценария сохраненное состояние автоматически удаляется из хранилища. Сеанс вызова при восстановлении разговора сохраняется вне зависимости от того, сохранялось ли состояние сценария IVR. Состояние сохраняется в объектное хранилище, управляемое микросервисом store. Если количество сохранений заведомо большое, и микросервис store нагружается, следует его размножать на сайте. Восстановленный экземпляр обработчика сценария утрачивает связь с временными файлами предыдущего обработчика, использованными им в макро-путях :TEMP и :LOCAL. Функция getscriptref() нового экземпляра имеет новое значение. Контекст может восстанавливаться произвольное количество раз. |
Сравнение

Сравнивает значения двух аргументов. Компонент осуществляет ветвление внутри сценария. В случае соответствия выбранной логической операции и значений аргументов переход осуществляется по ветке «Правда», в противном случае – по ветке «Ложь».
Свойство | Описание |
---|---|
Аргумент 1
|
Операнд 1 |
Аргумент 2
|
Операнд 2 |
Тип сравнения
|
Логическая операция между Операндами.
Возможные значения:
При сравнении значений разных типов осуществляется их предварительное преобразование к одному типу. |
Переход, правда
|
Компонент, которому передается управление в случае истинности операции. |
Переход, ложь
|
Компонент, которому передается управление в случае ложности операции. |
Меню

Сравнивает аргумент со списком значений. Компонент осуществляет ветвление внутри сценария. Может иметь неограниченное число веток перехода. Переход осуществляется по ветке значения, с которым совпало значение аргумента. Если совпадений не найдено, переход осуществляется по ветке «Прочее».
Свойство | Описание |
---|---|
Аргумент
|
Операнд, подлежащий сопоставлению с перечнем значений |
Значения
|
Набор вариантов значений для операнда и соответствующих им веток перехода. |
Переход, прочее
|
Компонент, которому передается управление в случае, если операнд не был сопоставлен ни с одним из перечисленных вариантов. |
Следующая статья курса: Компоненты работы с данными
Предыдущая статья курса: Принципы работы служебных сценариев