Определение момента переключения на сотрудника во время перевода звонка — различия между версиями

Материал из Oktell
Перейти к: навигация, поиск
Строка 30: Строка 30:
  
 
Компонент "'''Старт 1'''". Во время Sip-transfer переключения получает номер, на который выполнен перевод звонка. Во время обычного переключения на вход ничего не передается.  
 
Компонент "'''Старт 1'''". Во время Sip-transfer переключения получает номер, на который выполнен перевод звонка. Во время обычного переключения на вход ничего не передается.  
* Параметр запуска - переменная "'''Номер'''" (локальная)
+
* Параметр запуска - переменная "'''Номер'''" (строковая)
  
  
Строка 50: Строка 50:
  
 
'''2.''' Компонент "'''Определение линий'''". Сохраняет номер линии абонента А (переключаемого, линия буфера) и линии пользователя Б (переключающего) в соответствующие переменные.
 
'''2.''' Компонент "'''Определение линий'''". Сохраняет номер линии абонента А (переключаемого, линия буфера) и линии пользователя Б (переключающего) в соответствующие переменные.
* Переменной "'''ЛинияБуфера'''" (локальная) присваивается значение функции "'''Номер линии, ожидающей во Flash-буфере'''".  
+
* Переменной "'''ЛинияБуфера'''" (строковая) присваивается значение функции "'''Номер линии, ожидающей во Flash-буфере'''".  
* Переменной "'''ЛинияПользователя'''" (локальная) присваивается значение функции "'''Номер линии'''"
+
* Переменной "'''ЛинияПользователя'''" (строковая) присваивается значение функции "'''Номер линии'''"
  
  
Строка 62: Строка 62:
 
* Тип вызова - Обычный
 
* Тип вызова - Обычный
 
* Направления - выберите направления для вызова
 
* Направления - выберите направления для вызова
* Идентификатор выбранной линии - переменная "ЛинияПереключения" (локальная)
+
* Идентификатор выбранной линии - переменная "ЛинияПереключения" (строковая)
 
* Коммутировать сразу - Нет, прослушивать медиа-поток".
 
* Коммутировать сразу - Нет, прослушивать медиа-поток".
  
Строка 124: Строка 124:
  
 
Компонент "'''Старт 1'''". Получает переданную XML-структуру на вход сценария и записывает ее в переменную XML.
 
Компонент "'''Старт 1'''". Получает переданную XML-структуру на вход сценария и записывает ее в переменную XML.
* Параметр запуска - переменная "'''XML'''" (локальная)
+
* Параметр запуска - переменная "'''XML'''" (строковая)
  
 
Компонент "'''Ув XML'''". Отладочное уведомление для вывода полученной XML.
 
Компонент "'''Ув XML'''". Отладочное уведомление для вывода полученной XML.
Строка 138: Строка 138:
 
* Функция - Содержимое
 
* Функция - Содержимое
 
* Номер элемента - 0  
 
* Номер элемента - 0  
* Результат в переменную - переменная "'''ЛинияБуфера'''" (локальная)
+
* Результат в переменную - переменная "'''ЛинияБуфера'''" (строковая)
  
  
Строка 147: Строка 147:
 
* Функция - Содержимое
 
* Функция - Содержимое
 
* Номер элемента - 0  
 
* Номер элемента - 0  
* Результат в переменную - переменная "'''ЛинияПереключения'''" (локальная)
+
* Результат в переменную - переменная "'''ЛинияПереключения'''" (строковая)
  
  
Строка 156: Строка 156:
 
* Функция - Содержимое
 
* Функция - Содержимое
 
* Номер элемента - 0  
 
* Номер элемента - 0  
* Результат в переменную - переменная "'''ЛинияПользователя'''" (локальная)
+
* Результат в переменную - переменная "'''ЛинияПользователя'''" (строковая)
  
  
Строка 163: Строка 163:
 
* Аргумент 2 - пустая строка
 
* Аргумент 2 - пустая строка
 
* Тип сравнения - "'''='''"
 
* Тип сравнения - "'''='''"
 
+
* Переход, если правда - компонент "'''Трансфер'''"
 +
