Урок 23 Периодический запуск служебных сценариев — различия между версиями

Материал из Oktell
Перейти к: навигация, поиск
(Новая страница: «{|cellpadding="10" cellspacing="0" border="0" | Наверх | [[Урок 22 Служебные сценарии | К предыдущему уро...»)
 
 
(не показано 28 промежуточных версии этого же участника)
Строка 2: Строка 2:
 
| [[Уроки | Наверх]]
 
| [[Уроки | Наверх]]
 
| [[Урок 22 Служебные сценарии | К предыдущему уроку]]
 
| [[Урок 22 Служебные сценарии | К предыдущему уроку]]
|  
+
| [[Урок 24 IVR сценарий входящей маршрутизации | К следующему уроку]]
 
|-
 
|-
 
|}
 
|}
Строка 9: Строка 9:
  
  
 +
=== Введение ===
  
 +
На прошлом уроке рассматривался ручной запуск сценариев, однако такой способ на практике применяется очень редко. Благодаря тому, что служебные сценарии могут запускаться в любые моменты времени появляется еще один способ запуска - периодический.
 +
 +
Периодический запуск применяется для решения следующих задач:
 +
* '''Автоматический сбор данных и мониторинг внешних систем.''' В рамках задачи сценарий рассчитывает собственные показатели (например, из БД)  или обращается во внешний сервис, например, ящик электронной почты, WebCRM, личный кабинет SMS-провайдера. Как правило, внешняя система имеет некоторый набор команд, называемый API, с помощью которого можно получить требуемую информацию. При запуске служебный сценарий с помощью компонента "Web-запрос" выполняет команды API для получения необходимых данных. Полученный ответ записывается в переменную, которая затем анализируется с помощью компонента "Парсер". Затем требуемая информация записывается в базу данных Oktell с пометкой о времени.
 +
* '''Расчет показателей.''' Во время сбора данных в таблицы обычно попадает детализированная информация по проекту. Например, в таблице фиксируется каждая активность и ее параметры, такие как дата начала и завершения работы, имена сотрудников, принимающих участие и другие. Для общих отчетов по работе компании необходимо дополнительно преобразовывать полученные данные - это может быть дополнительная фильтрация по менеджерам, суммирование всех заявок и времени их выполнения, разделение на подгруппы, вычисление минимальных, средних и максимальных значений, а также любые другие операции.
 +
* '''Контроль данных.''' Служебные сценарии также применяются для оповещения супервизоров. Например, сотрудники за весь день выполнили 70% плана. Если при очередном запуске система определяет критический уровень показателя, то она уведомляет об этом супервизора по SMS или E-mail. Возможны и другие варианты оповещения. С помощью таких настроек офис всегда остается под контролем, где бы ни находилось руководство.
 +
* '''Системные действия.''' Сценарии можно применять для управления файлами и загрузками, очищать или архивировать документы в системных папках и для других действий.
 +
 +
Для всего перечисленного выше в Oktell существует сервис служебных задач. Сервис служебных задач позволяет производить одноразовый отложенный запуск, периодический запуск или запуск при включении сервера. Для работы служебной задачи необходимо выбрать служебный сценарий и указать расписание работы. После активации служебный сценарий запуститься согласно выставленной конфигурации.
 +
 +
В данном уроке разбирается пример реализации периодического сценария для мониторинга внешней системы.
 +
 +
 +
=== Проектирование сценария===
 +
 +
'''Задача:''' В компании реализуется сервис "Обратный звонок с сайта" с помощью которого любой желающий может оставить свои контактные данные и в течении 5 минут ему перезвонит специалист по продажам.
 +
 +
Задачу планируется решать с помощью почтового сервиса. После заполнения формы с номером телефона, с сайта отправляется электронное письмо на определенный адрес. Oktell постоянно мониторит электронную почту и в случае распознавания целевого письма коммутирует клиента и оператора.
 +
 +
Решение задачи начинается с создания служебного сценария. Вид сценария показан на рисунке:
 +
 +
 +
[[Файл:Урок23 001.png|center]]
 +
 +
 +
Компонент "'''Получение Email'''". Получает электронное письмо и сохраняет его части в соответствующие переменные.
 +
*Способ получения - указываются настройки подключения к POP3-серверу.
 +
*Кому - переменная '''to''' (строковая)
 +
*От кого - переменная '''from''' (строковая)
 +
*Тема - переменная '''theme''' (строковая)
 +
*Текст письма - переменная '''text1''' (строковая)
 +
*Текст письма часть 2 - переменная '''text2''' (строковая)
 +
*Текст письма часть 3 - переменная '''text3''' (строковая)
 +
*Удалять с сервера - Да
 +
*Путь к папке с вложениями в переменную - '''folder''' (строковая)
 +
 +
<span style="color:red">ВНИМАНИЕ: Включенная настройка "'''Удалять с сервера'''" считывает с почтового сервера последнее (позднее) письмо, после чего оно удаляется. Таким образом обеспечивается перебор всех писем.  При выключенной настройке письма не удаляется и считывается самое первое (раннее) сообщение.
 +
 +
 +
[[Файл:Урок23 005.png|center]]
 +
 +
 +
Компонент "'''Ошибка'''". Уведомление администратору системы об ошибке получения письма
 +
*Текст - строка ''Error''.
 +
 +
 +
Компонент "'''Писем нет'''". Уведомление администратору системы об отсутствии писем в почтовом ящике.
 +
*Текст - строка ''Error''.
 +
 +
 +
Компонент "'''Соединение частей письма'''". Чтобы получить единый текст письма в переменную, производится конкатенация (объединение) частей письма.
 +
*Переменная - '''text'''
 +
*Значение - выражение ''[text1]+endline+[text2]+endline+[text3]''
 +
 +
 +
[[Файл:Урок23 006.png|center]]
 +
 +
 +
Компонент "'''Ув1'''"- Отладочное уведомление для вывода значений переменных.
 +
*Текст - выражение
 +
'To '+[to]+endline+
 +
'From '+[from]+endline+
 +
'Theme '+[theme]+endline+endline+
 +
[text]+endline+endline+
 +
'Folder '+[folder]
 +
 +
 +
Компонент "'''В нижний регистр'''". Приводит текст письма к нижнему регистру. Это нужно для удобства поиска кодовой фразы и уменьшения ошибок при анализе. Среди функций Oktell подобного преобразования пока нет, поэтому используется функция SQL:
 +
select @out=lower(@in)
 +
 +
где @in и @out - переменная '''text'''
 +
 +
 +
[[Файл:Урок23 007.png|center]]
 +
 +
 +
Компонент "'''Определяем номер'''". Анализирует текст письма на предмет нахождения кодовой фразы "позвоните мне на номер" и выделяет все рядом стоящие цифры с помощью регулярных выражений.
 +
*Документ - переменная '''text'''
 +
*Алгоритм - регулярные выражения
 +
*Поисковый запрос - <span style="color:green">'''позвоните мне на номер[\s]+([0-9]+)'''</span>
 +
*Функция - Содержимое
 +
*Номер элемента - 0
 +
*Результат в переменную - переменная '''number''' (строковая)
 +
 +
 +
Компонент "'''Номер определился?'''". Проверяет переменную '''number''' на содержание в ней номера телефона клиента. Если строка пустая, то сценарий заканчивается. 
 +
*Аргумент 1 - переменная '''number'''
 +
*Аргумент 2 - пустая строка
 +
*Тип сравнения - '''='''
 +
 +
 +
Компонент "'''Оповещаем оператора'''". Если переменная '''number''' не пустая, то эта информация выводится администратору для контроля и отладки.
 +
*Текст - выражение
 +
'Задание на звонок с письма:'+endline+[number]
 +
 +
 +
Компонент "'''Коммутация'''". Соединяет пользователя из группового номера 105 и абонента.
 +
*Абоненты А - строка ''105''
 +
*Абоненты Б - переменная '''number'''
 +
*Последовательность - Сначала А, потом Б
 +
*CallerId для A - строка ''Вызов с письма''
 +
 +
 +
[[Файл:Урок23 008.png|center|900px]]
 +
 +
 +
<span style="color:red">ВНИМАНИЕ: Сценарий можно улучшить, добавив более строгую проверку номера, например, на количество цифр и маршрутизируя звонок в определенные линии. Однако, эта доработка не является принципиальной в рамках данного урока. Более того, при массовом приеме заявок с сайта рекомендуется сделать цикл по почтовому ящику.</span>
 +
 +
 +
=== Создание служебной задачи ===
 +
 +
Созданный сценарий необходимо запускать хотя бы раз в минуту для быстрого реагирования на поступающие заявки от клиентов. Oktell позволяет сделать это автоматически с помощью сервиса служебных задач. Фактически, вы назначаете сценарий на служебную задачу, которая после активации с некоторым периодом начинает его запускать.
 +
 +
'''1.''' Перейдите в модуль Администрирование/Общие настройки. Откройте вкладку "'''Служебные задачи'''".
 +
 +
'''2.''' Для создания служебной задачи нажмите "'''Добавить'''"
 +
 +
 +
[[Файл:Урок23 004.png|center|800px]]
 +
 +
 +
'''3.''' Настройте задание. Введите следующие параметры:
 +
*'''Название''' - наименование задания. В примере "'''Звонок с сайта'''".
 +
*'''Служебный сценарий''' - Выберите нужный служебный сценарий из списка. В примере "'''Урок 23'''".
 +
*'''Параметр запуска''' - При необходимости можно указать стартовый параметр. В примере не указан
 +
*'''Тип запуска''' - существуют три варианта запуска
 +
:*'''Однократный''' в указанное время позволяет запустить сценарий отложенно в указанное время.
 +
:*'''Периодический''' запуск - наиболее распространенный вариант, позволяет запускать сценарий с некоторым периодом.
 +
:*'''При запуске сервера''' - вариант, который, как правило, применяется для выставления каких-либо первоначальных глобальных переменных, добавления динамических объектов карты сети или уведомления сторонних систем.
 +
В примере выбран "'''Периодический'''".
 +
 +
Следующие настройки приведены только для периодического запуска:
 +
*'''Период актуальности''' - интервал дат, в течении которого можно запускать данный сценарий. В примере "'''12.08.2014 - 12.08.2015'''"
 +
*'''Запускать с интервалом''' - период запуска сценария. В примере "'''Раз в минуту'''"
 +
*'''Расписание''' - расписание задачи для запуска сценария. В примере будние дни с 10 до 16.
 +
<span style="color:red">ВНИМАНИЕ: Все поля обязательны для заполнения, без этого задача не запустится.
 +
 +
'''4.''' После ввода настроек нажмите "'''Сохранить'''".
 +
 +
 +
[[Файл:Урок23 002.png|center|800px]]
 +
 +
 +
'''5.''' Для активации задачи установите крестик напротив данной задачи.
 +
 +
 +
[[Файл:Урок23 003.png|center|800px]]
 +
 +
 +
'''Скачать сценарий:''' [http://wiki.oktell.ru/images/6/62/%D0%A3%D1%80%D0%BE%D0%BA23.oscr Урок23.oscr]
 +
 +
'''Поздравляем!''' Теперь вы умеете создавать служебные задачи и производить периодический запуск сценариев. Можете переходить к следующему уроку.
 +
 +
'''Техническая документация:''' [[Служебные задачи]] и [[Общие компоненты сценариев]]
 +
 +
 +
== Вопросы и задания ==
 +
 +
* Для чего нужны служебные задачи? Какие функции они выполняют?
 +
* Реализуйте систему учета опозданий сотрудников. Воспользуйтесь статьей [[Учет опозданий сотрудников]].
 +
* Создайте служебную задачу для контроля курса доллара. Например, каждую минуту запускайте служебный сценарий, который будет уточнять курс доллара.  При изменении валюты, сценарий будет дозваниваться до вас и проигрывать новое значение.
 +
* Реализуйте ежедневную отправку отчетов себе на электронный ящик. В качестве отчета рассчитывайте и передавайте число входящих звонков, число исходящих звонков, число внутренних звонков.
  
  
Строка 15: Строка 178:
 
| [[Уроки | Наверх]]
 
| [[Уроки | Наверх]]
 
| [[Урок 22 Служебные сценарии | К предыдущему уроку]]
 
| [[Урок 22 Служебные сценарии | К предыдущему уроку]]
|  
+
| [[Урок 24 IVR сценарий входящей маршрутизации | К следующему уроку]]
 
|-
 
|-
 
|}
 
|}

