Урок 17 Маршрутизация звонка — различия между версиями

Материал из Oktell
Перейти к: навигация, поиск
 
(не показано 12 промежуточных версии этого же участника)
Строка 2: Строка 2:
 
| [[Уроки | Наверх]]
 
| [[Уроки | Наверх]]
 
| [[Урок 16 Простейший IVR сценарий | К предыдущему уроку]]
 
| [[Урок 16 Простейший IVR сценарий | К предыдущему уроку]]
|  
+
| [[Урок_18_Голосовое_взаимодействие| К следующему уроку]]
 
|-
 
|-
 
|}
 
|}
Строка 9: Строка 9:
  
 
В этом уроке разбирается маршрутизация звонка в '''IVR-сценарии'''. В статье подробно описываются компоненты ветвления и переключения, разбираются переменные и выражения в '''Oktell'''.  
 
В этом уроке разбирается маршрутизация звонка в '''IVR-сценарии'''. В статье подробно описываются компоненты ветвления и переключения, разбираются переменные и выражения в '''Oktell'''.  
 +
 +
 +
[[Файл:Урок17-009.png | center]]
 +
  
 
===Общая информация===
 
===Общая информация===
Строка 17: Строка 21:
  
 
* ID коммутации - уникальный номер каждой коммутации. По этому номеру можно однозначно восстановить все параметры коммутации (дата/время звонка, абоненты и прочее)  
 
* ID коммутации - уникальный номер каждой коммутации. По этому номеру можно однозначно восстановить все параметры коммутации (дата/время звонка, абоненты и прочее)  
* номер абонента (CallerID) - номер инициатора звонка. Например, при входящем звонке - это номер того, кто позвонил.  
+
* номер абонента ('''CallerID''') - номер инициатора звонка. Например, при входящем звонке - это номер того, кто позвонил.  
* набираемый номер (CalledID) - номер адресата звонка. Например, при входящем звонке - это ваш номер или абонента, кому позвонили.  
+
* набираемый номер ('''CalledID''') - номер адресата звонка. Например, при входящем звонке - это ваш номер или абонента, кому позвонили.  
 
* тип, номер линии
 
* тип, номер линии
 
* дата, время, день недели
 
* дата, время, день недели
Строка 26: Строка 30:
 
* значения, полученные путем SQL запросов
 
* значения, полученные путем SQL запросов
  
По каждому из параметров (в Oktell их порядка 40) можно маршрутизировать звонок в зависимости от поставленных задач. Для ветвления сценария используются компоненты "Сравнение" и "Меню".  
+
По каждому из параметров (в Oktell их порядка 40) можно маршрутизировать звонок в зависимости от поставленных задач. Для ветвления сценария используются компоненты "'''Сравнение'''" и "'''Меню'''".  
  
 
'''IVR-сценарий''' в процессе выполнения должен закончиться одним из двух вариантов:
 
'''IVR-сценарий''' в процессе выполнения должен закончиться одним из двух вариантов:
  
 
*'''Соединить с абонентом.''' В качестве абонента может выступать внешний номер или пользователь системы. В конце сценария используется компонент "'''Стоп'''".
 
*'''Соединить с абонентом.''' В качестве абонента может выступать внешний номер или пользователь системы. В конце сценария используется компонент "'''Стоп'''".
*'''Выполнить какое либо действие и завершиться.''' Например, проиграть звуковое оповещение, записать DTMF-символ в базу данных и т.д. В конце сценария используется компонент "'''Разрыв связи'''".
+
*'''Выполнить какое либо действие и завершиться.''' Например, проиграть звуковое оповещение, записать '''DTMF'''-символ в базу данных и т.д. В конце сценария используется компонент "'''Обрыв связи'''".
  
  
 
===Создание сценария===
 
===Создание сценария===
  
'''Задача:''' Компания работает с 9 до 18 часов. Маршрутизацию звонка предлагается проводить по текущему времени. Если входящий звонок попадает в график работы, то '''IVR''' переключает его на секретаря (исход - соединение с сотрудником). Если входящий звонок поступает вне этого периода времени, то ему проговаривается звуковое оповещение и связь разрывается (исход - разрыв связи).
+
'''Задача:''' Компания работает с 9 до 18 часов. Маршрутизацию звонка предлагается проводить по текущему времени. Если входящий звонок попадает в график работы, то '''IVR''' переключает его на секретаря (исход - соединение с сотрудником). Если входящий звонок поступает вне этого периода времени, то ему проговаривается звуковое оповещение и связь разрывается (исход - Обрыв связи).
  
 
'''1.''' Создаем новый IVR сценарий.  
 
