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

Материал из Oktell
Перейти к: навигация, поиск
Строка 168: Строка 168:
 
== Вопросы и задания ==
 
== Вопросы и задания ==
  
* Каким методом GET или POST стоит отправлять Web-запросы? От чего это может зависеть?
+
* Для чего нужны служебные задачи? Какие функции они выполняют?
* Прочитайте статью [[Компонент Парсер]]. Ознакомьтесь с возможностями компонента.  
+
* Реализуйте систему учета опозданий сотрудников. Воспользуйтесь статьей [[Учет опозданий сотрудников]].
* Реализуйте IVR сценарий при звонке на который будет проговариваться курс доллара по отношению к рублю на текущий момент.
+
* Создайте служебную задачу для контроля курса доллара. Например, каждую минуту запускайте служебный сценарий, который будет уточнять курс доллара.  При изменении дозваниваться до вас и проигрывать новое значение.
* Реализуйте IVR сценарий, который будет проговаривать погоду в вашем городе на текущий момент. Воспользуйтесь следующими сервисами:
+
* Реализуйте ежедневную отправку отчетов себе на электронный ящик. В качестве отчета рассчитывайте и передавайте число входящих звонков, число исходящих звонков, число внутренних звонков.  
:*http://export.yandex.ru/weather-ng/forecasts/37189.xml  - сервис для получения погоды по городу с id=37189
+
 
:*http://weather.yandex.ru/static/cities.xml - сервис для получения id городов
+
 
 
{|cellpadding="10" cellspacing="0" border="0"
 
{|cellpadding="10" cellspacing="0" border="0"
 
| [[Уроки | Наверх]]
 
| [[Уроки | Наверх]]

Версия 13:06, 12 августа 2014

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


Введение

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

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

  • Автоматический сбор данных и мониторинг внешних систем. В рамках задачи сценарий рассчитывает собственные показатели (например, из БД) или обращается во внешний сервис, например, ящик электронной почты, WebCRM, личный кабинет SMS-провайдера. Как правило, внешняя система имеет некоторый набор команд, называемый API, с помощью которого можно получить требуемую информацию. При запуске служебный сценарий выполняет команды API для получения количества заявок с помощью компонента “Web-запрос”. Полученный ответ записывается в переменную, которая затем анализируется с помощью компонента "Парсер". Полезная информация записывается в базу данных 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

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

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


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

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


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