• Модуль: imbot
  • Путь к файлу: ~/bitrix/modules/imbot/lib/bot/network.php
  • Класс: BitrixImBotBotNetwork
  • Вызов: Network::operatorMessageUpdate
static function operatorMessageUpdate($messageId, $messageFields)
{
	if (!MainLoader::includeModule('im'))
	{
		return false;
	}

	$messageParamData = ImModelMessageParamTable::getList([
		'select' => ['PARAM_VALUE'],
		'filter' => ['=MESSAGE_ID' => $messageId, '=PARAM_NAME' => self::MESSAGE_PARAM_CONNECTOR_MID]
	])->fetch();
	if (!$messageParamData || $messageParamData['PARAM_VALUE'] != $messageFields['CONNECTOR_MID'])
	{
		return false;
	}

	$attach = null;
	if (!empty($messageFields['ATTACH']))
	{
		$attach = CIMMessageParamAttach::getAttachByJson($messageFields['ATTACH']);
	}

	$keyboard = [];
	if (!empty($messageFields['KEYBOARD']))
	{
		$keyboard = self::processIncomingKeyboard($messageFields);
	}

	if (!empty($messageFields['FILES']))
	{
		if (!$attach)
		{
			$attach = new CIMMessageParamAttach(null, CIMMessageParamAttach::CHAT);
		}
		foreach ($messageFields['FILES'] as $key => $value)
		{
			$attach->addFiles([[
				'NAME' => $value['name'],
				'LINK' => $value['link'],
				'SIZE' => $value['size'],
			]]);
		}
	}

	$messageFields['URL_PREVIEW'] = isset($messageFields['URL_PREVIEW']) && $messageFields['URL_PREVIEW'] == 'N'? 'N': 'Y';

	return ImBot::updateMessage(['BOT_ID' => $messageFields['BOT_ID']], [
		'MESSAGE_ID' => $messageId,
		'DIALOG_ID' => $messageFields['DIALOG_ID'],
		'MESSAGE' => $messageFields['MESSAGE'],
		'URL_PREVIEW' => $messageFields['URL_PREVIEW'],
		'KEYBOARD' => $keyboard,
		'ATTACH' => $attach,
		'SKIP_CONNECTOR' => 'Y',
		'EDIT_FLAG' => 'Y',
	]);
}