Урок 17 Маршрутизация звонка

Материал из Oktell
Перейти к: навигация, поиск
Наверх К предыдущему уроку К следующему уроку

В этом уроке разбирается маршрутизация звонка в 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 позвонит другой пользователь выведите уведомление этому пользователю с его именем и внутренним номером (воспользуйтесь функциями), затем происходит соединение с вашим пользователем.
Наверх К предыдущему уроку К следующему уроку