Урок 22 Служебные сценарии — различия между версиями
(не показано 13 промежуточных версии этого же участника) | |||
Строка 2: | Строка 2: | ||
| [[Уроки | Наверх]] | | [[Уроки | Наверх]] | ||
| [[Урок 21 Web-запросы | К предыдущему уроку]] | | [[Урок 21 Web-запросы | К предыдущему уроку]] | ||
− | | | + | | [[Урок 23 Периодический запуск служебных сценариев | К следующему уроку]] |
|- | |- | ||
|} | |} | ||
− | |||
__TOC__ | __TOC__ | ||
+ | |||
===Введение=== | ===Введение=== | ||
Строка 55: | Строка 55: | ||
В отличии от IVR-сценария, который нужно назначать на внутренний номер и звонить на него, служебный сценарий намного проще запустить. Именно поэтому с его помощью можно легко проверить работу тех или иных функций системы. Например, отправку электронного письма или выполнение некоторого web-запроса. '''Пользуйтесь этим преимуществом.''' | В отличии от IVR-сценария, который нужно назначать на внутренний номер и звонить на него, служебный сценарий намного проще запустить. Именно поэтому с его помощью можно легко проверить работу тех или иных функций системы. Например, отправку электронного письма или выполнение некоторого web-запроса. '''Пользуйтесь этим преимуществом.''' | ||
+ | |||
+ | '''Скачать сценарий:''' [http://wiki.oktell.ru/images/b/b5/%D0%A3%D1%80%D0%BE%D0%BA_22.oscr Урок 22.oscr] | ||
Строка 91: | Строка 93: | ||
*'''Среда''' - '''Внешняя сеть''' указывается для совершения внешних вызовов, '''Внутренний номерной план''' для вызова на внутренние номера. В примере, '''Внешняя сеть'''. | *'''Среда''' - '''Внешняя сеть''' указывается для совершения внешних вызовов, '''Внутренний номерной план''' для вызова на внутренние номера. В примере, '''Внешняя сеть'''. | ||
*'''Обслуживание''' - IVR. Варианты "'''Управляющий модуль'''" и "'''Управляющий модуль с ожиданием в сценарии'''" применяются в особых случаях. | *'''Обслуживание''' - IVR. Варианты "'''Управляющий модуль'''" и "'''Управляющий модуль с ожиданием в сценарии'''" применяются в особых случаях. | ||
+ | *'''Тип набора''' - Позволяет набирать номер с использованием команды направления. В примере, без преобразования. | ||
+ | *'''Тип вызова''' - Возможны 3 варианта исполнения звонка: обычный, экстренный и интерком. | ||
+ | :Чаще всего используется обычный набор. При этом телефон абонента начинает звонить, пока не поднимется трубка или не истечет время ожидания. | ||
+ | :Экстренный вызов при отсутствии свободных линий из списка разрывает одну из них и набирает номер. | ||
+ | :Интерком - вариант, когда телефон автоматически начинает разговор на громкой связи. Доступно только на внутренних линиях и зависит от типа используемого устройства. | ||
+ | В примере выбрано '''Обычный'''. | ||
*'''Направления''' - выберите линии, по которым будет совершаться звонок. В примере, линии Sipnet. | *'''Направления''' - выберите линии, по которым будет совершаться звонок. В примере, линии Sipnet. | ||
− | |||
− | |||
− | + | [[Файл:Урок 22 -011.png |center]] | |
− | === Коммутация двух абонентов | + | *'''Идентификатор выбранной линии''' - позволяет сохранить в переменную ID линии, по которой произошла коммутация. В примере, не выбрана. |
+ | *'''Сценарий IVR''' - выберите обслуживающий сценарий. В примере, '''Урок 22 (IVR)''' | ||
+ | *'''Параметр запуска IVR''' - позволяет передать начальный параметр в выбранный IVR-сценарий. В примере, не указано. | ||
+ | *'''Время ожидания ответа''' - указывается количество секунд для ожидания ответа. По истечению этого времени, сценарий перейдет по ветке "'''Не отвечает'''". В примере, '''40''' секунд. | ||
+ | *'''Код отказа SIP в переменную''' - позволяет сохранить в переменную ответ от SIP-провайдера при неудачном соединении. | ||
+ | |||
+ | Уведомления, находящиеся по неудачным веткам компонента, позволяют администратору отладить сценарий. Каждое уведомление выводит на экран причину неудачного соединения. | ||
+ | |||
+ | Для проверки сценария в компоненте "'''Дозвон'''" укажите свой внутренний номер. После создания сценариев, сохраните его на сервер. | ||
+ | |||
+ | Запустив данный сценарий, система дозвонится до указанного абонента, а затем проиграет ему файл приветствия. | ||
+ | |||
+ | '''Скачать сценарий:''' | ||
+ | * [http://wiki.oktell.ru/images/6/61/%D0%A3%D1%80%D0%BE%D0%BA_22_%28%D0%94%D0%BE%D0%B7%D0%B2%D0%BE%D0%BD%29.oscr Урок 22 (Дозвон).oscr] | ||
+ | * [http://wiki.oktell.ru/images/6/63/%D0%A3%D1%80%D0%BE%D0%BA_22_%28IVR%29.oscr Урок 22 (IVR).oscr] | ||
+ | |||
+ | |||
+ | === Коммутация двух абонентов и анализ отчета=== | ||
Как можно догадаться, соединить двух абонентов можно, пользуясь компонентом "'''Дозвон'''" и переключением в IVR-сценарии. Однако, служебный сценарий позволяет соединять двух абонентов напрямую без использования лишних IVR-сценариев. Для этого используется компонент "'''Коммутатор'''". | Как можно догадаться, соединить двух абонентов можно, пользуясь компонентом "'''Дозвон'''" и переключением в IVR-сценарии. Однако, служебный сценарий позволяет соединять двух абонентов напрямую без использования лишних IVR-сценариев. Для этого используется компонент "'''Коммутатор'''". | ||
Строка 178: | Строка 201: | ||
<u>Компонент "'''success'''".</u> Определяет статус коммутации, тег <success> (0- неудача, 1- успех). | <u>Компонент "'''success'''".</u> Определяет статус коммутации, тег <success> (0- неудача, 1- успех). | ||
*'''Документ''' - переменная '''Отчет''' | *'''Документ''' - переменная '''Отчет''' | ||
− | *'''Алгоритм''' - | + | *'''Алгоритм''' - Язык OQuery для HTML |
*'''Поисковый запрос''' - строка ''success'' | *'''Поисковый запрос''' - строка ''success'' | ||
*'''Функция''' - Содержимое | *'''Функция''' - Содержимое | ||
Строка 198: | Строка 221: | ||
<u>Компонент "'''errorid'''".</u> В случае неудачного звонка определяется номер причины, по которой абоненты не соединились друг с другом. | <u>Компонент "'''errorid'''".</u> В случае неудачного звонка определяется номер причины, по которой абоненты не соединились друг с другом. | ||
*'''Документ''' - переменная '''Отчет''' | *'''Документ''' - переменная '''Отчет''' | ||
− | *'''Алгоритм''' - | + | *'''Алгоритм''' - Язык OQuery для HTML |
*'''Поисковый запрос''' - строка ''errorid'' | *'''Поисковый запрос''' - строка ''errorid'' | ||
*'''Функция''' - Содержимое | *'''Функция''' - Содержимое | ||
Строка 206: | Строка 229: | ||
<u>Компонент "'''errorstr'''".</u> Аналогично определятся строка с расшифровкой причины. | <u>Компонент "'''errorstr'''".</u> Аналогично определятся строка с расшифровкой причины. | ||
*'''Документ''' - переменная '''Отчет''' | *'''Документ''' - переменная '''Отчет''' | ||
− | *'''Алгоритм''' - | + | *'''Алгоритм''' - Язык OQuery для HTML |
*'''Поисковый запрос''' - строка ''errorstr'' | *'''Поисковый запрос''' - строка ''errorstr'' | ||
*'''Функция''' - Содержимое | *'''Функция''' - Содержимое | ||
Строка 222: | Строка 245: | ||
− | В результате работы при коммутациях у администратора будут появляться | + | В результате работы при коммутациях у администратора будут появляться уведомления с текстом отчета и с результатом звонка. Получаемую информацию можно использовать как для отладки, так и для контроля выполняющихся действий. Как видно, результат успешной коммутации можно дополнительно анализировать и находить оттуда такие поля как, путь к файлу записи, номер линии или ID цепочки коммутаций. |
+ | |||
+ | |||
+ | [[Файл:Урок 22 -010.png|center]] | ||
+ | |||
+ | |||
+ | Пример анализа результата приведен в данном уроке неслучайно. Служебные сценарии часто имеют дело с JSON или XML-структурами, получаемыми от Web-сервисов. В '''Oktell''' также есть некоторые моменты, в которых данные передаются в виде XML-структур. Такие структуры требуется расшифровать и записывать отдельные данные в таблицы БД для дальнейшего построения отчетов. Исходя из этого, важно понимать логику анализа получаемых сообщений и производить необходимые действия. | ||
+ | |||
+ | '''Скачать сценарий:''': [http://wiki.oktell.ru/images/6/65/%D0%A3%D1%80%D0%BE%D0%BA_22_%28%D0%9A%D0%BE%D0%BC%D0%BC%D1%83%D1%82%D0%B0%D1%82%D0%BE%D1%80%29.oscr Урок 22 (Коммутатор).oscr] | ||
− | + | '''Поздравляем!''' Вы научились создавать и запускать служебные сценарии. Можете переходить к следующему уроку. | |
+ | '''Техническая документация:''' [[Служебные сценарии]] и [[Компоненты служебных сценариев]] | ||
− | |||
+ | == Вопросы и задания == | ||
+ | * Как с помощью служебного сценария проверить электронную почту и вывести на экран текст письма? | ||
+ | * Реализуйте служебный сценарий, который дозвонившись до абонента предложит ему соединиться с оператором. Например так: "''Для соединения с оператором, нажмите 1''" и после нажатия данной цифры, соединится с секретарем. | ||
+ | * Модифицируйте ваш сценарий дозвона на предмет обработки неудачных соединений. Реализуйте следующую ситуацию - если телефон абонента занят, то дозвон должен заново запуститься через 5 минут, если недоступен, то через 10 минут. ''Подсказка: используйте паузу''. | ||
+ | * Реализуйте служебный сценарий для сбора конференции. Воспользуйтесь статьей [[Сценарий сбор конференции с телефона]] | ||
+ | * Реализуйте служебный сценарий для вывода актуального курса доллара на экран. | ||
Строка 236: | Строка 273: | ||
| [[Уроки | Наверх]] | | [[Уроки | Наверх]] | ||
| [[Урок 21 Web-запросы | К предыдущему уроку]] | | [[Урок 21 Web-запросы | К предыдущему уроку]] | ||
− | | | + | | [[Урок 23 Периодический запуск служебных сценариев | К следующему уроку]] |
|- | |- | ||
|} | |} |
Текущая версия на 13:08, 12 августа 2014
Наверх | К предыдущему уроку | К следующему уроку |
Содержание
Введение
В предыдущих уроках мы подробно разбирали работу IVR сценариев, компоненты и принципы обработки звонков. IVR сценарий существуют только на активной линии и как только абонент кладет трубку, сценарий сразу прекращает свое выполнение. Порой такое поведение не способно решить некоторые поставленные задачи. К примеру, необходимо отправлять электронное письмо после завершения разговора. Но ведь когда абоненты положат трубку, IVR сценарии завершатся и отправки письма на почту не произойдет. Что делать?
В Oktell существуют служебные сценарии. Сценарии такого типа работают асинхронно без привязки к каким-либо линиям, а значит могут выполняться в произвольные моменты времени. Исходя из этого, такие сценарии могут применяться для выполнения различных процедур на сервере:
- отправка электронного письма, SMS, IM-сообщения клиенту в заданное время
- периодический запуск бизнес-процессов в CRM-системе
- автоматический сбор конференции для совещания
- сбор данных с внешней системы, расчет и контроль показателей
Служебный сценарий отличается от IVR сценария набором компонентов. Так, отсутствуют компоненты работы с коммутацией и передачи факса, появляются несколько новых компонентов. После создания сценарий можно легко запустить из модуля "Сценарии".
Создание сценария
Задача: создать служебный сценарий вывода текущего времени на экран.
Для создания перейдите в раздел "Администрирование" - модуль "Сценарии". Нажмите кнопку "Создать". Выберите служебный тип сценария и введите название. В примере, "Урок 22"
Сценарий вывода времени на экран приведен на рисунке:
Любой сценарий всегда начинается с компонента "Старт". В компоненте вы можете указать переменную, в которую сохранится параметр запуска. Компонент может присутствовать в сценарии только один раз.
Компонент "Вывод времени" выводит уведомление с текущим временем адресатам. В компоненте указаны следующие свойства:
- Адресат - укажите получателя сообщения
- Текст - функция "Текущие дата и время"
- Способ оповещения - Всплывающее окно
Служебный сценарий должен всегда заканчиваться компонентом "Стоп".
После создания сценария перейдите на вкладку "Сохранение" и нажмите "На сервер".
Для проверки сценария, выберите его в списке и нажмите кнопку "Запустить". Появится уведомление с текущим временем.
В отличии от IVR-сценария, который нужно назначать на внутренний номер и звонить на него, служебный сценарий намного проще запустить. Именно поэтому с его помощью можно легко проверить работу тех или иных функций системы. Например, отправку электронного письма или выполнение некоторого web-запроса. Пользуйтесь этим преимуществом.
Скачать сценарий: Урок 22.oscr
Оповещение абонентов с помощью служебного сценария
Служебный сценарий может быть инициатором звонка. Это может быть полезно, например, для оповещения сотрудников или автоматического сбора конференции. Часто это применяется для услуги "заказать обратный звонок с сайта". После заполнения формы на сайте, Oktell генерирует вызов сотрудника, а затем автоматически соединяет его с целевым абонентом или проговаривает ему необходимую информацию.
Рассмотрим процесс создания такого сценария.
Задача: С помощью служебного сценария дозвониться до клиента компании, а затем проиграть ему IVR-сценарий с приветствием.
Поставленную задачу начинаем с создания IVR-сценария "Урок 22 (IVR)". Сценарий должен проигрывать звуковой файл приветствия, а затем разрывать соединение. Вид сценария показан на рисунке:
Компонент "Приветствие" воспроизводит звуковой файл абоненту.
- Режим - Файл полностью
- Файл - выберите mp3-файл приветствия.
Сохраните данный сценарий на сервер.
Переходим к созданию служебного сценария "Урок 22 (Дозвон)". Служебный сценарий предназначен для дозвона до абонента, а затем для передачи управления созданному IVR-сценарию. На рисунке показан вид сценария:
Основной компонент "Дозвон" совершает вызов абоненту по определенным линиям. Если абонент поднимает трубку, то компонент запускает IVR-сценарий на линии абонента, при этом сам переходит к дальнейшим компонентам. Устанавливаются следующие основные свойства:
- Номер/команда - введите телефон для вызова. В примере, 89045642434
ВНИМАНИЕ: Все внешние номера при наборе используют "Служебный сценарий набора внешних/быстрых номеров". Сценарий будет рассматриваться в последующих уроках.
- Среда - Внешняя сеть указывается для совершения внешних вызовов, Внутренний номерной план для вызова на внутренние номера. В примере, Внешняя сеть.
- Обслуживание - IVR. Варианты "Управляющий модуль" и "Управляющий модуль с ожиданием в сценарии" применяются в особых случаях.
- Тип набора - Позволяет набирать номер с использованием команды направления. В примере, без преобразования.
- Тип вызова - Возможны 3 варианта исполнения звонка: обычный, экстренный и интерком.
- Чаще всего используется обычный набор. При этом телефон абонента начинает звонить, пока не поднимется трубка или не истечет время ожидания.
- Экстренный вызов при отсутствии свободных линий из списка разрывает одну из них и набирает номер.
- Интерком - вариант, когда телефон автоматически начинает разговор на громкой связи. Доступно только на внутренних линиях и зависит от типа используемого устройства.
В примере выбрано Обычный.
- Направления - выберите линии, по которым будет совершаться звонок. В примере, линии Sipnet.
- Идентификатор выбранной линии - позволяет сохранить в переменную ID линии, по которой произошла коммутация. В примере, не выбрана.
- Сценарий IVR - выберите обслуживающий сценарий. В примере, Урок 22 (IVR)
- Параметр запуска IVR - позволяет передать начальный параметр в выбранный IVR-сценарий. В примере, не указано.
- Время ожидания ответа - указывается количество секунд для ожидания ответа. По истечению этого времени, сценарий перейдет по ветке "Не отвечает". В примере, 40 секунд.
- Код отказа SIP в переменную - позволяет сохранить в переменную ответ от SIP-провайдера при неудачном соединении.
Уведомления, находящиеся по неудачным веткам компонента, позволяют администратору отладить сценарий. Каждое уведомление выводит на экран причину неудачного соединения.
Для проверки сценария в компоненте "Дозвон" укажите свой внутренний номер. После создания сценариев, сохраните его на сервер.
Запустив данный сценарий, система дозвонится до указанного абонента, а затем проиграет ему файл приветствия.
Скачать сценарий:
Коммутация двух абонентов и анализ отчета
Как можно догадаться, соединить двух абонентов можно, пользуясь компонентом "Дозвон" и переключением в IVR-сценарии. Однако, служебный сценарий позволяет соединять двух абонентов напрямую без использования лишних IVR-сценариев. Для этого используется компонент "Коммутатор".
Задача: Скоммутировать двух абонентов с помощью служебного сценария. Оповестить администратора о результате операции.
Создадим служебный сценарий "Урок 22 (Коммутатор)". Вид сценария показан ниже:
Компонент "Коммутатор" осуществляет вызов двух абонентов, затем объединяет их в коммутацию. Рассмотрим простейшую настройку компонента:
- Детальная настройка - подразумевает настройку коммутатора с помощью некоторой XML-структуры, в которой указываются все параметры для осуществления коммутации. В примере, установлено Нет и будет разобрано ниже.
- Абоненты А - указывается первый абонент для соединения. Вы можете указать внутренний или внешний номер, имя пользователя системы или линию. При указании нескольких абонентов, они указываются через запятую, а соединение происходит с первым ответившим. В примере, внутренний номер 601.
- Абоненты Б - аналогично свойству "Абоненты А". В примере, внешний номер 89091231231
- Последовательность - порядок вызова абонентов - последовательно или одновременно. В примере используется "Сначала А, потом Б"
- CallerID для A - вы можете указать собственный CallerID, который будет отображаться при звонке. Однако, будьте внимательны - подставлять CallerID при внешнем звонке можно только, если это допускает ваш провайдер связи. Уточните этот момент. Так как Абонент А является внутренним номером, то в поле указано "Коммутатор".
- CallerID для Б - заполняется аналогично свойству "CallerID для A". В пример, не указан, так как Абонент Б является внешним номером.
- Запись - в компоненте вы можете дополнительно установить параметры записи разговора. В примере, записываются все разговоры.
- Ожидать отчета - при необходимости анализа результата коммутации или неудачи вы можете дополнительно указать в этом свойстве "Да, полный отчет" или "Да только результат", а затем указать переменную в которую он будет сохраняться. В примере, указано свойство "Да, полный отчет".
- Отчет в переменную - указана переменная Отчет (строковая).
Аналогичная настройка может быть осуществлена с помощью следующей XML-структуры. В этом случае свойство "Детальная настройка" должно быть установлена в положение "Да". Синим цветом выделены установленные ранее поля.
"<task> <taskid></taskid> <taskcode></taskcode> <sessionid></sessionid> <projectid></projectid> <mode>0</mode> <recordmode>1</recordmode> <svcownertext></svcownertext> <attachedcctask></attachedcctask> <attachedidinlist></attachedidinlist> <agroup> <a>601</a> <a></a> </agroup> <bgroup> <b>89091231231</b> <b></b> </bgroup> <a_callerid>Коммутатор</a_callerid> <a_callername></a_callername> <a_music></a_music> <a_queuepriority></a_queuepriority> <a_usequeue></a_usequeue> <a_timeoutsec></a_timeoutsec> <b_callerid></b_callerid> <b_callername></b_callername> <b_music></b_music> <b_queuepriority></b_queuepriority> <b_usequeue></b_usequeue> <b_timeoutsec></b_timeoutsec> </task>"
При запуске такого служебного сценария, вначале произойдет вызов до абонента А (номер 601), затем до абонента Б (внешний номер 89091231231).
Остальные компоненты отвечают за отладку и уведомление администратора об успешной или неуспешной коммутации. Рассмотрим краткое описание компонентов:
Компонент "Ошибка". Сообщает администратору об ошибке в настройке коммутатора.
- Текст - строка Ошибка коммутатора
- Цвет фона - красный (255, 0, 0) для большей наглядности
Компонент "Вывод отчета". Выводит на экран отчета о коммутации.
- Текст - выражение
'[Отчет]'+endline+ [Отчет]
Компонент "success". Определяет статус коммутации, тег <success> (0- неудача, 1- успех).
- Документ - переменная Отчет
- Алгоритм - Язык OQuery для HTML
- Поисковый запрос - строка success
- Функция - Содержимое
- Результат в переменную - переменная success (строковая)
Компонент "success=1?". Определяет успешен ли звонок.
- Аргумент 1 - переменная success
- Аргумент 2 - строка 1
- Тип сравнения - "="
Компонент "Успешно соединились". Уведомляет администратора об успешной коммутации абонентов.
- Текст - строка Успешно соединились
Компонент "errorid". В случае неудачного звонка определяется номер причины, по которой абоненты не соединились друг с другом.
- Документ - переменная Отчет
- Алгоритм - Язык OQuery для HTML
- Поисковый запрос - строка errorid
- Функция - Содержимое
- Результат в переменную - переменная errorid (строковая)
Компонент "errorstr". Аналогично определятся строка с расшифровкой причины.
- Документ - переменная Отчет
- Алгоритм - Язык OQuery для HTML
- Поисковый запрос - строка errorstr
- Функция - Содержимое
- Результат в переменную - переменная errorstr (строковая)
Компонент "Неуспешное соединение". Выводит администратору сообщение о неуспешном соединении абонентов.
- Текст - выражение
'Неудачное соединение'+endline+ '[errorid] '+[errorid]+endline+ '[errorstr] '+[errorstr]
В результате работы при коммутациях у администратора будут появляться уведомления с текстом отчета и с результатом звонка. Получаемую информацию можно использовать как для отладки, так и для контроля выполняющихся действий. Как видно, результат успешной коммутации можно дополнительно анализировать и находить оттуда такие поля как, путь к файлу записи, номер линии или ID цепочки коммутаций.
Пример анализа результата приведен в данном уроке неслучайно. Служебные сценарии часто имеют дело с JSON или XML-структурами, получаемыми от Web-сервисов. В Oktell также есть некоторые моменты, в которых данные передаются в виде XML-структур. Такие структуры требуется расшифровать и записывать отдельные данные в таблицы БД для дальнейшего построения отчетов. Исходя из этого, важно понимать логику анализа получаемых сообщений и производить необходимые действия.
Скачать сценарий:: Урок 22 (Коммутатор).oscr
Поздравляем! Вы научились создавать и запускать служебные сценарии. Можете переходить к следующему уроку.
Техническая документация: Служебные сценарии и Компоненты служебных сценариев
Вопросы и задания
- Как с помощью служебного сценария проверить электронную почту и вывести на экран текст письма?
- Реализуйте служебный сценарий, который дозвонившись до абонента предложит ему соединиться с оператором. Например так: "Для соединения с оператором, нажмите 1" и после нажатия данной цифры, соединится с секретарем.
- Модифицируйте ваш сценарий дозвона на предмет обработки неудачных соединений. Реализуйте следующую ситуацию - если телефон абонента занят, то дозвон должен заново запуститься через 5 минут, если недоступен, то через 10 минут. Подсказка: используйте паузу.
- Реализуйте служебный сценарий для сбора конференции. Воспользуйтесь статьей Сценарий сбор конференции с телефона
- Реализуйте служебный сценарий для вывода актуального курса доллара на экран.
Наверх | К предыдущему уроку | К следующему уроку |