Урок 17 Маршрутизация звонка — различия между версиями
Строка 4: | Строка 4: | ||
В этом уроке разбирается маршрутизация звонка в IVR-сценарии. В статье подробно описываются компоненты ветвления и переключения, разбираются переменные и выражения в '''Oktell'''. | В этом уроке разбирается маршрутизация звонка в IVR-сценарии. В статье подробно описываются компоненты ветвления и переключения, разбираются переменные и выражения в '''Oktell'''. | ||
+ | |||
+ | ===Общая информация=== | ||
'''Маршрутизация звонка''' - процесс определения маршрута обработки звонка на основании некоторых условий. Алгоритм сценария определяет маршрут прохождения вызова в зависимости от текущего значения переменных. | '''Маршрутизация звонка''' - процесс определения маршрута обработки звонка на основании некоторых условий. Алгоритм сценария определяет маршрут прохождения вызова в зависимости от текущего значения переменных. | ||
Строка 19: | Строка 21: | ||
* значения, полученные путем SQL запросов | * значения, полученные путем SQL запросов | ||
− | По каждому из параметров (в Oktell их порядка 40) можно маршрутизировать звонок в зависимости от поставленных задач. | + | По каждому из параметров (в Oktell их порядка 40) можно маршрутизировать звонок в зависимости от поставленных задач. Для ветвления сценария используются компоненты "Сравнение" и "Меню". |
'''IVR-сценарий''' в процессе выполнения должен закончиться одним из двух вариантов: | '''IVR-сценарий''' в процессе выполнения должен закончиться одним из двух вариантов: | ||
+ | |||
*'''Соединить с абонентом.''' В качестве абонента может выступать внешний номер или пользователь системы. В конце сценария используется компонент "'''Стоп'''". | *'''Соединить с абонентом.''' В качестве абонента может выступать внешний номер или пользователь системы. В конце сценария используется компонент "'''Стоп'''". | ||
*'''Выполнить какое либо действие и завершиться.''' Например, проиграть звуковое оповещение, записать DTMF-символ в базу данных и т.д. В конце сценария используется компонент "'''Разрыв связи'''". | *'''Выполнить какое либо действие и завершиться.''' Например, проиграть звуковое оповещение, записать DTMF-символ в базу данных и т.д. В конце сценария используется компонент "'''Разрыв связи'''". | ||
− | ''' | + | |
+ | ===Создание сценария=== | ||
+ | |||
+ | '''Задача:''' Компания работает с 9 до 18 часов. Маршрутизацию звонка предлагается проводить по текущему времени. Если входящий звонок попадает в график работы, то '''IVR''' переключает его на секретаря (исход - соединение с сотрудником). Если входящий звонок поступает вне этого периода времени, то ему проговаривается звуковое оповещение и связь разрывается (исход - разрыв связи). | ||
+ | |||
+ | '''1.''' Создаем новый IVR сценарий. | ||
+ | |||
+ | '''2.''' Компоненты Старт и Поднять трубку разбирались на ''уроке 16''. | ||
+ | |||
+ | '''3.''' Для того, чтобы маршрутизировать звонок по времени, необходимо записать текущее время в переменную. Для этого используется компонент Присвоение. | ||
+ | |||
+ | В поле "'''Переменная'''" в инспекторе объектов необходимо выбрать переменную, в которую мы хотим присвоить значение. Нажмите "'''...'''". Откроется список со всеми переменными, созданными в сценарии. В каждом сценарии есть несколько служебных переменных для определения некоторых параметров звонка. Также вы можете создать свои пользовательские переменные. Можно создать: | ||
+ | * '''Числовая''' - используется для хранения чисел. Используется редко, так как можно создать строковую переменную и при необходимости преобразовывать ее к числу (преобразование '''NUM([строка])'''). | ||
+ | * '''Строковая''' - наиболее распространенный формат хранения переменных. Может быть преобразован к любому другому формату. | ||
+ | * '''Дата/Время''' - используется для хранения даты и времени. | ||
+ | * '''Поле таблицы''' - используется для связи с таблицей абонентов в задачах. Будут рассматриваться в следующих уроках. | ||
+ | |||
+ | Переменные по типу размещения бывают: | ||
+ | * '''Локальные''' - переменная этого типа доступна только в данном сценарии. | ||
+ | * '''Сессионные''' - переменная этого типа доступна во всех сценариях, выполняющихся в рамках данной коммутации. Используются для передачи переменных между сценариями. | ||
+ | * '''Глобальные''' - переменная этого типа доступна во всех сценариях в системе. Используется для хранения единых значений, подсчета переходов по некоторой ветке и других общесистемных задач. | ||
+ | |||
+ | Для создания переменной нажмите "Добавить". В открывшемся окне "'''Создание переменной'''" введите | ||
+ | |||
+ | * Название переменной - В примере, '''текущий_час'''. | ||
+ | <span style="color:red;"> ВНИМАНИЕ: Названия переменных регистрозависимы. Переменные "дата", "Дата" и "ДАТА" - разные переменные! | ||
+ | * '''Тип переменной''' - В примере, '''Строковая''' | ||
+ | |||
+ | * '''Тип размещения''' - В примере, '''Локальная''' | ||
+ | |||
+ | Нажмите '''ОК'''. В списке '''Выбор переменной''' кликните два раза по созданной переменной или выбрав переменную нажмите '''ОК'''. | ||
+ | |||
+ | '''4.''' В поле "'''Значение'''" выберите аргумент, который будет присвоен в переменную "'''текущий_час'''". Аргументом может являться: | ||
+ | * '''Константа''' - некоторое постоянное значение. Можно сразу записывать в инспекторе объектов, не открывая данное окно. | ||
+ | * '''Переменная''' - по сути, переприсваивание. Значение выбранной переменной будет записано в текущую. | ||
+ | * '''Выражение''' - последовательность действий, оперирующая с константами и переменными. Например, ''''Текст'+[переменная]'''. | ||
+ | |||
+ | <span style="color:red;"> ВНИМАНИЕ: Если вы захотите исправить выражение непосредственно из свойств компонента, '''не пользуясь редактором выражений''' - ваше выражение '''станет строкой''' и сценарий будет работать некорректно! | ||
+ | |||
+ | * '''Функция''' - некоторое значение, определяемое системой. | ||
+ | |||
+ | Так как, в примере, мы будем маршрутизировать звонок в зависимости от часа, выберите аргумент "'''Функция'''" - "'''Текущий час'''". Нажмите '''ОК'''. | ||
+ | |||
+ | '''5.''' Выведите уведомление, в котором будет показываться чему равен текущий час. Для этого ставим компонент "Уведомление". Выберите следующие поля: | ||
+ | * '''Адресат''' - выберите своего пользователя. | ||
+ | * '''Текст''' - Выражение: | ||
+ | 'Текущий час = '+[текущий_час] | ||
+ | |||
+ | <span style="color:red;"> ВНИМАНИЕ: Для проверка выражения нажмите "'''Проверить корректность выражения'''". | ||
+ | |||
+ | '''6.''' Переходим к маршрутизации. Воспользуемся компонентом сравнение. Если текущий час меньше 9, то офис не работает. Если текущий час больше 9, переходим к следующему сравнению. | ||
+ | |||
+ | * '''Аргумент 1''' - переменная "'''текущий_час'''". | ||
+ | * '''Аргумент 2''' - в поле впишите сразу 9. Это значение будет являться строкой. | ||
+ | * '''Тип сравнения''' - меньше "'''<'''" | ||
+ | |||
+ | '''7.''' Итак, если текущий час меньше 9 (ветка - '''Правда'''), поставьте уведомление с фразой "офис не работает" и после него компонент "Разрыв связи". Чтобы провести соединение по ветке '''Правда''' от компонента сравнение, зажмите CTRL и '''левой кнопкой мыши''' проведите соединение. | ||
+ | |||
+ | <span style="color:red;"> ВНИМАНИЕ: Любую ветку компонента всегда можно задать вручную через соответствующее свойство, однако это занимает больше времени. | ||
+ | |||
+ | '''8.''' Если текущий час больше 9 (ветка - '''Ложь'''), то переходим к следующему сравнению - текущий час больше 18? | ||
+ | |||
+ | * '''Аргумент 1''' - переменная "'''текущий_час'''". | ||
+ | * '''Аргумент 2''' - "18". | ||
+ | * '''Тип сравнения''' - меньше "'''>'''" | ||
+ | |||
+ | Чтобы провести соединение по ветке '''Ложь''' от компонента сравнение, зажмите CTRL и '''правой кнопкой мыши''' проведите соединение. | ||
+ | |||
+ | '''9.''' У следующего сравнения пользуемся тем же способом. Если время больше 9 (ветка - '''Правда'''), переходим на '''Уведомление'''. Если меньше 18 (но больше 9, как следует из предыдущего сравнения), то переходим на соединение с пользователем. | ||
+ | |||
+ | '''10.''' Компонент "Переключение на номер" - является основным компонентом для соединения с пользователями Oktell. Для работы укажите следующие поля: | ||
+ | |||
+ | * Назначение - Внутрь | ||
+ | * Номер - внутренний номер сотрудника (групповой, быстрый номер). В примере, 101. | ||
+ | * Очередь ожидания - Да. Если сотрудник в разговоре, то вы попадете в очередь ожидания. Если очередь ожидания будет выключена, а сотрудник будет в разговоре, то вы перейдете по ветке занято. | ||
+ | |||
+ | После переключения поставьте компонент "Стоп". Этого недостаточно, необходимо также обработать остальные ветки, например, что делать если сотрудник недоступен, занят или отсутствует. | ||
+ | |||
+ | <span style="color:red;"> ВНИМАНИЕ: Если эти ветки не указаны, то, по умолчанию, переход идет на "Разрыв связи". | ||
+ | |||
+ | Чтобы определить эти ветки зажмите цифру "'''2'''" и проведите соединение до компонента "'''Разрыв связи'''". Будет проведена ветка "'''Переход, занято'''". Проведите линии зажав цифры "'''3'''"-"'''6'''". Переходы автоматически проставятся в свойствах компонента. |
Версия 08:08, 31 января 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". Переходы автоматически проставятся в свойствах компонента.