- Модуль: imopenlines
- Путь к файлу: ~/bitrix/modules/imopenlines/lib/connector.php
- Класс: BitrixImOpenLinesConnector
- Вызов: Connector::onStartWriting
static function onStartWriting($params)
{
if (
empty($params['CHAT']) ||
!in_array($params['CHAT']['ENTITY_TYPE'], ['LINES', 'LIVECHAT']) ||
$params['BY_EVENT']
)
{
$result = true;
}
else
{
if ($params['CHAT']['ENTITY_TYPE'] == 'LINES')
{
$chatData = Chat::parseLinesChatEntityId($params['CHAT']['ENTITY_ID']);
$userCode = $params['CHAT']['ENTITY_ID'];
}
else // LIVECHAT
{
$chatData = Chat::parseLinesChatEntityId($params['CHAT']['ENTITY_ID']);
$chatData['connectorChatId'] = 0;
$chatData['connectorId'] = self::TYPE_LIVECHAT;
$userCode = $chatData['connectorId'] . '|' . $chatData['lineId'] . '|' . $params['CHAT']['ID'] . '|' . $params['USER_ID'];
$orm = ModelSessionTable::getList([
'select' => ['CHAT_ID'],
'filter' => [
'=USER_CODE' => $userCode,
'=CLOSED' => 'N'
]
]);
if ($session = $orm->fetch())
{
$chatData['connectorChatId'] = $session['CHAT_ID'];
}
}
if (
$chatData['connectorChatId'] <= 0 &&
!self::isNeedConnectorWritingStatus($chatData['connectorId'])
)
{
$result = true;
}
else
{
$chat = new Chat($params['CHAT']['ID']);
if (
$chat->isSilentModeEnabled() ||
$params['LINES_SILENT_MODE']
)
{
$result = true;
}
else
{
$actualLineId = Queue::getActualLineId([
'LINE_ID' => $chatData['lineId'],
'USER_CODE' => $userCode
]);
$fields = [
'connector' => [
'connector_id' => $chatData['connectorId'],
'line_id' => $chatData['lineId'],
'user_id' => $chatData['connectorUserId'],
'chat_id' => $chatData['connectorChatId'],
],
'chat' => ['id' => $chatData['connectorChatId']],
'user' => Queue::getUserData($actualLineId, $params['USER_ID'])
];
$result = (new self())->sendStatusWriting($fields);
}
}
}
return $result;
}