• Модуль: imopenlines
  • Путь к файлу: ~/bitrix/modules/imopenlines/lib/connector.php
  • Класс: BitrixImOpenLinesConnector
  • Вызов: Connector::onMessageUpdate
static function onMessageUpdate($messageId, $messageFields, $flags)
{
	if (
		$flags['BY_EVENT']
		|| !isset($messageFields['PARAMS']['CONNECTOR_MID'])
	)
	{
		return false;
	}

	//TODO: Replace with the method ImOpenLinesChat::parseLinesChatEntityId or ImOpenLinesChat::parseLiveChatEntityId
	[$connectorId, $lineId, $connectorChatId] = explode('|', $messageFields['CHAT_ENTITY_ID']);

	if ($messageFields['CHAT_ENTITY_TYPE'] == 'LINES')
	{
	}
	else if (self::isLiveChat($messageFields['CHAT_ENTITY_TYPE']))
	{
		$connectorId = self::TYPE_LIVECHAT;
	}
	else
	{
		return false;
	}

	if (
		$messageFields['SYSTEM'] != 'Y'
		&& self::isEnableSendMessageWithSignature($connectorId, $lineId)
		&& $messageFields['AUTHOR_ID'] > 0
	)
	{
		$flags['TEXT'] =
			'[b]' . htmlspecialchars_decode(self::getOperatorName($lineId, $messageFields['AUTHOR_ID'], $messageFields['CHAT_ENTITY_ID'])) . ':[/b]'.
			($flags['TEXT'] <> ''? '[br] '.$flags['TEXT']: '');
	}

	if ($connectorId == self::TYPE_LIVECHAT)
	{
		CIMMessenger::DisableMessageCheck();
		foreach($messageFields['PARAMS']['CONNECTOR_MID'] as $mid)
		{
			CIMMessenger::Update($mid, $flags['TEXT'], $flags['URL_PREVIEW'], $flags['EDIT_FLAG'], $flags['USER_ID'], true);
		}
		CIMMessenger::EnableMessageCheck();
	}
	else if (
		isset($lineId) && isset($connectorChatId)
		&& !empty($messageFields['PARAMS']['CONNECTOR_MID'])
		&& is_array($messageFields['PARAMS']['CONNECTOR_MID'])
		&& Loader::includeModule('imconnector')
	)
	{
		$fields = [
			'im' => [
				'chat_id' => $messageFields['CHAT_ID'],
				'message_id' => $messageFields['ID']
			],
			'message' => [
				'id' => $messageFields['PARAMS']['CONNECTOR_MID'],
				'text' => $flags['TEXT'],
			],
			'chat' => [
				'id' => $connectorChatId
			],
		];

		$connector = new Output($connectorId, $lineId);
		$connector->updateMessage([$fields]);
	}

	return true;
}