* Переход, если ложь - компонент "'''Скоммутированная с буфером'''"
  
 
''Если произошло обычное переключение, отрабатывают следующие компоненты.''  
 
''Если произошло обычное переключение, отрабатывают следующие компоненты.''  
Строка 173: Строка 174:
 
* Ключ линии - переменная "'''ЛинияБуфера'''"  
 
* Ключ линии - переменная "'''ЛинияБуфера'''"  
 
* Функция - Номер скоммутированной линии/конференции
 
* Функция - Номер скоммутированной линии/конференции
* Значение в переменную - переменная "'''СкоммутированнаяСБуфером'''" (локальная)
+
* Значение в переменную - переменная "'''СкоммутированнаяСБуфером'''" (строковая)
  
  
Строка 185: Строка 186:
 
* Адресат - выберите администрирующего пользователя.
 
* Адресат - выберите администрирующего пользователя.
  
Компонент "'''Буфер не скоммутирован?'''".
 
  
Компонент "'''IdChain'''".
+
Компонент "'''Буфер не скоммутирован?'''". Определяет скоммутирована ли линия буфера. Если переменная "'''СкоммутированнаяСБуфером'''" равна "'''-1'''", значит линия пока не скоммутирована.
 +
* Аргумент 1 - переменная "'''СкоммутированнаяСБуфером'''"
 +
* Аргумент 2 - число "'''-1'''"
 +
* Тип сравнения - "'''='''"
 +
* Переход, если правда" - компонент "'''IdChain'''"
 +
* Переход, если ложь - "'''Буфер переключился?'''". Переход отрабатывает, если линия буфера соединена с какой-либо другой линией.  
  
Компонент "'''Ув2'''".
 
  
Компонент "'''Обрыв внешней линии'''".
+
Компонент "'''IdChain'''". Если линия пока не скоммутирована, есть вероятность, что она разорвала связь. Такое бывает в условиях плохого соединения, например клиент зашел в метро, или клиент просто повесил трубку в следствие долгого ожидания. Чтобы определить это, нам потребуется знать идентификатор цепочки коммутаций.
 +
* Действие - Определить
 +
* Тип объекта - Линия
 +
* Ключ линии - переменная "'''ЛинияБуфера'''"
 +
* Функция - Идентификатор цепочки коммутаций
 +
* Значение в переменную - переменная "'''idChainuser'''" (строковая)
 +
 
 +
 
 +
Компонент "'''Ув2'''". Отладочное уведомление для вывода Id цепочки коммутаций.
 +
* Отладочный режим - Да
 +
* Текст - переменная "'''idChainuser'''"
 +
* Адресат - выберите администрирующего пользователя.
 +
 
 +
 
 +
Компонент "'''Обрыв внешней линии'''". Если Id цепочки коммутаций равен "''00000000-0000-0000-0000-000000000000''", значит на данный момент активной коммутации на линии нет, а значит соединение с клиентом оборвалось.
 +
* Аргумент 1 - переменная "'''idChainuser'''"
 +
* Аргумент 2 - строка "''00000000-0000-0000-0000-000000000000''"
 +
* Тип сравнения - "'''='''"
 +
* Переход, если правда" - компонент "'''Линия повесила трубку'''"
 +
* Переход, если ложь - "'''Пока линия не скоммутирована'''".
 +
 
 +
 
 +
Компонент "'''Линия повесила трубку'''". Отладочное уведомление, о том что линия повесила трубку.
 +
* Отладочный режим - Нет. После успешных тестов можно выставить Да.
 +
* Текст - строка ''Внешняя линия повесила трубку''
 +
* Адресат - выберите администрирующего пользователя.
  
Компонент "'''Линия повесила трубку'''".
 
  
 
Компонент "'''Пока линия не скоммутирована'''".
 
Компонент "'''Пока линия не скоммутирована'''".
Строка 200: Строка 228:
  
 
Компонент "'''Линия скоммутированы'''".
 
Компонент "'''Линия скоммутированы'''".
 +
* Отладочный режим - Нет. После успешных тестов можно выставить Да.
 +
* Текст - строка ''Линии успешно скоммутировались''
 +
