Урок 23 Периодический запуск служебных сценариев — различия между версиями
м |
|||
(не показаны 22 промежуточные версии этого же участника) | |||
Строка 2: | Строка 2: | ||
| [[Уроки | Наверх]] | | [[Уроки | Наверх]] | ||
| [[Урок 22 Служебные сценарии | К предыдущему уроку]] | | [[Урок 22 Служебные сценарии | К предыдущему уроку]] | ||
− | | | + | | [[Урок 24 IVR сценарий входящей маршрутизации | К следующему уроку]] |
|- | |- | ||
|} | |} | ||
Строка 14: | Строка 14: | ||
Периодический запуск применяется для решения следующих задач: | Периодический запуск применяется для решения следующих задач: | ||
− | * '''Автоматический сбор данных и мониторинг внешних систем.''' В рамках задачи сценарий рассчитывает собственные показатели (например, из БД) или обращается во внешний сервис, например, ящик электронной почты, WebCRM, личный кабинет SMS-провайдера. Как правило, внешняя система имеет некоторый набор команд, называемый API, с помощью которого можно получить требуемую информацию. При запуске служебный сценарий выполняет команды API для получения | + | * '''Автоматический сбор данных и мониторинг внешних систем.''' В рамках задачи сценарий рассчитывает собственные показатели (например, из БД) или обращается во внешний сервис, например, ящик электронной почты, WebCRM, личный кабинет SMS-провайдера. Как правило, внешняя система имеет некоторый набор команд, называемый API, с помощью которого можно получить требуемую информацию. При запуске служебный сценарий с помощью компонента "Web-запрос" выполняет команды API для получения необходимых данных. Полученный ответ записывается в переменную, которая затем анализируется с помощью компонента "Парсер". Затем требуемая информация записывается в базу данных Oktell с пометкой о времени. |
− | * ''' | + | * '''Расчет показателей.''' Во время сбора данных в таблицы обычно попадает детализированная информация по проекту. Например, в таблице фиксируется каждая активность и ее параметры, такие как дата начала и завершения работы, имена сотрудников, принимающих участие и другие. Для общих отчетов по работе компании необходимо дополнительно преобразовывать полученные данные - это может быть дополнительная фильтрация по менеджерам, суммирование всех заявок и времени их выполнения, разделение на подгруппы, вычисление минимальных, средних и максимальных значений, а также любые другие операции. |
* '''Контроль данных.''' Служебные сценарии также применяются для оповещения супервизоров. Например, сотрудники за весь день выполнили 70% плана. Если при очередном запуске система определяет критический уровень показателя, то она уведомляет об этом супервизора по SMS или E-mail. Возможны и другие варианты оповещения. С помощью таких настроек офис всегда остается под контролем, где бы ни находилось руководство. | * '''Контроль данных.''' Служебные сценарии также применяются для оповещения супервизоров. Например, сотрудники за весь день выполнили 70% плана. Если при очередном запуске система определяет критический уровень показателя, то она уведомляет об этом супервизора по SMS или E-mail. Возможны и другие варианты оповещения. С помощью таких настроек офис всегда остается под контролем, где бы ни находилось руководство. | ||
* '''Системные действия.''' Сценарии можно применять для управления файлами и загрузками, очищать или архивировать документы в системных папках и для других действий. | * '''Системные действия.''' Сценарии можно применять для управления файлами и загрузками, очищать или архивировать документы в системных папках и для других действий. | ||
+ | Для всего перечисленного выше в Oktell существует сервис служебных задач. Сервис служебных задач позволяет производить одноразовый отложенный запуск, периодический запуск или запуск при включении сервера. Для работы служебной задачи необходимо выбрать служебный сценарий и указать расписание работы. После активации служебный сценарий запуститься согласно выставленной конфигурации. | ||
− | + | В данном уроке разбирается пример реализации периодического сценария для мониторинга внешней системы. | |
− | '''Задача:''' | + | |
+ | === Проектирование сценария=== | ||
+ | |||
+ | '''Задача:''' В компании реализуется сервис "Обратный звонок с сайта" с помощью которого любой желающий может оставить свои контактные данные и в течении 5 минут ему перезвонит специалист по продажам. | ||
+ | |||
+ | Задачу планируется решать с помощью почтового сервиса. После заполнения формы с номером телефона, с сайта отправляется электронное письмо на определенный адрес. Oktell постоянно мониторит электронную почту и в случае распознавания целевого письма коммутирует клиента и оператора. | ||
Решение задачи начинается с создания служебного сценария. Вид сценария показан на рисунке: | Решение задачи начинается с создания служебного сценария. Вид сценария показан на рисунке: | ||
Строка 29: | Строка 35: | ||
[[Файл:Урок23 001.png|center]] | [[Файл:Урок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] | ||
+ | '''Поздравляем!''' Теперь вы умеете создавать служебные задачи и производить периодический запуск сценариев. Можете переходить к следующему уроку. | ||
+ | '''Техническая документация:''' [[Служебные задачи]] и [[Общие компоненты сценариев]] | ||
+ | == Вопросы и задания == | ||
− | + | * Для чего нужны служебные задачи? Какие функции они выполняют? | |
+ | * Реализуйте систему учета опозданий сотрудников. Воспользуйтесь статьей [[Учет опозданий сотрудников]]. | ||
+ | * Создайте служебную задачу для контроля курса доллара. Например, каждую минуту запускайте служебный сценарий, который будет уточнять курс доллара. При изменении валюты, сценарий будет дозваниваться до вас и проигрывать новое значение. | ||
+ | * Реализуйте ежедневную отправку отчетов себе на электронный ящик. В качестве отчета рассчитывайте и передавайте число входящих звонков, число исходящих звонков, число внутренних звонков. | ||
Строка 44: | Строка 178: | ||
| [[Уроки | Наверх]] | | [[Уроки | Наверх]] | ||
| [[Урок 22 Служебные сценарии | К предыдущему уроку]] | | [[Урок 22 Служебные сценарии | К предыдущему уроку]] | ||
− | | | + | | [[Урок 24 IVR сценарий входящей маршрутизации | К следующему уроку]] |
|- | |- | ||
|} | |} |
Текущая версия на 05:57, 21 августа 2014
Наверх | К предыдущему уроку | К следующему уроку |
Введение
На прошлом уроке рассматривался ручной запуск сценариев, однако такой способ на практике применяется очень редко. Благодаря тому, что служебные сценарии могут запускаться в любые моменты времени появляется еще один способ запуска - периодический.
Периодический запуск применяется для решения следующих задач:
- Автоматический сбор данных и мониторинг внешних систем. В рамках задачи сценарий рассчитывает собственные показатели (например, из БД) или обращается во внешний сервис, например, ящик электронной почты, WebCRM, личный кабинет SMS-провайдера. Как правило, внешняя система имеет некоторый набор команд, называемый API, с помощью которого можно получить требуемую информацию. При запуске служебный сценарий с помощью компонента "Web-запрос" выполняет команды API для получения необходимых данных. Полученный ответ записывается в переменную, которая затем анализируется с помощью компонента "Парсер". Затем требуемая информация записывается в базу данных Oktell с пометкой о времени.
- Расчет показателей. Во время сбора данных в таблицы обычно попадает детализированная информация по проекту. Например, в таблице фиксируется каждая активность и ее параметры, такие как дата начала и завершения работы, имена сотрудников, принимающих участие и другие. Для общих отчетов по работе компании необходимо дополнительно преобразовывать полученные данные - это может быть дополнительная фильтрация по менеджерам, суммирование всех заявок и времени их выполнения, разделение на подгруппы, вычисление минимальных, средних и максимальных значений, а также любые другие операции.
- Контроль данных. Служебные сценарии также применяются для оповещения супервизоров. Например, сотрудники за весь день выполнили 70% плана. Если при очередном запуске система определяет критический уровень показателя, то она уведомляет об этом супервизора по SMS или E-mail. Возможны и другие варианты оповещения. С помощью таких настроек офис всегда остается под контролем, где бы ни находилось руководство.
- Системные действия. Сценарии можно применять для управления файлами и загрузками, очищать или архивировать документы в системных папках и для других действий.
Для всего перечисленного выше в Oktell существует сервис служебных задач. Сервис служебных задач позволяет производить одноразовый отложенный запуск, периодический запуск или запуск при включении сервера. Для работы служебной задачи необходимо выбрать служебный сценарий и указать расписание работы. После активации служебный сценарий запуститься согласно выставленной конфигурации.
В данном уроке разбирается пример реализации периодического сценария для мониторинга внешней системы.
Проектирование сценария
Задача: В компании реализуется сервис "Обратный звонок с сайта" с помощью которого любой желающий может оставить свои контактные данные и в течении 5 минут ему перезвонит специалист по продажам.
Задачу планируется решать с помощью почтового сервиса. После заполнения формы с номером телефона, с сайта отправляется электронное письмо на определенный адрес. Oktell постоянно мониторит электронную почту и в случае распознавания целевого письма коммутирует клиента и оператора.
Решение задачи начинается с создания служебного сценария. Вид сценария показан на рисунке:
Компонент "Получение Email". Получает электронное письмо и сохраняет его части в соответствующие переменные.
- Способ получения - указываются настройки подключения к POP3-серверу.
- Кому - переменная to (строковая)
- От кого - переменная from (строковая)
- Тема - переменная theme (строковая)
- Текст письма - переменная text1 (строковая)
- Текст письма часть 2 - переменная text2 (строковая)
- Текст письма часть 3 - переменная text3 (строковая)
- Удалять с сервера - Да
- Путь к папке с вложениями в переменную - folder (строковая)
ВНИМАНИЕ: Включенная настройка "Удалять с сервера" считывает с почтового сервера последнее (позднее) письмо, после чего оно удаляется. Таким образом обеспечивается перебор всех писем. При выключенной настройке письма не удаляется и считывается самое первое (раннее) сообщение.
Компонент "Ошибка". Уведомление администратору системы об ошибке получения письма
- Текст - строка Error.
Компонент "Писем нет". Уведомление администратору системы об отсутствии писем в почтовом ящике.
- Текст - строка Error.
Компонент "Соединение частей письма". Чтобы получить единый текст письма в переменную, производится конкатенация (объединение) частей письма.
- Переменная - text
- Значение - выражение [text1]+endline+[text2]+endline+[text3]
Компонент "Ув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
Компонент "Определяем номер". Анализирует текст письма на предмет нахождения кодовой фразы "позвоните мне на номер" и выделяет все рядом стоящие цифры с помощью регулярных выражений.
- Документ - переменная text
- Алгоритм - регулярные выражения
- Поисковый запрос - позвоните мне на номер[\s]+([0-9]+)
- Функция - Содержимое
- Номер элемента - 0
- Результат в переменную - переменная number (строковая)
Компонент "Номер определился?". Проверяет переменную number на содержание в ней номера телефона клиента. Если строка пустая, то сценарий заканчивается.
- Аргумент 1 - переменная number
- Аргумент 2 - пустая строка
- Тип сравнения - =
Компонент "Оповещаем оператора". Если переменная number не пустая, то эта информация выводится администратору для контроля и отладки.
- Текст - выражение
'Задание на звонок с письма:'+endline+[number]
Компонент "Коммутация". Соединяет пользователя из группового номера 105 и абонента.
- Абоненты А - строка 105
- Абоненты Б - переменная number
- Последовательность - Сначала А, потом Б
- CallerId для A - строка Вызов с письма
ВНИМАНИЕ: Сценарий можно улучшить, добавив более строгую проверку номера, например, на количество цифр и маршрутизируя звонок в определенные линии. Однако, эта доработка не является принципиальной в рамках данного урока. Более того, при массовом приеме заявок с сайта рекомендуется сделать цикл по почтовому ящику.
Создание служебной задачи
Созданный сценарий необходимо запускать хотя бы раз в минуту для быстрого реагирования на поступающие заявки от клиентов. Oktell позволяет сделать это автоматически с помощью сервиса служебных задач. Фактически, вы назначаете сценарий на служебную задачу, которая после активации с некоторым периодом начинает его запускать.
1. Перейдите в модуль Администрирование/Общие настройки. Откройте вкладку "Служебные задачи".
2. Для создания служебной задачи нажмите "Добавить"
3. Настройте задание. Введите следующие параметры:
- Название - наименование задания. В примере "Звонок с сайта".
- Служебный сценарий - Выберите нужный служебный сценарий из списка. В примере "Урок 23".
- Параметр запуска - При необходимости можно указать стартовый параметр. В примере не указан
- Тип запуска - существуют три варианта запуска
- Однократный в указанное время позволяет запустить сценарий отложенно в указанное время.
- Периодический запуск - наиболее распространенный вариант, позволяет запускать сценарий с некоторым периодом.
- При запуске сервера - вариант, который, как правило, применяется для выставления каких-либо первоначальных глобальных переменных, добавления динамических объектов карты сети или уведомления сторонних систем.
В примере выбран "Периодический".
Следующие настройки приведены только для периодического запуска:
- Период актуальности - интервал дат, в течении которого можно запускать данный сценарий. В примере "12.08.2014 - 12.08.2015"
- Запускать с интервалом - период запуска сценария. В примере "Раз в минуту"
- Расписание - расписание задачи для запуска сценария. В примере будние дни с 10 до 16.
ВНИМАНИЕ: Все поля обязательны для заполнения, без этого задача не запустится.
4. После ввода настроек нажмите "Сохранить".
5. Для активации задачи установите крестик напротив данной задачи.
Скачать сценарий: Урок23.oscr
Поздравляем! Теперь вы умеете создавать служебные задачи и производить периодический запуск сценариев. Можете переходить к следующему уроку.
Техническая документация: Служебные задачи и Общие компоненты сценариев
Вопросы и задания
- Для чего нужны служебные задачи? Какие функции они выполняют?
- Реализуйте систему учета опозданий сотрудников. Воспользуйтесь статьей Учет опозданий сотрудников.
- Создайте служебную задачу для контроля курса доллара. Например, каждую минуту запускайте служебный сценарий, который будет уточнять курс доллара. При изменении валюты, сценарий будет дозваниваться до вас и проигрывать новое значение.
- Реализуйте ежедневную отправку отчетов себе на электронный ящик. В качестве отчета рассчитывайте и передавайте число входящих звонков, число исходящих звонков, число внутренних звонков.
Наверх | К предыдущему уроку | К следующему уроку |