Определение момента переключения на сотрудника во время перевода звонка — различия между версиями
Строка 30: | Строка 30: | ||
Компонент "'''Старт 1'''". Во время Sip-transfer переключения получает номер, на который выполнен перевод звонка. Во время обычного переключения на вход ничего не передается. | Компонент "'''Старт 1'''". Во время Sip-transfer переключения получает номер, на который выполнен перевод звонка. Во время обычного переключения на вход ничего не передается. | ||
− | * Параметр запуска - переменная "'''Номер'''" ( | + | * Параметр запуска - переменная "'''Номер'''" (строковая) |
Строка 50: | Строка 50: | ||
'''2.''' Компонент "'''Определение линий'''". Сохраняет номер линии абонента А (переключаемого, линия буфера) и линии пользователя Б (переключающего) в соответствующие переменные. | '''2.''' Компонент "'''Определение линий'''". Сохраняет номер линии абонента А (переключаемого, линия буфера) и линии пользователя Б (переключающего) в соответствующие переменные. | ||
− | * Переменной "'''ЛинияБуфера'''" ( | + | * Переменной "'''ЛинияБуфера'''" (строковая) присваивается значение функции "'''Номер линии, ожидающей во 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'''" | ||
+ | * Переход, если ложь - "'''Буфер переключился?'''". Переход отрабатывает, если линия буфера соединена с какой-либо другой линией. | ||
− | |||
− | Компонент "'''Обрыв внешней линии'''". | + | Компонент "'''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 сценария переключения
Модификация сценария заключается в сборе данных о линиях, участвующих в переводе звонка и запуске служебного сценария. Модифицированный сценарий выглядит следующим образом:
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"
Служебный сценарий определения момента переключения
Служебный сценарий мониторит состояние линии А и определяет итог переключения. Сценарий выглядит следующим образом:
Компонент "Старт 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мс".
==Назначение сценария переключения==