Текущая версия на 05:57, 21 августа 2014

Наверх К предыдущему уроку К следующему уроку


Введение

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

Периодический запуск применяется для решения следующих задач:

  • Автоматический сбор данных и мониторинг внешних систем. В рамках задачи сценарий рассчитывает собственные показатели (например, из БД) или обращается во внешний сервис, например, ящик электронной почты, WebCRM, личный кабинет SMS-провайдера. Как правило, внешняя система имеет некоторый набор команд, называемый API, с помощью которого можно получить требуемую информацию. При запуске служебный сценарий с помощью компонента "Web-запрос" выполняет команды API для получения необходимых данных. Полученный ответ записывается в переменную, которая затем анализируется с помощью компонента "Парсер". Затем требуемая информация записывается в базу данных Oktell с пометкой о времени.
  • Расчет показателей. Во время сбора данных в таблицы обычно попадает детализированная информация по проекту. Например, в таблице фиксируется каждая активность и ее параметры, такие как дата начала и завершения работы, имена сотрудников, принимающих участие и другие. Для общих отчетов по работе компании необходимо дополнительно преобразовывать полученные данные - это может быть дополнительная фильтрация по менеджерам, суммирование всех заявок и времени их выполнения, разделение на подгруппы, вычисление минимальных, средних и максимальных значений, а также любые другие операции.
  • Контроль данных. Служебные сценарии также применяются для оповещения супервизоров. Например, сотрудники за весь день выполнили 70% плана. Если при очередном запуске система определяет критический уровень показателя, то она уведомляет об этом супервизора по SMS или E-mail. Возможны и другие варианты оповещения. С помощью таких настроек офис всегда остается под контролем, где бы ни находилось руководство.
  • Системные действия. Сценарии можно применять для управления файлами и загрузками, очищать или архивировать документы в системных папках и для других действий.

