Урок 22 Служебные сценарии — различия между версиями
(не показана одна промежуточная версия этого же участника) | |||
Строка 2: | Строка 2: | ||
| [[Уроки | Наверх]] | | [[Уроки | Наверх]] | ||
| [[Урок 21 Web-запросы | К предыдущему уроку]] | | [[Урок 21 Web-запросы | К предыдущему уроку]] | ||
− | | | + | | [[Урок 23 Периодический запуск служебных сценариев | К следующему уроку]] |
|- | |- | ||
|} | |} | ||
− | |||
__TOC__ | __TOC__ | ||
Строка 14: | Строка 13: | ||
В предыдущих уроках мы подробно разбирали работу IVR сценариев, компоненты и принципы обработки звонков. IVR сценарий существуют только на активной линии и как только абонент кладет трубку, сценарий сразу прекращает свое выполнение. Порой такое поведение не способно решить некоторые поставленные задачи. К примеру, необходимо отправлять электронное письмо после завершения разговора. Но ведь когда абоненты положат трубку, IVR сценарии завершатся и отправки письма на почту не произойдет. Что делать? | В предыдущих уроках мы подробно разбирали работу IVR сценариев, компоненты и принципы обработки звонков. IVR сценарий существуют только на активной линии и как только абонент кладет трубку, сценарий сразу прекращает свое выполнение. Порой такое поведение не способно решить некоторые поставленные задачи. К примеру, необходимо отправлять электронное письмо после завершения разговора. Но ведь когда абоненты положат трубку, IVR сценарии завершатся и отправки письма на почту не произойдет. Что делать? | ||
− | В Oktell существуют '''служебные сценарии'''. Сценарии такого типа работают асинхронно без привязки к каким-либо линиям, а значит могут выполняться в произвольные моменты времени. Исходя из этого, сценарии | + | В '''Oktell''' существуют '''служебные сценарии'''. Сценарии такого типа работают асинхронно без привязки к каким-либо линиям, а значит могут выполняться в произвольные моменты времени. Исходя из этого, такие сценарии могут применяться для выполнения различных процедур на сервере: |
*отправка электронного письма, SMS, IM-сообщения клиенту в заданное время | *отправка электронного письма, SMS, IM-сообщения клиенту в заданное время | ||
*периодический запуск бизнес-процессов в CRM-системе | *периодический запуск бизнес-процессов в CRM-системе | ||
Строка 26: | Строка 25: | ||
'''Задача:''' создать '''служебный сценарий''' вывода текущего времени на экран. | '''Задача:''' создать '''служебный сценарий''' вывода текущего времени на экран. | ||
− | Для создания перейдите в раздел "'''Администрирование'''" - модуль "'''Сценарии'''". Нажмите кнопку "Создать". Выберите служебный тип сценария и введите название. В примере, "Урок 22" | + | Для создания перейдите в раздел "'''Администрирование'''" - модуль "'''Сценарии'''". Нажмите кнопку "'''Создать'''". Выберите служебный тип сценария и введите название. В примере, "'''Урок 22'''" |
+ | |||
+ | |||
+ | [[Файл:Урок 22 -001.png | center | 600px]] | ||
Сценарий вывода времени на экран приведен на рисунке: | Сценарий вывода времени на экран приведен на рисунке: | ||
+ | |||
+ | |||
+ | [[Файл:Урок 22 -002.png | center ]] | ||
Строка 35: | Строка 40: | ||
Компонент "'''Вывод времени'''" выводит уведомление с текущим временем адресатам. В компоненте указаны следующие свойства: | Компонент "'''Вывод времени'''" выводит уведомление с текущим временем адресатам. В компоненте указаны следующие свойства: | ||
− | |||
* '''Адресат''' - укажите получателя сообщения | * '''Адресат''' - укажите получателя сообщения | ||
* '''Текст''' - функция "'''Текущие дата и время'''" | * '''Текст''' - функция "'''Текущие дата и время'''" | ||
+ | * '''Способ оповещения''' - Всплывающее окно | ||
Служебный сценарий должен всегда заканчиваться компонентом "'''Стоп'''". | Служебный сценарий должен всегда заканчиваться компонентом "'''Стоп'''". | ||
Строка 46: | Строка 51: | ||
− | === Коммутация абонентов с помощью служебного сценария === | + | [[Файл:Урок 22 -003.png | center | 600px]] |
+ | |||
+ | |||
+ | В отличии от IVR-сценария, который нужно назначать на внутренний номер и звонить на него, служебный сценарий намного проще запустить. Именно поэтому с его помощью можно легко проверить работу тех или иных функций системы. Например, отправку электронного письма или выполнение некоторого web-запроса. '''Пользуйтесь этим преимуществом.''' | ||
+ | |||
+ | '''Скачать сценарий:''' [http://wiki.oktell.ru/images/b/b5/%D0%A3%D1%80%D0%BE%D0%BA_22.oscr Урок 22.oscr] | ||
+ | |||
+ | |||
+ | === Оповещение абонентов с помощью служебного сценария === | ||
+ | |||
+ | Служебный сценарий может быть инициатором звонка. Это может быть полезно, например, для оповещения сотрудников или автоматического сбора конференции. Часто это применяется для услуги "''заказать обратный звонок с сайта''". После заполнения формы на сайте, '''Oktell''' генерирует вызов сотрудника, а затем автоматически соединяет его с целевым абонентом или проговаривает ему необходимую информацию. | ||
+ | |||
+ | Рассмотрим процесс создания такого сценария. | ||
+ | |||
+ | '''Задача:''' С помощью служебного сценария дозвониться до клиента компании, а затем проиграть ему IVR-сценарий с приветствием. | ||
+ | |||
+ | Поставленную задачу начинаем с создания IVR-сценария "'''Урок 22 (IVR)'''". Сценарий должен проигрывать звуковой файл приветствия, а затем разрывать соединение. Вид сценария показан на рисунке: | ||
+ | |||
+ | |||
+ | [[Файл:Урок 22 -004.png |center]] | ||
+ | |||
+ | |||
+ | Компонент "'''Приветствие'''" воспроизводит звуковой файл абоненту. | ||
+ | *'''Режим''' - Файл полностью | ||
+ | *'''Файл''' - выберите mp3-файл приветствия. | ||
+ | |||
+ | Сохраните данный сценарий на сервер. | ||
+ | |||
+ | Переходим к созданию служебного сценария "'''Урок 22 (Дозвон)'''". Служебный сценарий предназначен для дозвона до абонента, а затем для передачи управления созданному IVR-сценарию. На рисунке показан вид сценария: | ||
+ | |||
+ | |||
+ | [[Файл:Урок 22 -005.png |center]] | ||
+ | |||
+ | |||
+ | Основной компонент "'''Дозвон'''" совершает вызов абоненту по определенным линиям. Если абонент поднимает трубку, то компонент запускает IVR-сценарий на линии абонента, при этом сам переходит к дальнейшим компонентам. Устанавливаются следующие основные свойства: | ||
+ | |||
+ | *'''Номер/команда''' - введите телефон для вызова. В примере, '''89045642434''' | ||
+ | |||
+ | <span style="color:red">ВНИМАНИЕ: Все внешние номера при наборе используют "'''Служебный сценарий набора внешних/быстрых номеров'''". Сценарий будет рассматриваться в последующих уроках. | ||
+ | |||
+ | *'''Среда''' - '''Внешняя сеть''' указывается для совершения внешних вызовов, '''Внутренний номерной план''' для вызова на внутренние номера. В примере, '''Внешняя сеть'''. | ||
+ | *'''Обслуживание''' - IVR. Варианты "'''Управляющий модуль'''" и "'''Управляющий модуль с ожиданием в сценарии'''" применяются в особых случаях. | ||
+ | *'''Тип набора''' - Позволяет набирать номер с использованием команды направления. В примере, без преобразования. | ||
+ | *'''Тип вызова''' - Возможны 3 варианта исполнения звонка: обычный, экстренный и интерком. | ||
+ | :Чаще всего используется обычный набор. При этом телефон абонента начинает звонить, пока не поднимется трубка или не истечет время ожидания. | ||
+ | :Экстренный вызов при отсутствии свободных линий из списка разрывает одну из них и набирает номер. | ||
+ | :Интерком - вариант, когда телефон автоматически начинает разговор на громкой связи. Доступно только на внутренних линиях и зависит от типа используемого устройства. | ||
+ | В примере выбрано '''Обычный'''. | ||
+ | *'''Направления''' - выберите линии, по которым будет совершаться звонок. В примере, линии 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-сценариев. Для этого используется компонент "'''Коммутатор'''". | ||
+ | |||
+ | '''Задача:''' Скоммутировать двух абонентов с помощью служебного сценария. Оповестить администратора о результате операции. | ||
+ | |||
+ | Создадим служебный сценарий "'''Урок 22 (Коммутатор)'''". Вид сценария показан ниже: | ||
+ | |||
+ | |||
+ | [[Файл:Урок 22 -006.png|center]] | ||
+ | |||
+ | |||
+ | Компонент "'''Коммутатор'''" осуществляет вызов двух абонентов, затем объединяет их в коммутацию. Рассмотрим простейшую настройку компонента: | ||
+ | *'''Детальная настройка''' - подразумевает настройку коммутатора с помощью некоторой XML-структуры, в которой указываются все параметры для осуществления коммутации. В примере, установлено '''Нет''' и будет разобрано ниже. | ||
+ | *'''Абоненты А''' - указывается первый абонент для соединения. Вы можете указать внутренний или внешний номер, имя пользователя системы или линию. При указании нескольких абонентов, они указываются через запятую, а соединение происходит с первым ответившим. В примере, внутренний номер '''601'''. | ||
+ | *'''Абоненты Б''' - аналогично свойству "'''Абоненты А'''". В примере, внешний номер '''89091231231''' | ||
+ | *'''Последовательность''' - порядок вызова абонентов - последовательно или одновременно. В примере используется "'''Сначала А, потом Б'''" | ||
+ | *'''CallerID для A''' - вы можете указать собственный CallerID, который будет отображаться при звонке. <u>Однако, будьте внимательны - подставлять CallerID при внешнем звонке можно только, если это допускает ваш провайдер связи. Уточните этот момент.</u> Так как Абонент А является внутренним номером, то в поле указано "'''Коммутатор'''". | ||
+ | *'''CallerID для Б''' - заполняется аналогично свойству "'''CallerID для A'''". В пример, не указан, так как Абонент Б является внешним номером. | ||
+ | |||
+ | |||
+ | [[Файл:Урок 22 -007.png|center|300px]] | ||
+ | |||
+ | |||
+ | *'''Запись''' - в компоненте вы можете дополнительно установить параметры записи разговора. В примере, записываются все разговоры. | ||
+ | *'''Ожидать отчета''' - при необходимости анализа результата коммутации или неудачи вы можете дополнительно указать в этом свойстве "'''Да, полный отчет'''" или "'''Да только результат'''", а затем указать переменную в которую он будет сохраняться. В примере, указано свойство "'''Да, полный отчет'''". | ||
+ | *'''Отчет в переменную''' - указана переменная '''Отчет''' (строковая). | ||
+ | |||
+ | Аналогичная настройка может быть осуществлена с помощью следующей XML-структуры. В этом случае свойство "'''Детальная настройка'''" должно быть установлена в положение "'''Да'''". Синим цветом выделены установленные ранее поля. | ||
+ | |||
+ | "<task> | ||
+ | <taskid></taskid> | ||
+ | <taskcode></taskcode> | ||
+ | <sessionid></sessionid> | ||
+ | <projectid></projectid> | ||
+ | <span style="color:blue"><mode>0</mode></span> | ||
+ | <span style="color:blue"><recordmode>1</recordmode></span> | ||
+ | <svcownertext></svcownertext> | ||
+ | <attachedcctask></attachedcctask> | ||
+ | <attachedidinlist></attachedidinlist> | ||
+ | <agroup> | ||
+ | <span style="color:blue"><a>601</a></span> | ||
+ | <a></a> | ||
+ | </agroup> | ||
+ | <bgroup> | ||
+ | <span style="color:blue"><nowiki><b>89091231231</b></nowiki></span> | ||
+ | <nowiki><b></b></nowiki> | ||
+ | </bgroup> | ||
+ | <span style="color:blue"><a_callerid>Коммутатор</a_callerid></span> | ||
+ | <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'''). | ||
+ | |||
+ | Остальные компоненты отвечают за отладку и уведомление администратора об успешной или неуспешной коммутации. Рассмотрим краткое описание компонентов: | ||
+ | |||
+ | <u>Компонент "'''Ошибка'''". </u> Сообщает администратору об ошибке в настройке коммутатора. | ||
+ | *'''Текст''' - строка ''Ошибка коммутатора'' | ||
+ | *'''Цвет фона''' - красный (255, 0, 0) для большей наглядности | ||
+ | |||
+ | |||
+ | <u>Компонент "'''Вывод отчета'''".</u> Выводит на экран отчета о коммутации. | ||
+ | *'''Текст''' - выражение | ||
+ | '[Отчет]'+endline+ | ||
+ | [Отчет] | ||
+ | |||
+ | |||
+ | <u>Компонент "'''success'''".</u> Определяет статус коммутации, тег <success> (0- неудача, 1- успех). | ||
+ | *'''Документ''' - переменная '''Отчет''' | ||
+ | *'''Алгоритм''' - Язык OQuery для HTML | ||
+ | *'''Поисковый запрос''' - строка ''success'' | ||
+ | *'''Функция''' - Содержимое | ||
+ | *'''Результат в переменную''' - переменная '''success''' (строковая) | ||
+ | |||
+ | <u>Компонент "'''success=1?'''".</u> Определяет успешен ли звонок. | ||
+ | *'''Аргумент 1''' - переменная '''success''' | ||
+ | *'''Аргумент 2''' - строка '''1''' | ||
+ | *'''Тип сравнения''' - "'''='''" | ||
+ | |||
+ | |||
+ | [[Файл:Урок 22 -008.png|center|800px]] | ||
+ | |||
+ | |||
+ | <u>Компонент "'''Успешно соединились'''".</u> Уведомляет администратора об успешной коммутации абонентов. | ||
+ | *'''Текст''' - строка ''Успешно соединились'' | ||
+ | |||
+ | |||
+ | <u>Компонент "'''errorid'''".</u> В случае неудачного звонка определяется номер причины, по которой абоненты не соединились друг с другом. | ||
+ | *'''Документ''' - переменная '''Отчет''' | ||
+ | *'''Алгоритм''' - Язык OQuery для HTML | ||
+ | *'''Поисковый запрос''' - строка ''errorid'' | ||
+ | *'''Функция''' - Содержимое | ||
+ | *'''Результат в переменную''' - переменная '''errorid''' (строковая) | ||
+ | |||
+ | |||
+ | <u>Компонент "'''errorstr'''".</u> Аналогично определятся строка с расшифровкой причины. | ||
+ | *'''Документ''' - переменная '''Отчет''' | ||
+ | *'''Алгоритм''' - Язык OQuery для HTML | ||
+ | *'''Поисковый запрос''' - строка ''errorstr'' | ||
+ | *'''Функция''' - Содержимое | ||
+ | *'''Результат в переменную''' - переменная '''errorstr''' (строковая) | ||
+ | |||
+ | |||
+ | <u>Компонент "'''Неуспешное соединение'''".</u> Выводит администратору сообщение о неуспешном соединении абонентов. | ||
+ | *'''Текст''' - выражение | ||
+ | 'Неудачное соединение'+endline+ | ||
+ | '[errorid] '+[errorid]+endline+ | ||
+ | '[errorstr] '+[errorstr] | ||
+ | |||
+ | |||
+ | [[Файл:Урок 22 -009.png|center|800px]] | ||
+ | |||
+ | |||
+ | В результате работы при коммутациях у администратора будут появляться уведомления с текстом отчета и с результатом звонка. Получаемую информацию можно использовать как для отладки, так и для контроля выполняющихся действий. Как видно, результат успешной коммутации можно дополнительно анализировать и находить оттуда такие поля как, путь к файлу записи, номер линии или 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 минут. ''Подсказка: используйте паузу''. | ||
+ | * Реализуйте служебный сценарий для сбора конференции. Воспользуйтесь статьей [[Сценарий сбор конференции с телефона]] | ||
+ | * Реализуйте служебный сценарий для вывода актуального курса доллара на экран. | ||
Строка 53: | Строка 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 минут. Подсказка: используйте паузу.
- Реализуйте служебный сценарий для сбора конференции. Воспользуйтесь статьей Сценарий сбор конференции с телефона
- Реализуйте служебный сценарий для вывода актуального курса доллара на экран.
Наверх | К предыдущему уроку | К следующему уроку |