- Модуль: imopenlines
- Путь к файлу: ~/bitrix/modules/imopenlines/lib/livechat.php
- Класс: BitrixImOpenLinesLiveChat
- Вызов: LiveChat::onMessageSend
static function onMessageSend($messageId, $messageFields)
{
$chatEntityType = $messageFields['CHAT_ENTITY_TYPE'] ?? null;
if ($chatEntityType !== 'LIVECHAT')
{
return false;
}
$messageFields['MESSAGE_ID'] = $messageId;
Log::write($messageFields, 'LIVECHAT MESSAGE SEND');
if ($messageFields['SKIP_CONNECTOR'] == 'Y')
{
return false;
}
[$lineId, $userId] = explode("|", $messageFields['CHAT_ENTITY_ID']);
$extraFields = Array();
if ($messageFields['AUTHOR_ID'] > 0)
{
$user = BitrixImUser::getInstance($messageFields['AUTHOR_ID']);
if ($userId == $messageFields['AUTHOR_ID'])
{
$extraFields['EXTRA_URL'] = $user->getWebsite();
}
else if (!$user->isConnector() && !$user->isBot())
{
return false;
}
}
$chatId = $messageFields['TO_CHAT_ID'];
if (
trim($messageFields['MESSAGE']) == '' &&
empty($messageFields["ATTACH"]) &&
empty($messageFields["FILES"])
)
{
return false;
}
$files = [];
if(!empty($messageFields["FILES"]))
{
foreach ($messageFields["FILES"] as $field)
{
$files[] = File::getById($field['id'])->getFileId();
}
}
$message = [
'id' => $messageId,
'date' => "",
'text' => $messageFields['MESSAGE'],
'files' => $files,
'attach' => $messageFields['ATTACH'],
'system' => $messageFields['SYSTEM'],
];
$event = new BitrixMainEvent('imconnector', 'OnReceivedMessage', [
'user' => $messageFields['CHAT_AUTHOR_ID'],
'connector' => 'livechat',
'line' => $lineId,
'chat' => ['id' => $chatId],
'message' => $message,
'extra' => $extraFields
]);
$event->send();
return true;
}