'''1.''' Создаем новый IVR сценарий.  
Строка 81: Строка 85:
  
  
<center>[[Файл:Урок17-002.png ]][[Файл:Урок17-003.png]] </center>
+
<center>[[Файл:Урок17-002.png |600px ]][[Файл:Урок17-003.png]] </center>
  
  
Строка 95: Строка 99:
  
  
'''6.''' Переходим к маршрутизации. Воспользуемся компонентом сравнение. Если текущий час меньше 9, то офис не работает. Если текущий час больше 9, переходим к следующему сравнению.
+
'''6.''' Переходим к маршрутизации. Воспользуемся компонентом '''Сравнение'''. Если текущий час меньше 9, то офис не работает. Если текущий час больше 9, переходим к следующему сравнению.
  
 
* '''Аргумент 1''' - переменная "'''текущий_час'''".
 
* '''Аргумент 1''' - переменная "'''текущий_час'''".
* '''Аргумент 2''' - в поле впишите сразу 9. Это значение будет являться строкой.  
+
* '''Аргумент 2''' - в поле впишите сразу "'''9'''". Это значение будет являться строкой.  
 
* '''Тип сравнения''' - меньше "'''<'''"  
 
* '''Тип сравнения''' - меньше "'''<'''"  
 
   
 
   
Строка 105: Строка 109:
  
  
'''7.''' Итак, если текущий час меньше 9 (ветка - '''Правда'''), поставьте уведомление с фразой "офис не работает" и после него компонент "Разрыв связи". Чтобы провести соединение по ветке '''Правда''' от компонента сравнение, зажмите CTRL и '''левой кнопкой мыши''' проведите соединение.  
+
'''7.''' Итак, если текущий час меньше 9 (ветка - '''Правда'''), поставьте уведомление с фразой "офис не работает" и после него компонент "Обрыв связи". Чтобы провести соединение по ветке '''Правда''' от компонента сравнение, зажмите '''CTRL''' и '''левой кнопкой мыши''' проведите соединение.  
  
 
<span style="color:red;"> ВНИМАНИЕ: Любую ветку компонента всегда можно задать вручную через соответствующее свойство, однако это занимает больше времени.
 
<span style="color:red;"> ВНИМАНИЕ: Любую ветку компонента всегда можно задать вручную через соответствующее свойство, однако это занимает больше времени.
Строка 116: Строка 120:
  
 
* '''Аргумент 1''' - переменная "'''текущий_час'''".
 
* '''Аргумент 1''' - переменная "'''текущий_час'''".
* '''Аргумент 2''' - "18".  
+
* '''Аргумент 2''' - "'''18'''".  
 
* '''Тип сравнения''' - меньше "'''>'''"
 
* '''Тип сравнения''' - меньше "'''>'''"
  
Чтобы провести соединение по ветке '''Ложь''' от компонента сравнение, зажмите CTRL и '''правой кнопкой мыши''' проведите соединение.  
+
Чтобы провести соединение по ветке '''Ложь''' от компонента сравнение, зажмите '''CTRL''' и '''правой кнопкой мыши''' проведите соединение.  
 
   
 
   
  
Строка 127: Строка 131:
 
'''9.''' У следующего сравнения пользуемся тем же способом. Если время больше 9 (ветка - '''Правда'''), переходим на '''Уведомление'''. Если меньше 18 (но больше 9, как следует из предыдущего сравнения), то переходим на соединение с пользователем.  
 
'''9.''' У следующего сравнения пользуемся тем же способом. Если время больше 9 (ветка - '''Правда'''), переходим на '''Уведомление'''. Если меньше 18 (но больше 9, как следует из предыдущего сравнения), то переходим на соединение с пользователем.  
  
'''10.''' Компонент "'''Переключение на номер'''" - является основным компонентом для соединения с пользователями Oktell. Для работы укажите следующие поля:
+
'''10.''' Компонент "'''Переключение на номер'''" - является основным компонентом для соединения с пользователями '''Oktell'''. Для работы укажите следующие поля:
  
