- Модуль: imbot
- Путь к файлу: ~/bitrix/modules/imbot/lib/service/notifier.php
- Класс: BitrixImBotServiceNotifier
- Вызов: Notifier::notifyChannel
static function notifyChannel(array $params): Result
{
$result = new Result;
/**
* @global CMain $APPLICATION
*/
global $APPLICATION;
$classSupport = self::detectSupportBot();
$chatId = self::getChannel();
if (!$chatId)
{
$result = self::createChannel();
if ($result->isSuccess())
{
$chatId = $result->getData()['chatId'];
}
}
else
{
self::checkChannelMembers($chatId);
}
if ($result->isSuccess())
{
$messageFields = [
'MESSAGE_TYPE' => IM_MESSAGE_CHAT,
'TO_CHAT_ID' => $chatId,
'FROM_USER_ID' => $classSupport::getBotId(),
'PARAMS' => [
ImBotBotNetwork::MESSAGE_PARAM_ALLOW_QUOTE => 'Y',
],
'MESSAGE' => $params['MESSAGE'],
'URL_PREVIEW' => $params['URL_PREVIEW'] === 'N' ? 'N': 'Y',
];
if (!empty($params['ATTACH']))
{
$messageFields['ATTACH'] = CIMMessageParamAttach::getAttachByJson($params['ATTACH']);
}
// feedback button
if (!empty($params['KEYBOARD']))
{
if (!isset($params['KEYBOARD']['BUTTONS']))
{
$keyboard['BUTTONS'] = $params['KEYBOARD'];
}
else
{
$keyboard = $params['KEYBOARD'];
}
$keyboard['BOT_ID'] = $classSupport::getBotId();
$messageFields['KEYBOARD'] =
ImBotKeyboard::getKeyboardByJson($keyboard);
}
else
{
$feedback = $classSupport::getMessage('NOTIFIER_FEEDBACK');
if (!$feedback)
{
$feedback = Loc::getMessage('IMBOT_NOTIFIER_FEEDBACK_SUPPORT');
}
$keyboard = new ImBotKeyboard($classSupport::getBotId());
$keyboard->addButton([
'DISPLAY' => "LINE",
'TEXT' => $feedback,
'BG_COLOR' => "#29619b",
'TEXT_COLOR' => "#fff",
'BLOCK' => "Y",
'COMMAND' => $classSupport::COMMAND_START_DIALOG,
]);
$messageFields['KEYBOARD'] = $keyboard;
}
$messageId = CIMMessenger::add($messageFields);
if (!$messageId)
{
/**
* @var CApplicationException $error
*/
$error = $APPLICATION->getException();
if ($error)
{
$result->addError(new MainError($error->getString(), $error->getId()));
}
else
{
$result->addError(new MainError(
'Cannot send message to admin group',
'ERROR_DELIVER_NOTIFICATION'
));
}
}
}
return $result;
}