Общая логика обработки сценариев Oktell Studio

В Oktell Studio реализовано два типа сценариев:

  • IVR сценарии - сценарии, участвующие в SIP диалогах и являющиеся одной из сторон разговора

  • SVC сценарии - сервисные сценарии, выполняющие определенные действия и запускаемые по расписанию или по событиям

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

Сценарий состоит из компонентов. Обработчик сценариев включает в себя алгоритмы реализации функциональности компонентов.

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

  1. загрузка сценария

  2. создание области данных для хранения объявленных переменных

  3. нахождение в сценарии компонента Старт с типом основной ветки

  4. сопоставление с компонентом алгоритма его работы

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

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

  7. обработка ответа компонента:

    1. продолжение работы компонента

    2. откладывание обработки очередного события

    3. завершение работы компонента. По завершению работы компонента возвращается

      1. идентификатор следующего компонента, тогда процесс повторяется с новым компонентом начиная с этапа его поиска в сценарии, расширяясь накопленным контекстом

      2. код следующего сценария (при необходимости запустить вложенный / асинхронный сценарий)

      3. ошибка, тогда сценарий завершается и, возможно, производится запуск ветки пост-обработки

      4. команда возврата к предыдущему сценарию, тогда восстанавливается контекст предыдущего сценария и позиция в нем

      5. команда остановки, тогда сценарий завершается, и, возможно, производится запуск ветки пост-обработки

Выполнение компонента может протекать синхронно и асинхронно.

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

Компонент при завершении работы на основании полученного результата выбирает для передачи управления ту или иную ветку перехода. Большинство компонентов разделяют успешные и неуспешные результаты работы, сопоставляя им различные ветки перехода. Если ветка перехода не задана, то переход осуществляется по основной ветке (переход по умолчанию). Если переход по умолчанию не задан, то происходит остановка выполнения сценария с ошибкой "Нет перехода" и возможный запуск пост-обработки.

Возможные варианты пост обработки определены в компоненте Старт. Выполнение ветки пост-обработки при завершении уже не предполагает переключения на другую ветку.

При запуске сценария на его вход могут передаваться начальные значения:

  • определенные в сценарии в рамках Web интерфейса Администрирования

  • передаваемые из родительского сценария дочернему (имеют приоритет над определенными через Web интерфейс)

В компоненте Старт всем объявленным переменным без установленных значений могут быть присвоены дефолтные нулевые значения. Это делается для того, чтобы не вызвать ошибок при работе с переменными без значений.

IVR сценарии

Сценарии голосовой обработки (IVR) используются как виртуальный SIP-телефон. По таблице маршрутизации IVR сценарий обслуживается как Код абонентских функций и может иметь множество номеров.

Каждый сценарий является стороной А или стороной В разговора.

IVR сценарий может быть запущен:

  • через таблицу маршрутизации. Выступает в качестве стороны В

  • через Дозвон до абонента. Выступает в качестве стороны А

  • переводом из другого IVR сценария. Обслуживание разговора передается от одного сценария к другому без использования SIP re-INVITE или других SIP взаимодействий

Служебные сценарии

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

  • Ручной запуск сценария из Редактор сценариев

  • Периодический запуск с помощью служебных задач

  • Асинхронный запуск из других сценариев

  • В качестве обработчика сообщений и запросов с внешних каналов

  • В качестве контекстного сценария параллельно каждому звонку