* Адресат - выберите администрирующего пользователя.
 +
  
 
Компонент "'''Воспроизведение файла'''".
 
Компонент "'''Воспроизведение файла'''".
  
 
Компонент "'''Линия вернулась?'''".
 
Компонент "'''Линия вернулась?'''".
 +
* Отладочный режим - Нет. После успешных тестов можно выставить Да.
 +
* Текст - строка ''Линии успешно скоммутировались''
 +
* Адресат - выберите администрирующего пользователя.
 +
  
 
Компонент "'''Возврат буфера'''".
 
Компонент "'''Возврат буфера'''".
 +
* Отладочный режим - Нет. После успешных тестов можно выставить Да.
 +
* Текст - строка ''Линия вернулась обратно''
 +
* Адресат - выберите администрирующего пользователя.
 +
  
 
Компонент "'''500мс'''".
 
Компонент "'''500мс'''".
Строка 213: Строка 253:
  
 
Компонент "'''Трансфер'''".
 
Компонент "'''Трансфер'''".
 +
* Отладочный режим - Нет. После успешных тестов можно выставить Да.
 +
* Текст - строка ''ТРАНСФЕР''
 +
* Адресат - выберите администрирующего пользователя.
  
 
Компонент "'''Скоммутированная с буфером 2'''".
 
Компонент "'''Скоммутированная с буфером 2'''".
Строка 219: Строка 262:
  
 
Компонент "'''Линии соединены'''".
 
Компонент "'''Линии соединены'''".
 +
* Отладочный режим - Нет. После успешных тестов можно выставить Да.
 +
* Текст - строка ''Линии успешно скоммутировались''
 +
* Адресат - выберите администрирующего пользователя.
  
 
Компонент "'''Воспроизведение файла 2'''".
 
Компонент "'''Воспроизведение файла 2'''".
Строка 227: Строка 273:
  
 
Компонент "'''Неизвестная ситуация'''".
 
Компонент "'''Неизвестная ситуация'''".
 +
* Отладочный режим - Нет. После успешных тестов можно выставить Да.
 +
* Текст - строка ''Неизвестная ситуация''
 +
* Адресат - выберите администрирующего пользователя.
  
Компонент "'''IdChain'''".
+
Компонент "'''IdChain 2'''".
  
 
Компонент "'''Ув3'''".
 
Компонент "'''Ув3'''".
Строка 235: Строка 284:
  
 
Компонент "'''Линия оборвалась'''".
 
Компонент "'''Линия оборвалась'''".
 +
* Отладочный режим - Нет. После успешных тестов можно выставить Да.
 +
* Текст - строка ''Внешняя линия повесила трубку''
 +
* Адресат - выберите администрирующего пользователя.
 +
  
 
Компонент "'''Пауза 500мс'''".
 
Компонент "'''Пауза 500мс'''".

Версия 15:05, 23 ноября 2014

Наверх


Введение

Представим ситуацию, когда абонент А просит оператора Б переключить его на другого сотрудника В. Например, клиент, разговаривая с менеджером по продажам, хочет обсудить технический вопрос с инженерами технической поддержки. Менеджер по продажам может переключить абонента сразу напрямую (выполнить Transfer-переключение, неконсультативный перевод) или предварительно предупредить инженера о переводе (консультативный перевод). В каждом из этих случаев стоит задача воспроизвести в коммутацию сообщение "Вы переключены на сотрудника", как только установилось успешное соединение.

Такое звуковое сообщение помогает, во-первых, соориентировать клиента, что его звонок успешно переведен. Во-вторых, часто при переводе звонка принимающая сторона, в нашем случае инженер, не слышит как менеджер положил трубку, и не может понять переключили на него или еще нет. Звуковое сообщение в коммутацию облегчает сложившуюся ситуацию.


Реализация сценария

Для определенности введем следующие понятия: А - переключаемый клиент, Б - переключающий оператор, В - пользователь, на которого переводят звонок.

