- Модуль: im
- Путь к файлу: ~/bitrix/modules/im/lib/bot.php
- Класс: BitrixImBot
- Вызов: Bot::updateMessage
static function updateMessage(array $bot, array $messageFields)
{
$botId = $bot['BOT_ID'];
$moduleId = isset($bot['MODULE_ID'])? $bot['MODULE_ID']: '';
$appId = isset($bot['APP_ID'])? $bot['APP_ID']: '';
if (intval($botId) <= 0)
return false;
if (!BitrixImUser::getInstance($botId)->isExists() || !BitrixImUser::getInstance($botId)->isBot())
return false;
$bots = self::getListCache();
if (!isset($bots[$botId]))
return false;
if ($moduleId <> '' && $bots[$botId]['MODULE_ID'] != $moduleId)
return false;
if ($appId <> '' && $bots[$botId]['APP_ID'] != $appId)
return false;
$messageId = intval($messageFields['MESSAGE_ID']);
if ($messageId <= 0)
return false;
$message = CIMMessenger::CheckPossibilityUpdateMessage(IM_CHECK_UPDATE, $messageId, $botId);
if (!$message)
return false;
if (isset($messageFields['ATTACH']))
{
if (empty($messageFields['ATTACH']) || $messageFields['ATTACH'] == 'N')
{
CIMMessageParam::Set($messageId, Array('ATTACH' => Array()));
}
else if ($messageFields['ATTACH'] instanceof CIMMessageParamAttach)
{
if ($messageFields['ATTACH']->IsAllowSize())
{
CIMMessageParam::Set($messageId, Array('ATTACH' => $messageFields['ATTACH']));
}
}
}
if (isset($messageFields['KEYBOARD']))
{
if (empty($messageFields['KEYBOARD']) || $messageFields['KEYBOARD'] == 'N')
{
CIMMessageParam::Set($messageId, Array('KEYBOARD' => 'N'));
}
else if ($messageFields['KEYBOARD'] instanceof BitrixImBotKeyboard)
{
if ($messageFields['KEYBOARD']->isAllowSize())
{
CIMMessageParam::Set($messageId, Array('KEYBOARD' => $messageFields['KEYBOARD']));
}
}
}
if (isset($messageFields['MENU']))
{
if (empty($messageFields['MENU']) || $messageFields['MENU'] == 'N')
{
CIMMessageParam::Set($messageId, Array('MENU' => 'N'));
}
else if ($messageFields['MENU'] instanceof BitrixImBotContextMenu)
{
if ($messageFields['MENU']->isAllowSize())
{
CIMMessageParam::Set($messageId, Array('MENU' => $messageFields['MENU']));
}
}
}
if (isset($messageFields['MESSAGE']))
{
$urlPreview = isset($messageFields['URL_PREVIEW']) && $messageFields['URL_PREVIEW'] == "N"? false: true;
$skipConnector = isset($messageFields['SKIP_CONNECTOR']) && $messageFields['SKIP_CONNECTOR'] == "Y"? true: false;
$editFlag = isset($messageFields['EDIT_FLAG']) && $messageFields['EDIT_FLAG'] == "Y"? true: false;
$res = CIMMessenger::Update($messageId, $messageFields['MESSAGE'], $urlPreview, $editFlag, $botId, $skipConnector);
if (!$res)
{
return false;
}
}
CIMMessageParam::SendPull($messageId, Array('KEYBOARD', 'ATTACH', 'MENU'));
return true;
}