* Назначение - Внутрь
+
* '''Назначение''' - Внутрь
* Номер - внутренний номер сотрудника (групповой, быстрый номер). В примере, 101.  
+
* '''Номер''' - внутренний номер сотрудника (групповой, быстрый номер). В примере, 101.  
* Очередь ожидания - Да. Если сотрудник в разговоре, то вы попадете в очередь ожидания. Если очередь ожидания будет выключена, а сотрудник будет в разговоре, то вы перейдете по ветке занято.  
+
* '''Очередь ожидания''' - '''Да'''. Если сотрудник в разговоре, то вы попадете в очередь ожидания. Если очередь ожидания будет выключена, а сотрудник будет в разговоре, то вы перейдете по ветке занято.  
  
 
После переключения поставьте компонент "'''Стоп'''". Этого недостаточно, необходимо также обработать остальные ветки, например, что делать если сотрудник недоступен, занят или отсутствует.  
 
После переключения поставьте компонент "'''Стоп'''". Этого недостаточно, необходимо также обработать остальные ветки, например, что делать если сотрудник недоступен, занят или отсутствует.  
Строка 139: Строка 143:
 
Чтобы определить эти ветки зажмите цифру "'''2'''" и проведите соединение до компонента "'''Обрыв связи'''". Будет проведена ветка "'''Переход, занято'''". Проведите линии зажав цифры "'''3'''"-"'''6'''". Переходы автоматически проставятся в свойствах компонента.
 
Чтобы определить эти ветки зажмите цифру "'''2'''" и проведите соединение до компонента "'''Обрыв связи'''". Будет проведена ветка "'''Переход, занято'''". Проведите линии зажав цифры "'''3'''"-"'''6'''". Переходы автоматически проставятся в свойствах компонента.
  
Вообще говоря, при создании рабочего сценария эти ветки необходимо обрабатывать с помощью других переключений или воспроизведений. Если делать просто "Обрыв связи", как в этом уроке, то клиенты не будут понимать в чем дело и их надо оповещать. Данный сценарий был создан исключительно в обучающих целях.  
+
Вообще говоря, при создании рабочего сценария эти ветки необходимо обрабатывать с помощью других переключений или воспроизведений. Если делать просто "'''Обрыв связи'''", как в этом уроке, то клиенты не будут понимать в чем дело и их надо оповещать. Данный сценарий был создан исключительно в обучающих целях.  
  
  
Строка 146: Строка 150:
  
 
'''11.''' Перейдите на вкладку "'''Сохранение'''" и сохраните ваш сценарий "'''На сервер'''". Протестируйте ваш сценарий, как было описано в уроке 16.
 
'''11.''' Перейдите на вкладку "'''Сохранение'''" и сохраните ваш сценарий "'''На сервер'''". Протестируйте ваш сценарий, как было описано в уроке 16.
 +
 +
'''Скачать сценарий:''' [http://wiki.oktell.ru/images/8/87/%D0%A3%D1%80%D0%BE%D0%BA_17.zip Урок17.zip]
  
 
'''Поздравляем!''' Вы научились маршрутизировать звонок в IVR-сценарии. Можете переходить к следующему уроку.
 
'''Поздравляем!''' Вы научились маршрутизировать звонок в IVR-сценарии. Можете переходить к следующему уроку.
Строка 157: Строка 163:
 
* Внимательно изучите техническую документацию связанную с переменными.  
 
* Внимательно изучите техническую документацию связанную с переменными.  
  
* Прочитайте и опробуйте статью [[Маршрутизация звонка на_основании параметров]]
+
* Прочитайте и опробуйте статью [[Маршрутизация звонка на основании параметров]]
  
 
* Реализуйте сценарий маршрутизации по имени пользователя: при звонке на внутренний номер запуска IVR определяется имя пользователя, если оно совпадает с вашим вам выводится уведомление "Здравствуйте" и происходит соединение с некоторым сотрудником. Если на сценарий IVR позвонит другой пользователь выведите уведомление этому пользователю с его именем и внутренним номером (воспользуйтесь функциями), затем происходит соединение с вашим пользователем.  
 
* Реализуйте сценарий маршрутизации по имени пользователя: при звонке на внутренний номер запуска IVR определяется имя пользователя, если оно совпадает с вашим вам выводится уведомление "Здравствуйте" и происходит соединение с некоторым сотрудником. Если на сценарий IVR позвонит другой пользователь выведите уведомление этому пользователю с его именем и внутренним номером (воспользуйтесь функциями), затем происходит соединение с вашим пользователем.  
Строка 164: Строка 170:
 
| [[Уроки | Наверх]]
 
| [[Уроки | Наверх]]
 
| [[Урок_16_Простейший_IVR_сценарий | К предыдущему уроку]]
 
| [[Урок_16_Простейший_IVR_сценарий | К предыдущему уроку]]
|  
+
| [[Урок_18_Голосовое_взаимодействие| К следующему уроку]]
 
|-
 
|-
 
|}
 