Основная идея алгоритма - запустить служебный сценарий, после того как сотрудник В возьмет трубку. Этот служебный сценарий в асинхронном режиме проверяет состояние переключения и после переключения клиента А на сотрудника В запускает воспроизведение файла в коммутацию. Все номера линий участвующие в переключении собираются в IVR сценарии переключения и передаются служебному сценарию на вход.


Модификация IVR сценария переключения

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


Определение момент переключения-002.png


1. Правка входного каскада.


Компонент "Старт 1". Во время Sip-transfer переключения получает номер, на который выполнен перевод звонка. Во время обычного переключения на вход ничего не передается.

  • Параметр запуска - переменная "Номер" (строковая)


Компонент "Режим Flash". Присваивает служебной переменной "(сл) Режим Flash" - число 1. Таким образом, если оператор Б положит трубку во время дозвона до сотрудника В, клиент А заменит его и самостоятельно будет ожидать соединения.


Компонент "Параметр запуска пусто?". Определяет передался ли номер на вход сценария во время SIP-transfer переключения.

  • Аргумент 1 - переменная "Номер"
  • Аргумент 2 - пустая строка
  • Тип сравнения - "="
  • Переход, правда - компонент "НОМЕР=CallerID".
  • Переход, ложь - компонент "Пауза 1". Таким образом, номер отправляется сразу в набор.


Компоненты "Номер=CallerID", "Номер пусто?" и все компоненты блока сборки номера (выделен зеленым) не изменяются.

Обратите внимание, что ветка по таймауту компонента "+1 цифра" в сценарии переведена на компонент "Пауза 1".


2. Компонент "Определение линий". Сохраняет номер линии абонента А (переключаемого, линия буфера) и линии пользователя Б (переключающего) в соответствующие переменные.

  • Переменной "ЛинияБуфера" (строковая) присваивается значение функции "Номер линии, ожидающей во Flash-буфере".
  • Переменной "ЛинияПользователя" (строковая) присваивается значение функции "Номер линии"


3. Запуск служебного сценария. Блок определяет линию сотрудника В, записывает ее в переменную, а затем передает все три найденные линии (А, Б, В) на вход служебного сценария.

В зависимости от типа набранного номера отрабатывают те или иные компоненты. Для внешнего номера:

Компонент "ВНЕШНИЕ". Если переключают на внешний номер, то необходимо сохранить выбранную линию в переменную.

  • Номер - переменная "Номер".
  • Тип вызова - Обычный
  • Направления - выберите направления для вызова
  • Идентификатор выбранной линии - переменная "ЛинияПереключения" (строковая)
  • Коммутировать сразу - Нет, прослушивать медиа-поток".


Компонент "Линия переключения". Определяет номер линии по ее идентификатору и сохраняет его в ту же переменную.

  • Действие - Определить
  • Тип объекта - Линия
  • Ключ линии - переменная "ЛинияПереключения"
  • Функция - Номер линии
  • Значение в переменную - переменная "ЛинияПереключения"


Для внутреннего номера:

Компонент "ВНУТРЕННИЕ". Остается без изменения.

  • Назначение - Внутрь
  • Номер - переменная "Номер"
  • Тип вызова - Обычный


Компонент "Пауза 200мс". Необходим для корректной отработки переключения и записи всех значений в базу данных.

  • Время задержки, мс - 200


Компонент "Линия переключения (2)". По номеру активной линии, определяет номер скоммутированной линии. Активной линией будет линия пользователя Б, если он ожидал соединения сотрудника В и тот взял трубку. Если пользователь Б, бросил трубку, то активной линией будет линия клиента А.

  • Действие - Определить
  • Тип объекта - Линия
  • Ключ линии - функция "Номер линии"
  • Функция - Номер скоммутированной линии/конференции
  • Значение в переменную - переменная ЛинияПереключения


Компонент "XML". Для передачи трех значений в служебный сценарий, компонент объединяет их в единую XML структуру. Такой прием часто используется для передачи нескольких значений в качестве одного параметра запуска.

  • Переменной "XML" (строковая) присваивается выражение
'<bufferLine>'+[ЛинияБуфера]+'</bufferLine>'+endline+
'<switchingLine>'+[ЛинияПереключения]+'</switchingLine>'+endline+
'<userLine>'+[ЛинияПользователя]+'</userLine>'

