Урок 17 Маршрутизация звонка — различия между версиями
Строка 17: | Строка 17: | ||
* ID коммутации - уникальный номер каждой коммутации. По этому номеру можно однозначно восстановить все параметры коммутации (дата/время звонка, абоненты и прочее) | * ID коммутации - уникальный номер каждой коммутации. По этому номеру можно однозначно восстановить все параметры коммутации (дата/время звонка, абоненты и прочее) | ||
− | * номер абонента (CallerID) - номер инициатора звонка. Например, при входящем звонке - это номер того, кто позвонил. | + | * номер абонента ('''CallerID''') - номер инициатора звонка. Например, при входящем звонке - это номер того, кто позвонил. |
− | * набираемый номер (CalledID) - номер адресата звонка. Например, при входящем звонке - это ваш номер или абонента, кому позвонили. | + | * набираемый номер ('''CalledID''') - номер адресата звонка. Например, при входящем звонке - это ваш номер или абонента, кому позвонили. |
* тип, номер линии | * тип, номер линии | ||
* дата, время, день недели | * дата, время, день недели |
Версия 09:01, 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". Переходы автоматически проставятся в свойствах компонента.
Вообще говоря, при создании рабочего сценария эти ветки необходимо обрабатывать с помощью других переключений или воспроизведений. Если делать просто "Обрыв связи", как в этом уроке, то клиенты не будут понимать в чем дело и их надо оповещать. Данный сценарий был создан исключительно в обучающих целях.
11. Перейдите на вкладку "Сохранение" и сохраните ваш сценарий "На сервер". Протестируйте ваш сценарий, как было описано в уроке 16.
Скачать сценарий: Урок17.zip
Поздравляем! Вы научились маршрутизировать звонок в IVR-сценарии. Можете переходить к следующему уроку.
Техническая документация:
- Общие компоненты сценариев и Компоненты сценариев IVR
- Аргументы, Переменные, Выражения, Аргументы, Функции, Правило включения типов
Вопросы и задания
- Внимательно изучите техническую документацию связанную с переменными.
- Прочитайте и опробуйте статью Маршрутизация звонка на_основании параметров
- Реализуйте сценарий маршрутизации по имени пользователя: при звонке на внутренний номер запуска IVR определяется имя пользователя, если оно совпадает с вашим вам выводится уведомление "Здравствуйте" и происходит соединение с некоторым сотрудником. Если на сценарий IVR позвонит другой пользователь выведите уведомление этому пользователю с его именем и внутренним номером (воспользуйтесь функциями), затем происходит соединение с вашим пользователем.
Наверх | К предыдущему уроку |