- Модуль: imbot
- Путь к файлу: ~/bitrix/modules/imbot/lib/bot/network.php
- Класс: BitrixImBotBotNetwork
- Вызов: Network::updateMessage
static function updateMessage(int $messageId, array $messageFields)
{
if (!MainLoader::includeModule('im'))
{
return false;
}
if ($messageId <= 0)
{
return false;
}
$messageRes = ImModelMessageTable::getByPrimary($messageId);
if (!($message = $messageRes->fetch()))
{
return false;
}
if (isset($messageFields['ATTACH']) && (!$messageFields['ATTACH'] instanceof CIMMessageParamAttach))
{
$messageFields['ATTACH'] = CIMMessageParamAttach::getAttachByJson($messageFields['ATTACH']);
}
if (isset($messageFields['KEYBOARD']) && (!$messageFields['KEYBOARD'] instanceof Keyboard))
{
$keyboard = ['BOT_ID' => static::getBotId()];
if (!isset($messageFields['KEYBOARD']['BUTTONS']))
{
$keyboard['BUTTONS'] = $messageFields['KEYBOARD'];
}
else
{
$keyboard = $messageFields['KEYBOARD'];
}
$messageFields['KEYBOARD'] = Keyboard::getKeyboardByJson($keyboard, [], ['ENABLE_FUNCTIONS' => 'Y']);
}
if (!empty($messageFields['FILES']) && is_array($messageFields['FILES']))
{
if (!$messageFields['ATTACH'])
{
$messageFields['ATTACH'] = new CIMMessageParamAttach(null, CIMMessageParamAttach::CHAT);
}
foreach ($messageFields['FILES'] as $value)
{
if ($value['type'] === 'image')
{
$messageFields['ATTACH']->addImages([[
'NAME' => $value['name'],
'LINK' => $value['link'],
'WIDTH' => (int)$value['width'],
'HEIGHT' => (int)$value['height'],
]]);
}
else
{
$messageFields['ATTACH']->addFiles([[
'NAME' => $value['name'],
'LINK' => $value['link'],
'SIZE' => $value['size'],
]]);
}
}
}
$userId = 0;
if (isset($messageFields['TO_USER_ID']))
{
$userId = (int)$messageFields['TO_USER_ID'];
}
elseif (isset($messageFields['DIALOG_ID']))
{
if (!ImCommon::isChatId($messageFields['DIALOG_ID']))
{
$userId = (int)$messageFields['DIALOG_ID'];
}
}
$messageFields['MESSAGE'] = static::replacePlaceholders($messageFields['MESSAGE'], $userId);
return ImBot::updateMessage(['BOT_ID' => static::getBotId()], [
'MESSAGE_ID' => $messageId,
'MESSAGE' => $messageFields['MESSAGE'],
'KEYBOARD' => $messageFields['KEYBOARD'] ?? null,
'ATTACH' => $messageFields['ATTACH'] ?? null,
'URL_PREVIEW' => ($messageFields['URL_PREVIEW'] === 'Y' ? 'Y' : 'N'),
'EDIT_FLAG' => ($messageFields['EDIT_FLAG'] === 'N' ? 'N' : 'Y'),
'SKIP_CONNECTOR' => 'Y',
]);
}