Для всего перечисленного выше в Oktell существует сервис служебных задач. Сервис служебных задач позволяет производить одноразовый отложенный запуск, периодический запуск или запуск при включении сервера. Для работы служебной задачи необходимо выбрать служебный сценарий и указать расписание работы. После активации служебный сценарий запуститься согласно выставленной конфигурации.

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


Проектирование сценария

Задача: В компании реализуется сервис "Обратный звонок с сайта" с помощью которого любой желающий может оставить свои контактные данные и в течении 5 минут ему перезвонит специалист по продажам.

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

Решение задачи начинается с создания служебного сценария. Вид сценария показан на рисунке:


Урок23 001.png


Компонент "Получение Email". Получает электронное письмо и сохраняет его части в соответствующие переменные.

  • Способ получения - указываются настройки подключения к POP3-серверу.
  • Кому - переменная to (строковая)
  • От кого - переменная from (строковая)
  • Тема - переменная theme (строковая)
  • Текст письма - переменная text1 (строковая)
  • Текст письма часть 2 - переменная text2 (строковая)
  • Текст письма часть 3 - переменная text3 (строковая)
  • Удалять с сервера - Да
  • Путь к папке с вложениями в переменную - folder (строковая)

ВНИМАНИЕ: Включенная настройка "Удалять с сервера" считывает с почтового сервера последнее (позднее) письмо, после чего оно удаляется. Таким образом обеспечивается перебор всех писем. При выключенной настройке письма не удаляется и считывается самое первое (раннее) сообщение.


