Урок 17 Маршрутизация звонка — различия между версиями
(Новая страница: «Наверх __TOC__ В этом уроке разбирается маршрутизация звонка в IVR-сценарии. В статье ...») |
|||
(не показано 29 промежуточных версии этого же участника) | |||
Строка 1: | Строка 1: | ||
− | [[Уроки|Наверх]] | + | {|cellpadding="10" cellspacing="0" border="0" |
+ | | [[Уроки | Наверх]] | ||
+ | | [[Урок 16 Простейший IVR сценарий | К предыдущему уроку]] | ||
+ | | [[Урок_18_Голосовое_взаимодействие| К следующему уроку]] | ||
+ | |- | ||
+ | |} | ||
__TOC__ | __TOC__ | ||
− | В этом уроке разбирается маршрутизация звонка в IVR-сценарии. В статье подробно описываются компоненты ветвления и переключения, разбираются переменные и выражения в '''Oktell'''. | + | В этом уроке разбирается маршрутизация звонка в '''IVR-сценарии'''. В статье подробно описываются компоненты ветвления и переключения, разбираются переменные и выражения в '''Oktell'''. |
− | |||
− | IVR-сценарий в процессе выполнения должен закончиться одним из двух вариантов: | + | [[Файл:Урок17-009.png | center]] |
− | + | ||
− | + | ||
+ | ===Общая информация=== | ||
+ | |||
+ | '''Маршрутизация звонка''' - процесс определения маршрута обработки звонка на основании некоторых условий. Алгоритм сценария определяет маршрут прохождения вызова в зависимости от текущего значения переменных. | ||
+ | |||
+ | Значения переменных могут быть определены функциями: | ||
+ | |||
+ | * ID коммутации - уникальный номер каждой коммутации. По этому номеру можно однозначно восстановить все параметры коммутации (дата/время звонка, абоненты и прочее) | ||
+ | * номер абонента ('''CallerID''') - номер инициатора звонка. Например, при входящем звонке - это номер того, кто позвонил. | ||
+ | * набираемый номер ('''CalledID''') - номер адресата звонка. Например, при входящем звонке - это ваш номер или абонента, кому позвонили. | ||
+ | * тип, номер линии | ||
+ | * дата, время, день недели | ||
+ | * значение очереди | ||
+ | * порядка 40 определяемых системой значений | ||
+ | * значения DTMF сигналов | ||
+ | * значения, полученные путем SQL запросов | ||
+ | |||
+ | По каждому из параметров (в Oktell их порядка 40) можно маршрутизировать звонок в зависимости от поставленных задач. Для ветвления сценария используются компоненты "'''Сравнение'''" и "'''Меню'''". | ||
+ | |||
+ | '''IVR-сценарий''' в процессе выполнения должен закончиться одним из двух вариантов: | ||
+ | |||
+ | *'''Соединить с абонентом.''' В качестве абонента может выступать внешний номер или пользователь системы. В конце сценария используется компонент "'''Стоп'''". | ||
+ | *'''Выполнить какое либо действие и завершиться.''' Например, проиграть звуковое оповещение, записать '''DTMF'''-символ в базу данных и т.д. В конце сценария используется компонент "'''Обрыв связи'''". | ||
+ | |||
+ | |||
+ | ===Создание сценария=== | ||
+ | |||
+ | '''Задача:''' Компания работает с 9 до 18 часов. Маршрутизацию звонка предлагается проводить по текущему времени. Если входящий звонок попадает в график работы, то '''IVR''' переключает его на секретаря (исход - соединение с сотрудником). Если входящий звонок поступает вне этого периода времени, то ему проговаривается звуковое оповещение и связь разрывается (исход - Обрыв связи). | ||
+ | |||
+ | '''1.''' Создаем новый IVR сценарий. | ||
+ | |||
+ | '''2.''' Компоненты Старт и Поднять трубку разбирались на ''уроке 16''. | ||
+ | |||
+ | '''3.''' Для того, чтобы маршрутизировать звонок по времени, необходимо записать текущее время в переменную. Для этого используется компонент Присвоение. | ||
+ | |||
+ | В поле "'''Переменная'''" в инспекторе объектов необходимо выбрать переменную, в которую мы хотим присвоить значение. Нажмите "'''...'''". Откроется список со всеми переменными, созданными в сценарии. В каждом сценарии есть несколько служебных переменных для определения некоторых параметров звонка. Также вы можете создать свои пользовательские переменные. Можно создать: | ||
+ | * '''Числовая''' - используется для хранения чисел. Используется редко, так как можно создать строковую переменную и при необходимости преобразовывать ее к числу (преобразование '''NUM([строка])'''). | ||
+ | * '''Строковая''' - наиболее распространенный формат хранения переменных. Может быть преобразован к любому другому формату. | ||
+ | * '''Дата/Время''' - используется для хранения даты и времени. | ||
+ | * '''Поле таблицы''' - используется для связи с таблицей абонентов в задачах. Будут рассматриваться в следующих уроках. | ||
+ | |||
+ | Переменные по типу размещения бывают: | ||
+ | * '''Локальные''' - переменная этого типа доступна только в данном сценарии. | ||
+ | * '''Сессионные''' - переменная этого типа доступна во всех сценариях, выполняющихся в рамках данной коммутации. Используются для передачи переменных между сценариями. | ||
+ | * '''Глобальные''' - переменная этого типа доступна во всех сценариях в системе. Используется для хранения единых значений, подсчета переходов по некоторой ветке и других общесистемных задач. | ||
+ | |||
+ | Для создания переменной нажмите "Добавить". В открывшемся окне "'''Создание переменной'''" введите | ||
+ | |||
+ | * Название переменной - В примере, '''текущий_час'''. | ||
+ | <span style="color:red;"> ВНИМАНИЕ: Названия переменных регистрозависимы. Переменные "дата", "Дата" и "ДАТА" - разные переменные! | ||
+ | * '''Тип переменной''' - В примере, '''Строковая''' | ||
+ | |||
+ | * '''Тип размещения''' - В примере, '''Локальная''' | ||
+ | |||
+ | Нажмите '''ОК'''. В списке '''Выбор переменной''' кликните два раза по созданной переменной или выбрав переменную нажмите '''ОК'''. | ||
+ | |||
+ | |||
+ | [[Файл:Урок17-001.png| 800px | center]] | ||
+ | |||
+ | |||
+ | '''4.''' В поле "'''Значение'''" выберите аргумент, который будет присвоен в переменную "'''текущий_час'''". Аргументом может являться: | ||
+ | * '''Константа''' - некоторое постоянное значение. Можно сразу записывать в инспекторе объектов, не открывая данное окно. | ||
+ | * '''Переменная''' - по сути, переприсваивание. Значение выбранной переменной будет записано в текущую. | ||
+ | * '''Выражение''' - последовательность действий, оперирующая с константами и переменными. Например, ''''Текст'+[переменная]'''. | ||
+ | |||
+ | <span style="color:red;"> ВНИМАНИЕ: Если вы захотите исправить выражение непосредственно из свойств компонента, '''не пользуясь редактором выражений''' - ваше выражение '''станет строкой''' и сценарий будет работать некорректно! | ||
+ | |||
+ | * '''Функция''' - некоторое значение, определяемое системой. | ||
+ | |||
+ | Так как, в примере, мы будем маршрутизировать звонок в зависимости от часа, выберите аргумент "'''Функция'''" - "'''Текущий час'''". Нажмите '''ОК'''. | ||
+ | |||
+ | |||
+ | <center>[[Файл:Урок17-002.png |600px ]][[Файл:Урок17-003.png]] </center> | ||
+ | |||
+ | |||
+ | '''5.''' Выведите уведомление, в котором будет показываться чему равен текущий час. Для этого ставим компонент "Уведомление". Выберите следующие поля: | ||
+ | * '''Адресат''' - выберите своего пользователя. | ||
+ | * '''Текст''' - Выражение: | ||
+ | 'Текущий час = '+[текущий_час] | ||
+ | |||
+ | <span style="color:red;"> ВНИМАНИЕ: Для проверка выражения нажмите "'''Проверить корректность выражения'''". | ||
+ | |||
+ | |||
+ | [[Файл:Урок17-004.png| 700px|center ]] | ||
+ | |||
+ | |||
+ | '''6.''' Переходим к маршрутизации. Воспользуемся компонентом '''Сравнение'''. Если текущий час меньше 9, то офис не работает. Если текущий час больше 9, переходим к следующему сравнению. | ||
+ | |||
+ | * '''Аргумент 1''' - переменная "'''текущий_час'''". | ||
+ | * '''Аргумент 2''' - в поле впишите сразу "'''9'''". Это значение будет являться строкой. | ||
+ | * '''Тип сравнения''' - меньше "'''<'''" | ||
+ | |||
+ | |||
+ | [[Файл:Урок17-005.png|center ]] | ||
+ | |||
+ | |||
+ | '''7.''' Итак, если текущий час меньше 9 (ветка - '''Правда'''), поставьте уведомление с фразой "офис не работает" и после него компонент "Обрыв связи". Чтобы провести соединение по ветке '''Правда''' от компонента сравнение, зажмите '''CTRL''' и '''левой кнопкой мыши''' проведите соединение. | ||
+ | |||
+ | <span style="color:red;"> ВНИМАНИЕ: Любую ветку компонента всегда можно задать вручную через соответствующее свойство, однако это занимает больше времени. | ||
+ | |||
+ | |||
+ | [[Файл:Урок17-006.png|center ]] | ||
+ | |||
+ | |||
+ | '''8.''' Если текущий час больше 9 (ветка - '''Ложь'''), то переходим к следующему сравнению - текущий час больше 18? | ||
+ | |||
+ | * '''Аргумент 1''' - переменная "'''текущий_час'''". | ||
+ | * '''Аргумент 2''' - "'''18'''". | ||
+ | * '''Тип сравнения''' - меньше "'''>'''" | ||
+ | |||
+ | Чтобы провести соединение по ветке '''Ложь''' от компонента сравнение, зажмите '''CTRL''' и '''правой кнопкой мыши''' проведите соединение. | ||
+ | |||
+ | |||
+ | [[Файл:Урок17-007.png|center ]] | ||
+ | |||
+ | |||
+ | '''9.''' У следующего сравнения пользуемся тем же способом. Если время больше 9 (ветка - '''Правда'''), переходим на '''Уведомление'''. Если меньше 18 (но больше 9, как следует из предыдущего сравнения), то переходим на соединение с пользователем. | ||
+ | |||
+ | '''10.''' Компонент "'''Переключение на номер'''" - является основным компонентом для соединения с пользователями '''Oktell'''. Для работы укажите следующие поля: | ||
+ | |||
+ | * '''Назначение''' - Внутрь | ||
+ | * '''Номер''' - внутренний номер сотрудника (групповой, быстрый номер). В примере, 101. | ||
+ | * '''Очередь ожидания''' - '''Да'''. Если сотрудник в разговоре, то вы попадете в очередь ожидания. Если очередь ожидания будет выключена, а сотрудник будет в разговоре, то вы перейдете по ветке занято. | ||
+ | |||
+ | После переключения поставьте компонент "'''Стоп'''". Этого недостаточно, необходимо также обработать остальные ветки, например, что делать если сотрудник недоступен, занят или отсутствует. | ||
+ | |||
+ | <span style="color:red;"> ВНИМАНИЕ: Если эти ветки не указаны, то, по умолчанию, переход идет на "'''Обрыв связи'''". | ||
+ | |||
+ | Чтобы определить эти ветки зажмите цифру "'''2'''" и проведите соединение до компонента "'''Обрыв связи'''". Будет проведена ветка "'''Переход, занято'''". Проведите линии зажав цифры "'''3'''"-"'''6'''". Переходы автоматически проставятся в свойствах компонента. | ||
+ | |||
+ | Вообще говоря, при создании рабочего сценария эти ветки необходимо обрабатывать с помощью других переключений или воспроизведений. Если делать просто "'''Обрыв связи'''", как в этом уроке, то клиенты не будут понимать в чем дело и их надо оповещать. Данный сценарий был создан исключительно в обучающих целях. | ||
+ | |||
+ | |||
+ | [[Файл:Урок17-008.png|center ]] | ||
+ | |||
+ | |||
+ | '''11.''' Перейдите на вкладку "'''Сохранение'''" и сохраните ваш сценарий "'''На сервер'''". Протестируйте ваш сценарий, как было описано в уроке 16. | ||
+ | |||
+ | '''Скачать сценарий:''' [http://wiki.oktell.ru/images/8/87/%D0%A3%D1%80%D0%BE%D0%BA_17.zip Урок17.zip] | ||
+ | |||
+ | '''Поздравляем!''' Вы научились маршрутизировать звонок в IVR-сценарии. Можете переходить к следующему уроку. | ||
+ | |||
+ | '''Техническая документация:''' | ||
+ | * [[Общие компоненты сценариев]] и [[Компоненты сценариев IVR]] | ||
+ | * [[Аргументы]], [[Переменные]], [[Выражения]], [[Аргументы]], [[Функции]], [[Правило включения типов]] | ||
+ | |||
+ | ===Вопросы и задания=== | ||
+ | |||
+ | * Внимательно изучите техническую документацию связанную с переменными. | ||
+ | |||
+ | * Прочитайте и опробуйте статью [[Маршрутизация звонка на основании параметров]] | ||
+ | |||
+ | * Реализуйте сценарий маршрутизации по имени пользователя: при звонке на внутренний номер запуска IVR определяется имя пользователя, если оно совпадает с вашим вам выводится уведомление "Здравствуйте" и происходит соединение с некоторым сотрудником. Если на сценарий IVR позвонит другой пользователь выведите уведомление этому пользователю с его именем и внутренним номером (воспользуйтесь функциями), затем происходит соединение с вашим пользователем. | ||
+ | |||
+ | {|cellpadding="10" cellspacing="0" border="0" | ||
+ | | [[Уроки | Наверх]] | ||
+ | | [[Урок_16_Простейший_IVR_сценарий | К предыдущему уроку]] | ||
+ | | [[Урок_18_Голосовое_взаимодействие| К следующему уроку]] | ||
+ | |- | ||
+ | |} |
Текущая версия на 13:57, 14 марта 2014
Наверх | К предыдущему уроку | К следующему уроку |
В этом уроке разбирается маршрутизация звонка в IVR-сценарии. В статье подробно описываются компоненты ветвления и переключения, разбираются переменные и выражения в Oktell.
Общая информация
Маршрутизация звонка - процесс определения маршрута обработки звонка на основании некоторых условий. Алгоритм сценария определяет маршрут прохождения вызова в зависимости от текущего значения переменных.
Значения переменных могут быть определены функциями:
- ID коммутации - уникальный номер каждой коммутации. По этому номеру можно однозначно восстановить все параметры коммутации (дата/время звонка, абоненты и прочее)
- номер абонента (CallerID) - номер инициатора звонка. Например, при входящем звонке - это номер того, кто позвонил.
- набираемый номер (CalledID) - номер адресата звонка. Например, при входящем звонке - это ваш номер или абонента, кому позвонили.
- тип, номер линии
- дата, время, день недели
- значение очереди
- порядка 40 определяемых системой значений
- значения DTMF сигналов
- значения, полученные путем SQL запросов
По каждому из параметров (в Oktell их порядка 40) можно маршрутизировать звонок в зависимости от поставленных задач. Для ветвления сценария используются компоненты "Сравнение" и "Меню".
IVR-сценарий в процессе выполнения должен закончиться одним из двух вариантов:
- Соединить с абонентом. В качестве абонента может выступать внешний номер или пользователь системы. В конце сценария используется компонент "Стоп".
- Выполнить какое либо действие и завершиться. Например, проиграть звуковое оповещение, записать DTMF-символ в базу данных и т.д. В конце сценария используется компонент "Обрыв связи".
Создание сценария
Задача: Компания работает с 9 до 18 часов. Маршрутизацию звонка предлагается проводить по текущему времени. Если входящий звонок попадает в график работы, то IVR переключает его на секретаря (исход - соединение с сотрудником). Если входящий звонок поступает вне этого периода времени, то ему проговаривается звуковое оповещение и связь разрывается (исход - Обрыв связи).
1. Создаем новый IVR сценарий.
2. Компоненты Старт и Поднять трубку разбирались на уроке 16.
3. Для того, чтобы маршрутизировать звонок по времени, необходимо записать текущее время в переменную. Для этого используется компонент Присвоение.
В поле "Переменная" в инспекторе объектов необходимо выбрать переменную, в которую мы хотим присвоить значение. Нажмите "...". Откроется список со всеми переменными, созданными в сценарии. В каждом сценарии есть несколько служебных переменных для определения некоторых параметров звонка. Также вы можете создать свои пользовательские переменные. Можно создать:
- Числовая - используется для хранения чисел. Используется редко, так как можно создать строковую переменную и при необходимости преобразовывать ее к числу (преобразование NUM([строка])).
- Строковая - наиболее распространенный формат хранения переменных. Может быть преобразован к любому другому формату.
- Дата/Время - используется для хранения даты и времени.
- Поле таблицы - используется для связи с таблицей абонентов в задачах. Будут рассматриваться в следующих уроках.
Переменные по типу размещения бывают:
- Локальные - переменная этого типа доступна только в данном сценарии.
- Сессионные - переменная этого типа доступна во всех сценариях, выполняющихся в рамках данной коммутации. Используются для передачи переменных между сценариями.
- Глобальные - переменная этого типа доступна во всех сценариях в системе. Используется для хранения единых значений, подсчета переходов по некоторой ветке и других общесистемных задач.
Для создания переменной нажмите "Добавить". В открывшемся окне "Создание переменной" введите
- Название переменной - В примере, текущий_час.
ВНИМАНИЕ: Названия переменных регистрозависимы. Переменные "дата", "Дата" и "ДАТА" - разные переменные!
- Тип переменной - В примере, Строковая
- Тип размещения - В примере, Локальная
Нажмите ОК. В списке Выбор переменной кликните два раза по созданной переменной или выбрав переменную нажмите ОК.
4. В поле "Значение" выберите аргумент, который будет присвоен в переменную "текущий_час". Аргументом может являться:
- Константа - некоторое постоянное значение. Можно сразу записывать в инспекторе объектов, не открывая данное окно.
- Переменная - по сути, переприсваивание. Значение выбранной переменной будет записано в текущую.
- Выражение - последовательность действий, оперирующая с константами и переменными. Например, 'Текст'+[переменная].
ВНИМАНИЕ: Если вы захотите исправить выражение непосредственно из свойств компонента, не пользуясь редактором выражений - ваше выражение станет строкой и сценарий будет работать некорректно!
- Функция - некоторое значение, определяемое системой.
Так как, в примере, мы будем маршрутизировать звонок в зависимости от часа, выберите аргумент "Функция" - "Текущий час". Нажмите ОК.
5. Выведите уведомление, в котором будет показываться чему равен текущий час. Для этого ставим компонент "Уведомление". Выберите следующие поля:
- Адресат - выберите своего пользователя.
- Текст - Выражение:
'Текущий час = '+[текущий_час]
ВНИМАНИЕ: Для проверка выражения нажмите "Проверить корректность выражения".
6. Переходим к маршрутизации. Воспользуемся компонентом Сравнение. Если текущий час меньше 9, то офис не работает. Если текущий час больше 9, переходим к следующему сравнению.
- Аргумент 1 - переменная "текущий_час".
- Аргумент 2 - в поле впишите сразу "9". Это значение будет являться строкой.
- Тип сравнения - меньше "<"
7. Итак, если текущий час меньше 9 (ветка - Правда), поставьте уведомление с фразой "офис не работает" и после него компонент "Обрыв связи". Чтобы провести соединение по ветке Правда от компонента сравнение, зажмите CTRL и левой кнопкой мыши проведите соединение.
ВНИМАНИЕ: Любую ветку компонента всегда можно задать вручную через соответствующее свойство, однако это занимает больше времени.
8. Если текущий час больше 9 (ветка - Ложь), то переходим к следующему сравнению - текущий час больше 18?
- Аргумент 1 - переменная "текущий_час".
- Аргумент 2 - "18".
- Тип сравнения - меньше ">"
Чтобы провести соединение по ветке Ложь от компонента сравнение, зажмите CTRL и правой кнопкой мыши проведите соединение.
9. У следующего сравнения пользуемся тем же способом. Если время больше 9 (ветка - Правда), переходим на Уведомление. Если меньше 18 (но больше 9, как следует из предыдущего сравнения), то переходим на соединение с пользователем.
10. Компонент "Переключение на номер" - является основным компонентом для соединения с пользователями Oktell. Для работы укажите следующие поля:
- Назначение - Внутрь
- Номер - внутренний номер сотрудника (групповой, быстрый номер). В примере, 101.
- Очередь ожидания - Да. Если сотрудник в разговоре, то вы попадете в очередь ожидания. Если очередь ожидания будет выключена, а сотрудник будет в разговоре, то вы перейдете по ветке занято.
После переключения поставьте компонент "Стоп". Этого недостаточно, необходимо также обработать остальные ветки, например, что делать если сотрудник недоступен, занят или отсутствует.
ВНИМАНИЕ: Если эти ветки не указаны, то, по умолчанию, переход идет на "Обрыв связи".
Чтобы определить эти ветки зажмите цифру "2" и проведите соединение до компонента "Обрыв связи". Будет проведена ветка "Переход, занято". Проведите линии зажав цифры "3"-"6". Переходы автоматически проставятся в свойствах компонента.
Вообще говоря, при создании рабочего сценария эти ветки необходимо обрабатывать с помощью других переключений или воспроизведений. Если делать просто "Обрыв связи", как в этом уроке, то клиенты не будут понимать в чем дело и их надо оповещать. Данный сценарий был создан исключительно в обучающих целях.
11. Перейдите на вкладку "Сохранение" и сохраните ваш сценарий "На сервер". Протестируйте ваш сценарий, как было описано в уроке 16.
Скачать сценарий: Урок17.zip
Поздравляем! Вы научились маршрутизировать звонок в IVR-сценарии. Можете переходить к следующему уроку.
Техническая документация:
- Общие компоненты сценариев и Компоненты сценариев IVR
- Аргументы, Переменные, Выражения, Аргументы, Функции, Правило включения типов
Вопросы и задания
- Внимательно изучите техническую документацию связанную с переменными.
- Прочитайте и опробуйте статью Маршрутизация звонка на основании параметров
- Реализуйте сценарий маршрутизации по имени пользователя: при звонке на внутренний номер запуска IVR определяется имя пользователя, если оно совпадает с вашим вам выводится уведомление "Здравствуйте" и происходит соединение с некоторым сотрудником. Если на сценарий IVR позвонит другой пользователь выведите уведомление этому пользователю с его именем и внутренним номером (воспользуйтесь функциями), затем происходит соединение с вашим пользователем.
Наверх | К предыдущему уроку | К следующему уроку |