- Модуль: im
- Путь к файлу: ~/bitrix/modules/im/lib/app.php
- Класс: BitrixImApp
- Вызов: App::addMessage
static function addMessage(array $app, array $messageFields)
{
$appId = intval($app['ID']);
$moduleId = isset($app['MODULE_ID'])? $app['MODULE_ID']: '';
$restAppId = isset($app['APP_ID'])? $app['APP_ID']: '';
if ($appId <= 0)
return false;
$apps = self::getListCache();
if (!isset($apps[$appId]))
return false;
if ($moduleId <> '' && $apps[$appId]['MODULE_ID'] != $moduleId)
return false;
if ($restAppId <> '' && $apps[$appId]['APP_ID'] != $restAppId)
return false;
$botId = intval($apps[$appId]['BOT_ID']);
if (Common::isChatId($messageFields['DIALOG_ID']))
{
$chatId = BitrixImDialog::getChatId($messageFields['DIALOG_ID']);
$relations = CIMChat::GetRelationById($chatId, false, true, false);
}
else
{
$userId = intval($messageFields['DIALOG_ID']);
if (!$userId || $botId == $userId)
{
return false;
}
$relations = CIMChat::GetPrivateRelation($botId, $userId);
}
if ($botId && !BotToken::isActive($botId, $messageFields['DIALOG_ID']))
{
return false;
}
$messageFields['ATTACH'] = $messageFields['ATTACH']? $messageFields['ATTACH']: null;
$messageFields['KEYBOARD'] = $messageFields['KEYBOARD']? $messageFields['KEYBOARD']: null;
$fromUserId = isset($messageFields['FROM_USER_ID'])? $messageFields['FROM_USER_ID']: $botId;
if (Common::isChatId($messageFields['DIALOG_ID']))
{
$chatId = BitrixImDialog::getChatId($messageFields['DIALOG_ID']);
if ($chatId <= 0)
return false;
if (isset($relations[$fromUserId]) && $messageFields['SYSTEM'] != 'Y')
{
$ar = Array(
"FROM_USER_ID" => $fromUserId,
"TO_CHAT_ID" => $chatId,
"ATTACH" => $messageFields['ATTACH'],
"KEYBOARD" => $messageFields['KEYBOARD'],
);
if (isset($messageFields['MESSAGE']))
{
$ar['MESSAGE'] = $messageFields['MESSAGE'];
}
}
else
{
$ar = Array(
"FROM_USER_ID" => isset($relations[$fromUserId])? $fromUserId: 0,
"TO_CHAT_ID" => $chatId,
"ATTACH" => $messageFields['ATTACH'],
"KEYBOARD" => $messageFields['KEYBOARD'],
"SYSTEM" => 'Y',
);
if (isset($messageFields['MESSAGE']))
{
$ar['MESSAGE'] = $messageFields['MESSAGE'];
}
$ar['MESSAGE'] = "[B]".$apps[$appId]['TITLE']."[/B]n".$ar['MESSAGE'];
}
if (isset($messageFields['URL_PREVIEW']) && $messageFields['URL_PREVIEW'] == 'N')
{
$ar['URL_PREVIEW'] = 'N';
}
$ar['SKIP_USER_CHECK'] = 'Y';
$ar['SKIP_COMMAND'] = 'Y';
$id = CIMChat::AddMessage($ar);
}
else
{
$userId = intval($messageFields['DIALOG_ID']);
CModule::IncludeModule('imbot');
if (isset($relations[$fromUserId]) && $messageFields['SYSTEM'] != 'Y')
{
$ar = Array(
"FROM_USER_ID" => $fromUserId,
"TO_USER_ID" => $userId,
"ATTACH" => $messageFields['ATTACH'],
"KEYBOARD" => $messageFields['KEYBOARD'],
);
if (isset($messageFields['MESSAGE']))
{
$ar['MESSAGE'] = $messageFields['MESSAGE'];
}
}
else
{
$ar = Array(
"FROM_USER_ID" => isset($relations[$fromUserId])? $fromUserId: 0,
"TO_USER_ID" => $userId,
"ATTACH" => $messageFields['ATTACH'],
"KEYBOARD" => $messageFields['KEYBOARD'],
"SYSTEM" => "Y",
);
if (isset($messageFields['MESSAGE']))
{
$ar['MESSAGE'] = $messageFields['MESSAGE'];
}
$ar['MESSAGE'] = "[B]".$apps[$appId]['TITLE']."[/B]n".$ar['MESSAGE'];
}
if (isset($messageFields['URL_PREVIEW']) && $messageFields['URL_PREVIEW'] == 'N')
{
$ar['URL_PREVIEW'] = 'N';
}
$ar['SKIP_COMMAND'] = 'Y';
$id = CIMMessage::Add($ar);
}
return $id;
}