Урок23 005.png


Компонент "Ошибка". Уведомление администратору системы об ошибке получения письма

  • Текст - строка Error.


Компонент "Писем нет". Уведомление администратору системы об отсутствии писем в почтовом ящике.

  • Текст - строка Error.


Компонент "Соединение частей письма". Чтобы получить единый текст письма в переменную, производится конкатенация (объединение) частей письма.

  • Переменная - text
  • Значение - выражение [text1]+endline+[text2]+endline+[text3]


Урок23 006.png


Компонент "Ув1"- Отладочное уведомление для вывода значений переменных.

  • Текст - выражение
'To '+[to]+endline+
'From '+[from]+endline+
'Theme '+[theme]+endline+endline+
[text]+endline+endline+
'Folder '+[folder]


Компонент "В нижний регистр". Приводит текст письма к нижнему регистру. Это нужно для удобства поиска кодовой фразы и уменьшения ошибок при анализе. Среди функций Oktell подобного преобразования пока нет, поэтому используется функция SQL:

select @out=lower(@in)

где @in и @out - переменная text


Урок23 007.png


Компонент "Определяем номер". Анализирует текст письма на предмет нахождения кодовой фразы "позвоните мне на номер" и выделяет все рядом стоящие цифры с помощью регулярных выражений.

  • Документ - переменная text
  • Алгоритм - регулярные выражения
  • Поисковый запрос - позвоните мне на номер[\s]+([0-9]+)
  • Функция - Содержимое
  • Номер элемента - 0
  • Результат в переменную - переменная number (строковая)


