Маршрутизатор чатов
Под маршрутизатором (роутером) имеется в виду возможность подключения внешнего от Webim маршрутизатора чатов - сервиса, который определяет, какой оператор или отдел должен обслуживать чат. Сразу после создания и до автораспределения чата информация о нем сначала отправляется из Webim на этот маршрутизатор, и тот может принять решение, куда нужно направить чат.
Маршрутизатор появился в сервисе Webim начиная с версии 9.1.
В версиях, начиная с 9.1 и далее, в базовой комплектации Webim осуществляется поддержка только одного маршрутизатора внутри Chat Backend с использованием библиотеки suds
. Поддержка большего количества маршрутизаторов возможна в рамках дополнительных работ, за более подробной информацией Вы можете обратиться в службу технической поддержки.
Составляющие маршрутизатора
Функционал маршрутизатора образован совокупностью следующих составляющих:
-
Параметр
custom_router_schema_url
в настройках account config содержит URL внешнего маршрутизатора, к которому будет обращаться Webim Server. -
Если маршрутизатор задан в аккаунте, то в процессе инициализации сервера Chat Backend инициализируется и объект связи аккаунта и маршрутизатора.
-
Особое состояние чата:
ROUTING
. Оно говорит о том, что чат находится на маршрутизации и ожидается решение от, собственно, внешнего маршрутизатора. Наглядно состояние чата отображено на Схеме жизненного цикла чата. -
У отдела есть особый параметр
routing
, который может принимать значенияTrue
илиFalse
. Отправка чата на маршрутизатор осуществляется только если у отдела данной сессии он принимает значениеTrue
. -
Передача чата на внешний маршрутизатор происходит после создания чата и выполнения ряда условий: например, в аккаунте должен быть прописан и инициирован маршрутизатор, в отделе разрешена маршрутизация, чат не забрал бот и т. д.
-
Информация на маршрутизатор отправляется в формате
SOAP (XML)
по WSDL-спецификации. В передаваемый пакет входят ID чата, тип канала, ID пользователя (для Telegram и WhatsApp это канальный ID, в других случаях это либо provided visitor ID, либо канальный ID, либо он вовсе отсутствует), первое сообщение от посетителя и стартовая страница чата. В отдельных случаях ID пользователя и стартовая страница чата могут отсутствовать, в таком случае будут переданы параметры по умолчанию. -
В ответ маршрутизатор передает Webim пакет данных с указанием, что надо сделать с чатом. Варианты:
skill
= маршрутизация на отдел (вызывает событиеsys.routing_to_department
),employee
= маршрутизация на оператора (вызываетsys.routing_to_operator
). Пакет также содержитsiebelId
(ID посетителя в CRM Siebel) иtaskId
, которыми обогащается объект посетителя. -
Если при маршрутизации произошел сбой, происходит событие
sys.routing_failed
. -
Если в Telegram-канале посетитель прислал свои контактные данные с номером телефона, то этот телефон отдельно отправляется на маршрутизатор, но уже не с целью маршрутизации, а с целью обогащения сессии (объекта посетителя) с помощью
siebelId
, соответствующим этому номеру телефона. -
Если чат снимается с бота, он снова отправляется на маршрутизатор.
-
Есть возможность сделать так, чтобы чат снимался с маршрутизатора и отправлялся в общую очередь, если он маршрутизируется более 30 секунд.
Взаимодействие с частями системы
-
Взаимодействие с сервером чата:
-
Используются настройки аккаунта
custom_router_schema_url
иcustom_router_timeout
; -
Берётся ключ отдела переданного чата, по ключу выбирается отдел, у него проверяются настройки
routing
; -
Используются события чата
sys.routing_to_operator
,sys.routing_to_department
,sys.routing_failure
; -
От маршрутизатора ожидается передача ключа отдела или ID оператора через параметры
skill
иemployee
соответственно. Если обнаруженskill
, то ищется отдел с таким ключом (department_key
). В случае обнаружения такого отдела чат маршрутизируется в него, в противном случае вызывается событиеsys.routing_failed
. Еслиskill
не обнаружен, но обнаруженemployee
, то ищется оператор с таким ID. В случае обнаружения такого оператора чат маршрутизируется на него, в противном случае вызывается событиеsys.routing_failed
. -
Система обогощает объект посетителя полями
siebelId
иtaskId
при их наличии в переданном маршрутизатором ответе; -
При формировании запроса в клиентский маршрутизатор используются следующие данные: ID чата, размещение обращения, настройка размещения
chat.channel
, канал клиента, полеphone
клиента,provided id
клиента, платформа сессии, URL обращения, имя клиента в канале,provided phone
клиента, ID клиента в канале. -
ID чата используется в логировании.
-
-
Взаимодействие с базой: прямых запросов в базу нет, используются переданные аргументы и данные из памяти.
-
Взаимодействие с маршрутизаторами компании: связь осуществляется посредством веб-сервиса (клиент создается с помощью библиотеки
suds
), адрес WSDL-документа для каждого маршрутизатора прописывается в настройках аккаунтаcustom_router_schema_url
. В настройкахcustom_router_timeout
хранятся значения тайм-аутов запросов.