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
Пользовательские комментарии
Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.Для этого нужно всего лишь авторизоваться на сайте
Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.
Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.