|}

Текущая версия на 13:57, 14 марта 2014

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

В этом уроке разбирается маршрутизация звонка в IVR-сценарии. В статье подробно описываются компоненты ветвления и переключения, разбираются переменные и выражения в Oktell.


Урок17-009.png


Общая информация

Маршрутизация звонка - процесс определения маршрута обработки звонка на основании некоторых условий. Алгоритм сценария определяет маршрут прохождения вызова в зависимости от текущего значения переменных.

Значения переменных могут быть определены функциями:

  • ID коммутации - уникальный номер каждой коммутации. По этому номеру можно однозначно восстановить все параметры коммутации (дата/время звонка, абоненты и прочее)
  • номер абонента (CallerID) - номер инициатора звонка. Например, при входящем звонке - это номер того, кто позвонил.
  • набираемый номер (CalledID) - номер адресата звонка. Например, при входящем звонке - это ваш номер или абонента, кому позвонили.
  • тип, номер линии
  • дата, время, день недели
  • значение очереди
  • порядка 40 определяемых системой значений
  • значения DTMF сигналов
  • значения, полученные путем SQL запросов

По каждому из параметров (в Oktell их порядка 40) можно маршрутизировать звонок в зависимости от поставленных задач. Для ветвления сценария используются компоненты "Сравнение" и "Меню".

IVR-сценарий в процессе выполнения должен закончиться одним из двух вариантов:

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


Создание сценария

Задача: Компания работает с 9 до 18 часов. Маршрутизацию звонка предлагается проводить по текущему времени. Если входящий звонок попадает в график работы, то IVR переключает его на секретаря (исход - соединение с сотрудником). Если входящий звонок поступает вне этого периода времени, то ему проговаривается звуковое оповещение и связь разрывается (исход - Обрыв связи).

1. Создаем новый IVR сценарий.

2. Компоненты Старт и Поднять трубку разбирались на уроке 16.

3. Для того, чтобы маршрутизировать звонок по времени, необходимо записать текущее время в переменную. Для этого используется компонент Присвоение.

В поле "Переменная" в инспекторе объектов необходимо выбрать переменную, в которую мы хотим присвоить значение. Нажмите "...". Откроется список со всеми переменными, созданными в сценарии. В каждом сценарии есть несколько служебных переменных для определения некоторых параметров звонка. Также вы можете создать свои пользовательские переменные. Можно создать:

  • Числовая - используется для хранения чисел. Используется редко, так как можно создать строковую переменную и при необходимости преобразовывать ее к числу (преобразование NUM([строка])).
  • Строковая - наиболее распространенный формат хранения переменных. Может быть преобразован к любому другому формату.
  • Дата/Время - используется для хранения даты и времени.
  • Поле таблицы - используется для связи с таблицей абонентов в задачах. Будут рассматриваться в следующих уроках.

Переменные по типу размещения бывают:

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

Для создания переменной нажмите "Добавить". В открывшемся окне "Создание переменной" введите

  • Название переменной - В примере, текущий_час.

ВНИМАНИЕ: Названия переменных регистрозависимы. Переменные "дата", "Дата" и "ДАТА" - разные переменные!

  • Тип переменной - В примере, Строковая
  • Тип размещения - В примере, Локальная

Нажмите ОК. В списке Выбор переменной кликните два раза по созданной переменной или выбрав переменную нажмите ОК.


Урок17-001.png


4. В поле "Значение" выберите аргумент, который будет присвоен в переменную "текущий_час". Аргументом может являться:

  • Константа - некоторое постоянное значение. Можно сразу записывать в инспекторе объектов, не открывая данное окно.
  • Переменная - по сути, переприсваивание. Значение выбранной переменной будет записано в текущую.
  • Выражение - последовательность действий, оперирующая с константами и переменными. Например, 'Текст'+[переменная].

