Перенос значений между сценариями разных типов. Глобальные переменные. Сессии сценариев.

Сценарий — это набор правил и свойств, в соответствии с которыми производится некоторая автоматизированная работа. Осуществлением ее занимается обработчик сценария. Один и тот же сценарий (как набор мета-данных) может использоваться одновременно в нескольких обработчиках, не связанных между собой.Очевидно, что обработкой сценария IVR и диалогов занимаются разные экземпляры обработчиков. В сценарии определены переменные для совместной работы компонентов и переноса информации от одного к другому. Однако время жизни переменных узко ограничено временем жизни обработчика — от начала обработки сценария и до конца.В Oktell существует понятие вложенного сценария (с возвратом управления или без). Такие сценарии выполняются в том же самом обработчике, а потому имеют общее хранилище переменных — переменные с одинаковыми типами и именами располагаются в одном и том же месте, что обеспечивает перенос значений из одного сценария в другой и обратно в ходе реализации в контексте одного обработчика (одной сессии).Для решения различных сложных и независимых задач существует возможность асинхронного запуска служебных сценариев. При этом активируется новый обработчик и новая сессия. В служебный сценарий (как впрочем и в другие) можно передать строковое значение, которое будет сохранено в компоненте "Старт" в переменную сценария. Однако для удобной передачи большего числа значений реализована схема передачи текущих значений в обработчик и начальная инициализация внутренних переменных служебного сценария. Так, все совпадающие по типам и именам переменные будут располагаться в другом хранилище (в другом экземпляре обработчика), но на этапе асинхронного запуска их значения будут совпадать, далее каждый сценарий будет использовать и изменять значения своих переменных независимо.Существует проблема, в соответствии с которой сессией сценария необходимо считать совокупность различных обработчиков сценариев. Так, поступающий вызов от абонента может сначала обрабатываться в связке вложенных сценариев IVR, после быть переключен на задачу, при этом сценарий IVR может доделывать ряд работ. По задаче запускается диалоговый сценарий обработки вызова оператором, а оператор после занесения некоторых значений может перевести абонента на обслуживание в другой сценарий IVR, с выходом из задачи, и входом в другую задачу и так далее. При этом значения, определяемые в сценариях различных типов необходимо передавать по цепочке. Для решения этого вопроса можно использовать временное хранилище в базе данных, передавая код объединяющей эти сценарии сессии. Оптимальным в контексте поставленной задачи является разделение сессий по коду цепочки коммутаций (подробнее в мануале). Однако работа с БД не всегда удобна из-за необходимости проведения однотипных достаточно емких действий по чтению и записи данных из сценария в сценарий.В случае обработки звонка в задаче можно также использовать переменные типа "Поле таблицы". Однако при выходе из задачи и входе в другую задачу абонент определяется в различных списках (прикрепленных к разным задачам), что дает решение лишь в некоторых частных случаях.Для удобства работы было введено понятие сессии сценариев. Каждый обработчик сценариев, имеющий собственное хранилище переменных, обладает кодом сессии. Код сессии сценариев IVR совпадает с кодом цепочки коммутаций, установленной для обрабатываемой сценарием линии, и определяется в момент старта сценария автоматически. Сценарий диалога привязан к конкретному абоненту задачи. Таким образом код сессии сценариев диалога совпадает с кодом цепочки коммутации обслуживаемой в задаче линии и определяется в момент старта сценария диалога.Служебные сценарии принимают код сессии стартующей их стороны, либо генерируют на старте, если запуск происходит по расписанию или контекстно-независимо. При этом служебный сценарий при наборе номера через компонент "Дозвон" передает свой код сессии в определенный для набора номера канал для организации цепочки с тем же кодом. Но это происходит не более одного раза, и только в случае, если служебный сценарий стартовал контекстно-независимо и сам сгенерировал код своей сессии. Остальные наборы будут иметь уникальный сгенерированный код.Для сессии определено еще одно место хранения значений переменных — хранилище сессии на сервере состояний. Таким образом все сценарии имеют доступ к этому хранилищу по коду своей сессии. Для работы с этим хранилищем введены "Глобальные переменные". Такие переменные отображаются синим цветом в форме выбора аргумента. Все сценарии сессии, как бы они ни работали — параллельно, последовательно или смешанным образом — обращаются для чтения и изменения значений в одну и ту же область. Таким образом значения переменных с одинаковыми именами и типами в различных обработчиках сценариев имеют постоянно одни и те же значения. Изменив его в одном сценарии, можно прочитать его в другом.Для создания глобальной переменной, зайдите в компонент присвоение сценария, добавьте переменную с типом размещения: Глобальная.

    сценарий IVR, неявное указание, из одного сценария в другой, обработка в задаче, Сессия сценариев, связь сценариев, передача параметров, перенос значений, Обработчик сценариев, Глобальные переменные, Глобальная переменная, диалоговый сценарий, вход в задачу, много параметров, хранилище переменных, Цепочка коммутаций

    Комментарии

    Ваш комментарий может стать первым к этой статье.

    Новое сообщение

    Прикрепить файлы

    Написать