Обработчик сценария — это исполняющий экземпляр: сервер берёт сохранённый сценарий и начинает выполнять его объекты один за другим. Понимание того, что и когда порождает обработчик, объясняет большую часть поведения сценариев — от того, откуда берутся значения переменных, до того, почему один и тот же сценарий в двух звонках ведёт себя независимо.
Как выполняется сценарий
Сервер поочерёдно выполняет команды и преобразования, заданные объектами. Все обработанные объекты выстраиваются в одну последовательность. Какой объект окажется следующим, определяет результат выполнения предыдущего. Объект, выполняемый в текущий момент, называют активным.
Сценарий работает в контексте одного потока исполнения — параллельных ветвей внутри него нет. Разветвление в редакторе означает выбор одного из путей, а не одновременное выполнение нескольких.
Что запускает обработчик
Список поводов различается по типам сценариев.
Сценарий IVR
- поступление входящего звонка;
- начало обработки звонка по задаче автоматического оповещения;
- звонок на внутренний номер, за которым назначен сценарий IVR;
- передача управления из одного сценария в другой;
- входящий звонок на задачу автоматической обработки;
- переключение оператором абонента на номер, за которым назначен сценарий IVR;
- переадресация на внешние номера с детальным указанием направлений;
- гибкая маршрутизация («Вход в АТС») при снятии трубки на любом внутреннем телефоне и при переключениях;
- обработка вызовов, поступивших в момент ожидания завершения всех коммутаций при перезапуске сервера.
Диалоговый сценарий
- начало обработки звонка по задаче приёма звонков оператором;
- начало обработки звонка по задаче исходящего оповещения оператором;
- запрос оператору на дозвон в задаче с резервированием и запросом.
Служебный сценарий
- по таймеру и по расписанию;
- после разрыва связи с внешней линией — в сценарий передаётся собранный контент;
- в ходе отработки контрольных событий и при активации контрольного события;
- вложенный запуск из других служебных сценариев;
- асинхронный параллельный запуск из любых сценариев — с передачей кода сессии и значений всех переменных;
- исходящие текстовые задачи, включая ICQ, электронную почту и служебные действия;
- набор номеров в менеджерах задач и автодозвона;
- преобразования строк.
Доступ к данным задачи
Когда сценарий выполняется по задаче call-центра, ему открыт доступ к информации о самой задаче и к строке текущего абонента в прикреплённой к задаче таблице абонентов — на чтение, на запись или на то и другое.
Тем же путём данные уходят и наружу: сценарий IVR или диалога может выгрузить их во внешнюю базу с указанием параметров задачи, по которой шёл звонок, или запустить любое внешнее приложение — включая PHP- и ASP.NET-скрипты.
Сессия и код цепочки
У каждого запущенного обработчика есть номер сессии. Служебный сценарий перенимает его от того, кто его запустил: другого сценария, задачи или линии. Служебные сценарии, стартующие вне канальных цепочек, генерируют собственный уникальный код.
Если служебный сценарий сам набирает номер компонентом «Дозвон», код сессии сценария устанавливается в качестве кода цепочки активированного канала — но не более одного раза и только если код сессии не был передан сценарию извне. В остальных случаях код цепочки генерируется заново. Так система избегает совпадения кодов у разных по смыслу звонков.
От номера сессии напрямую зависит поведение сессионных переменных — подробности в статье «Переменные».