ВНИМАНИЕ: Если вы захотите исправить выражение непосредственно из свойств компонента, не пользуясь редактором выражений - ваше выражение станет строкой и сценарий будет работать некорректно!

  • Функция - некоторое значение, определяемое системой.

Так как, в примере, мы будем маршрутизировать звонок в зависимости от часа, выберите аргумент "Функция" - "Текущий час". Нажмите ОК.


Урок17-002.pngУрок17-003.png


5. Выведите уведомление, в котором будет показываться чему равен текущий час. Для этого ставим компонент "Уведомление". Выберите следующие поля:

  • Адресат - выберите своего пользователя.
  • Текст - Выражение:
'Текущий час = '+[текущий_час]

ВНИМАНИЕ: Для проверка выражения нажмите "Проверить корректность выражения".


Урок17-004.png


6. Переходим к маршрутизации. Воспользуемся компонентом Сравнение. Если текущий час меньше 9, то офис не работает. Если текущий час больше 9, переходим к следующему сравнению.

  • Аргумент 1 - переменная "текущий_час".
  • Аргумент 2 - в поле впишите сразу "9". Это значение будет являться строкой.
  • Тип сравнения - меньше "<"


Урок17-005.png


7. Итак, если текущий час меньше 9 (ветка - Правда), поставьте уведомление с фразой "офис не работает" и после него компонент "Обрыв связи". Чтобы провести соединение по ветке Правда от компонента сравнение, зажмите CTRL и левой кнопкой мыши проведите соединение.

ВНИМАНИЕ: Любую ветку компонента всегда можно задать вручную через соответствующее свойство, однако это занимает больше времени.


Урок17-006.png


8. Если текущий час больше 9 (ветка - Ложь), то переходим к следующему сравнению - текущий час больше 18?

  • Аргумент 1 - переменная "текущий_час".
  • Аргумент 2 - "18".
  • Тип сравнения - меньше ">"

Чтобы провести соединение по ветке Ложь от компонента сравнение, зажмите CTRL и правой кнопкой мыши проведите соединение.


Урок17-007.png


9. У следующего сравнения пользуемся тем же способом. Если время больше 9 (ветка - Правда), переходим на Уведомление. Если меньше 18 (но больше 9, как следует из предыдущего сравнения), то переходим на соединение с пользователем.

10. Компонент "Переключение на номер" - является основным компонентом для соединения с пользователями Oktell. Для работы укажите следующие поля:

  • Назначение - Внутрь
  • Номер - внутренний номер сотрудника (групповой, быстрый номер). В примере, 101.
  • Очередь ожидания - Да. Если сотрудник в разговоре, то вы попадете в очередь ожидания. Если очередь ожидания будет выключена, а сотрудник будет в разговоре, то вы перейдете по ветке занято.

После переключения поставьте компонент "Стоп". Этого недостаточно, необходимо также обработать остальные ветки, например, что делать если сотрудник недоступен, занят или отсутствует.

ВНИМАНИЕ: Если эти ветки не указаны, то, по умолчанию, переход идет на "Обрыв связи".

Чтобы определить эти ветки зажмите цифру "2" и проведите соединение до компонента "Обрыв связи". Будет проведена ветка "Переход, занято". Проведите линии зажав цифры "3"-"6". Переходы автоматически проставятся в свойствах компонента.

Вообще говоря, при создании рабочего сценария эти ветки необходимо обрабатывать с помощью других переключений или воспроизведений. Если делать просто "Обрыв связи", как в этом уроке, то клиенты не будут понимать в чем дело и их надо оповещать. Данный сценарий был создан исключительно в обучающих целях.


Урок17-008.png


11. Перейдите на вкладку "Сохранение" и сохраните ваш сценарий "На сервер". Протестируйте ваш сценарий, как было описано в уроке 16.

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

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

Техническая документация:

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

  • Внимательно изучите техническую документацию связанную с переменными.
  • Реализуйте сценарий маршрутизации по имени пользователя: при звонке на внутренний номер запуска IVR определяется имя пользователя, если оно совпадает с вашим вам выводится уведомление "Здравствуйте" и происходит соединение с некоторым сотрудником. Если на сценарий IVR позвонит другой пользователь выведите уведомление этому пользователю с его именем и внутренним номером (воспользуйтесь функциями), затем происходит соединение с вашим пользователем.
Наверх К предыдущему уроку К следующему уроку