OnBeforeSessionTransfer
Описание и параметры
В событие приходит объект \Bitrix\Main\Event.
Входящие параметры можно получить через $eventParams = $event->getParameters();
Параметры
Параметр | Описание |
---|---|
session | Массив данных сессии, которая перенаправляется на нового оператора. Текущий оператор, с которого предполагается снять диалог, указан в элементе OPERATOR_ID. |
config | Информация об открытой линии, к которой принадлежит сессия. |
chat | Объект Bitrix\ImOpenLines\Chat из которого можно получить информацию о чате, который относится к сессии. |
reasonReturn |
Причина
Перечень доступных причин:
Внимание! Актуальный список причин можно увидеть в классе \Bitrix\ImOpenLines\Queue.
\Bitrix\ImOpenLines\Queue::REASON_DEFAULT; //по умолчанию \Bitrix\ImOpenLines\Queue::REASON_OPERATOR_ABSENT = 'VACATION'; //отпуск \Bitrix\ImOpenLines\Queue::REASON_OPERATOR_DAY_PAUSE = 'NONWORKING'; //нерабочее время \Bitrix\ImOpenLines\Queue::REASON_OPERATOR_DAY_END = 'NONWORKING'; //нерабочее время \Bitrix\ImOpenLines\Queue::REASON_OPERATOR_DELETED = 'DISMISSAL'; //оператор уволен \Bitrix\ImOpenLines\Queue::REASON_REMOVED_FROM_QUEUE = 'REMOVING'; //оператор удален \Bitrix\ImOpenLines\Queue::REASON_OPERATOR_NOT_AVAILABLE = 'NOT_AVAILABLE'; //оператор недоступен \Bitrix\ImOpenLines\Queue::REASON_OPERATOR_OFFLINE = 'OFFLINE'; //оператор не в сети \Bitrix\ImOpenLines\Queue::REASON_QUEUE_TYPE_CHANGED = 'DEFAULT'; //по умолчанию того, почему происходит назначение нового оператора. |
newOperatorQueue | Массив. Самый важный параметр, который и необходимо вернуть в событии. При необходимости в элементы массива можно вносить изменения и изменять штатную логику.
Элементы массива:
|
Проверка на корректность
Внимательно проверяется корректность данных, которые возвращает обработчик. Если что-то не пройдет проверку, то отработает штатный алгоритм, как будто бы обработчика и нет.
Было создано дополнительное событие OnErrorEventBeforeSessionTransfer.
На него можно подписать на время отладки. В параметрах передается массив ошибок и объект, который вернул обработчик события.
Пример результата
array ( 'errors' => array ( 0 => 'The result of the processing of the event returned with an error', ), 'eventResult' => Bitrix\Main\EventResult::__set_state(array( 'moduleId' => NULL, 'handler' => NULL, 'type' => 0, 'parameters' => array ( 'RESULT' => 5, ), )), )
Данное решение должно существенно облегчить дебаг.
Пример кода
"Болванка" событий
$eventManager = \Bitrix\Main\EventManager::getInstance(); $eventManager->addEventHandler('imopenlines', 'OnBeforeSessionTransfer', 'onBeforeSessionTransfer'); $eventManager->addEventHandler('imopenlines', 'OnErrorEventBeforeSessionTransfer', 'onErrorEventBeforeSessionTransfer'); public static function onBeforeSessionTransfer(\Bitrix\Main\Event $event) { $eventParams = $event->getParameters(); //test define("LOG_FILENAME", $_SERVER["DOCUMENT_ROOT"]."/log.txt"); AddMessage2Log(var_export($eventParams,1), 'onBeforeSessionTransfer'); //END test $eventParams['newOperatorQueue'] = [ 'RESULT' => true, 'OPERATOR_ID' => 1, 'OPERATOR_LIST' => [], 'DATE_QUEUE' => false, 'QUEUE_HISTORY' => [ 1 => true, ], ]; return new \Bitrix\Main\EventResult( \Bitrix\Main\EventResult::SUCCESS, $eventParams ); } public static function onErrorEventBeforeSessionTransfer(\Bitrix\Main\Event $event) { $eventParams = $event->getParameters(); //test define("LOG_FILENAME", $_SERVER["DOCUMENT_ROOT"]."/log.txt"); AddMessage2Log(var_export($eventParams,1), 'OnErrorEventBeforeSessionTransfer'); //END test }
© «Битрикс», 2001-2024, «1С-Битрикс», 2024