Компонент "Номер определился?". Проверяет переменную number на содержание в ней номера телефона клиента. Если строка пустая, то сценарий заканчивается.

  • Аргумент 1 - переменная number
  • Аргумент 2 - пустая строка
  • Тип сравнения - =


Компонент "Оповещаем оператора". Если переменная number не пустая, то эта информация выводится администратору для контроля и отладки.

  • Текст - выражение
'Задание на звонок с письма:'+endline+[number]


Компонент "Коммутация". Соединяет пользователя из группового номера 105 и абонента.

  • Абоненты А - строка 105
  • Абоненты Б - переменная number
  • Последовательность - Сначала А, потом Б
  • CallerId для A - строка Вызов с письма


Урок23 008.png


ВНИМАНИЕ: Сценарий можно улучшить, добавив более строгую проверку номера, например, на количество цифр и маршрутизируя звонок в определенные линии. Однако, эта доработка не является принципиальной в рамках данного урока. Более того, при массовом приеме заявок с сайта рекомендуется сделать цикл по почтовому ящику.


Создание служебной задачи

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

1. Перейдите в модуль Администрирование/Общие настройки. Откройте вкладку "Служебные задачи".

2. Для создания служебной задачи нажмите "Добавить"


Урок23 004.png


3. Настройте задание. Введите следующие параметры:

  • Название - наименование задания. В примере "Звонок с сайта".
  • Служебный сценарий - Выберите нужный служебный сценарий из списка. В примере "Урок 23".
  • Параметр запуска - При необходимости можно указать стартовый параметр. В примере не указан
  • Тип запуска - существуют три варианта запуска
  • Однократный в указанное время позволяет запустить сценарий отложенно в указанное время.
  • Периодический запуск - наиболее распространенный вариант, позволяет запускать сценарий с некоторым периодом.
  • При запуске сервера - вариант, который, как правило, применяется для выставления каких-либо первоначальных глобальных переменных, добавления динамических объектов карты сети или уведомления сторонних систем.

В примере выбран "Периодический".

Следующие настройки приведены только для периодического запуска:

  • Период актуальности - интервал дат, в течении которого можно запускать данный сценарий. В примере "12.08.2014 - 12.08.2015"
  • Запускать с интервалом - период запуска сценария. В примере "Раз в минуту"
  • Расписание - расписание задачи для запуска сценария. В примере будние дни с 10 до 16.

ВНИМАНИЕ: Все поля обязательны для заполнения, без этого задача не запустится.

4. После ввода настроек нажмите "Сохранить".


Урок23 002.png


5. Для активации задачи установите крестик напротив данной задачи.


Урок23 003.png


Скачать сценарий: Урок23.oscr

Поздравляем! Теперь вы умеете создавать служебные задачи и производить периодический запуск сценариев. Можете переходить к следующему уроку.

Техническая документация: Служебные задачи и Общие компоненты сценариев


Вопросы и задания

  • Для чего нужны служебные задачи? Какие функции они выполняют?
  • Реализуйте систему учета опозданий сотрудников. Воспользуйтесь статьей Учет опозданий сотрудников.
  • Создайте служебную задачу для контроля курса доллара. Например, каждую минуту запускайте служебный сценарий, который будет уточнять курс доллара. При изменении валюты, сценарий будет дозваниваться до вас и проигрывать новое значение.
  • Реализуйте ежедневную отправку отчетов себе на электронный ящик. В качестве отчета рассчитывайте и передавайте число входящих звонков, число исходящих звонков, число внутренних звонков.


Наверх К предыдущему уроку К следующему уроку