ВНИМАНИЕ: Можно и не использовать объединение переменных в XML, а передавать их как сессионные, однако удостоверьтесь, что у вас уже не используется одноименные переменные в других пересекающихся сценариях.


Компонент "Ув1". Отладочное уведомления для вывода XML структуры.

  • Отладочный режим - Да
  • Текст - переменная "XML"
  • Адресат - выберите администрирующего пользователя.


Компонент "Запуск сценария". Запускает асинхронный сценарий, который будет проверять соединение линии клиента А и сотрудника В.

  • Тип запуска - Асинхронный служебный
  • Режим выбора сценария - Из списка
  • Сценарий - Определение момента переключения (служебный)
  • Параметр запуска - переменная "XML"


Служебный сценарий определения момента переключения

Служебный сценарий мониторит состояние линии А и определяет итог переключения. Сценарий выглядит следующим образом:


Определение момент переключения-001.png


Компонент "Старт 1". Получает переданную XML-структуру на вход сценария и записывает ее в переменную XML.

  • Параметр запуска - переменная "XML" (строковая)

Компонент "Ув XML". Отладочное уведомление для вывода полученной XML.

  • Отладочный режим - Да
  • Текст - переменная "XML"
  • Адресат - выберите администрирующего пользователя.


Компонент "Линия буфера". Выделяет линию буфера (клиента А) из XML-структуры.

  • Документ - переменная "XML"
  • Алгоритм - Язык OQuery для HTML
  • Поисковый запрос - строка bufferLine
  • Функция - Содержимое
  • Номер элемента - 0
  • Результат в переменную - переменная "ЛинияБуфера" (строковая)


Компонент "Линия переключения". Выделяет линию сотрудника В, на которого переключают звонок, из XML-структуры.

  • Документ - переменная "XML"
  • Алгоритм - Язык OQuery для HTML
  • Поисковый запрос - строка switchingLine
  • Функция - Содержимое
  • Номер элемента - 0
  • Результат в переменную - переменная "ЛинияПереключения" (строковая)


Компонент "Линия пользователя". Выделяет линию переключающего сотрудника Б из XML-структуры.

  • Документ - переменная "XML"
  • Алгоритм - Язык OQuery для HTML
  • Поисковый запрос - строка userLine
  • Функция - Содержимое
  • Номер элемента - 0
  • Результат в переменную - переменная "ЛинияПользователя" (строковая)


Компонент "Трансфер?". Определяет произошло ли трансфер-переключение. Если это так, то линия буфера будет пустая, вследствие того, что она была активной и содержится в переменной "ЛинияПользователя".

  • Аргумент 1 - переменная "ЛинияБуфера"
  • Аргумент 2 - пустая строка
  • Тип сравнения - "="
  • Переход, если правда - компонент "Трансфер"
  • Переход, если ложь - компонент "Скоммутированная с буфером"

Если произошло обычное переключение, отрабатывают следующие компоненты.


Компонент "Скоммутированная с буфером". Определяет номер скоммутированной линии с линией буфера (клиента А). В зависимости от того, какую линию вернет компонент, будет решаться соединилась ли линия буфера с пользователем В или вернулась обратно.

  • Действие - Определить
  • Тип объекта - Линия
  • Ключ линии - переменная "ЛинияБуфера"
  • Функция - Номер скоммутированной линии/конференции
  • Значение в переменную - переменная "СкоммутированнаяСБуфером" (строковая)


Компонент "Ув1". Отладочное уведомление для вывода номеров участвующих линий, а также линии, которая скоммутирована с буфером.

  • Отладочный режим - Да
  • Текст - выражение
'[ЛинияБуфера] '+[ЛинияБуфера]+endline+
'[ЛинияПереключения] '+[ЛинияПереключения]+endline+
'[ЛинияПользователя] '+[ЛинияПользователя]+endline+endline+
'[СкоммутированнаяСБуфером] '+[СкоммутированнаяСБуфером]
  • Адресат - выберите администрирующего пользователя.


Компонент "Буфер не скоммутирован?". Определяет скоммутирована ли линия буфера. Если переменная "СкоммутированнаяСБуфером" равна "-1", значит линия пока не скоммутирована.

  • Аргумент 1 - переменная "СкоммутированнаяСБуфером"
  • Аргумент 2 - число "-1"
  • Тип сравнения - "="
  • Переход, если правда" - компонент "IdChain"
  • Переход, если ложь - "Буфер переключился?". Переход отрабатывает, если линия буфера соединена с какой-либо другой линией.


Компонент "IdChain". Если линия пока не скоммутирована, есть вероятность, что она разорвала связь. Такое бывает в условиях плохого соединения, например клиент зашел в метро, или клиент просто повесил трубку в следствие долгого ожидания. Чтобы определить это, нам потребуется знать идентификатор цепочки коммутаций.

  • Действие - Определить
  • Тип объекта - Линия
  • Ключ линии - переменная "ЛинияБуфера"
  • Функция - Идентификатор цепочки коммутаций
  • Значение в переменную - переменная "idChainuser" (строковая)


Компонент "Ув2". Отладочное уведомление для вывода Id цепочки коммутаций.

  • Отладочный режим - Да
  • Текст - переменная "idChainuser"
  • Адресат - выберите администрирующего пользователя.


Компонент "Обрыв внешней линии". Если Id цепочки коммутаций равен "00000000-0000-0000-0000-000000000000", значит на данный момент активной коммутации на линии нет, а значит соединение с клиентом оборвалось.

  • Аргумент 1 - переменная "idChainuser"
  • Аргумент 2 - строка "00000000-0000-0000-0000-000000000000"
  • Тип сравнения - "="
  • Переход, если правда" - компонент "Линия повесила трубку"
  • Переход, если ложь - "Пока линия не скоммутирована".


Компонент "Линия повесила трубку". Отладочное уведомление, о том что линия повесила трубку.

  • Отладочный режим - Нет. После успешных тестов можно выставить Да.
  • Текст - строка Внешняя линия повесила трубку
  • Адресат - выберите администрирующего пользователя.


Компонент "Пока линия не скоммутирована".

Компонент "Буфер переключился?".

Компонент "Линия скоммутированы".

  • Отладочный режим - Нет. После успешных тестов можно выставить Да.
  • Текст - строка Линии успешно скоммутировались
  • Адресат - выберите администрирующего пользователя.


Компонент "Воспроизведение файла".

Компонент "Линия вернулась?".

  • Отладочный режим - Нет. После успешных тестов можно выставить Да.
  • Текст - строка Линии успешно скоммутировались
  • Адресат - выберите администрирующего пользователя.


Компонент "Возврат буфера".

  • Отладочный режим - Нет. После успешных тестов можно выставить Да.
  • Текст - строка Линия вернулась обратно
  • Адресат - выберите администрирующего пользователя.


Компонент "500мс".


SIP-трансфер переключение

Компонент "Трансфер".

  • Отладочный режим - Нет. После успешных тестов можно выставить Да.
  • Текст - строка ТРАНСФЕР
  • Адресат - выберите администрирующего пользователя.

Компонент "Скоммутированная с буфером 2".

Компонент "Произошло соединение?".

Компонент "Линии соединены".

  • Отладочный режим - Нет. После успешных тестов можно выставить Да.
  • Текст - строка Линии успешно скоммутировались
  • Адресат - выберите администрирующего пользователя.

Компонент "Воспроизведение файла 2".

Компонент "Пауза 2".

Компонент "Линия не соединилась".

Компонент "Неизвестная ситуация".

  • Отладочный режим - Нет. После успешных тестов можно выставить Да.
  • Текст - строка Неизвестная ситуация
  • Адресат - выберите администрирующего пользователя.

Компонент "IdChain 2".

Компонент "Ув3".

Компонент "Линия повесила трубку?".

Компонент "Линия оборвалась".

  • Отладочный режим - Нет. После успешных тестов можно выставить Да.
  • Текст - строка Внешняя линия повесила трубку
  • Адресат - выберите администрирующего пользователя.


Компонент "Пауза 500мс".


==Назначение сценария переключения==