Уведомление в Telegram о новом элементе инфоблока Bitrix

Как сделать так, чтобы при добавлении элемента в инфоблок, в телеграм приходило уведомление о добавленном элементе? Сейчас пошагово разберем данный вопрос.
Для начала нам нужно создать бота в Telegram, для этого откроем BotFather

Создаем нового бота, вводим название и username нашего бота

Обязательно скопируем токен, он нам пригодится
После того как мы создали бота, нам нужно перейти в папку bitrix/php_interface и открыть файл init.php
В любом удобном месте вставляем код:
/* Уведомление в TG бот */
AddEventHandler("iblock", "OnAfterIBlockElementAdd", array("TG_BOT", "message_to_telegram"));
class TG_BOT
{
public static $token = 'ВАШ_ТОКЕН';
public static $iblock_id = 1;
public function message_to_telegram(&$arFields)
{
if ($arFields["IBLOCK_ID"] == self::$iblock_id && !empty($arFields["NAME"]) && !empty($arFields["PREVIEW_TEXT"])) {
$arFilter = array("IBLOCK_ID" => self::$iblock_id, "ID" => $arFields["ID"]);
$res = CIBlockElement::GetList(array(), $arFilter);
if ($ob = $res->GetNextElement()) {
$arFields = $ob->GetFields();
$arProps = $ob->GetProperties();
/*
* Можно добавить свойства
$author = $arProps["author"]["VALUE"];
*/
}
$ch = curl_init();
$message = "<b>" . $arFields["NAME"] . "</b>\n\n" . $arFields["PREVIEW_TEXT"] . "\n<a href='https://вашдомен.ru/news/" . $arFields["ID"] . "'>https://вашдомен.ru/news/" . $arFields["ID"] . "</a>";
$text = strip_tags($message, '<a><b>');
$users = file_get_contents(__DIR__ . '/chat_id.txt');
$users = explode("\n", $users);
foreach ($users as $user) {
curl_setopt_array(
$ch,
array(
CURLOPT_URL => 'https://api.telegram.org/bot' . self::$token . '/sendMessage',
CURLOPT_POST => TRUE,
CURLOPT_RETURNTRANSFER => TRUE,
CURLOPT_TIMEOUT => 10,
CURLOPT_POSTFIELDS => array(
'chat_id' => $user,
'text' => $text,
'parse_mode' => html,
),
)
);
curl_exec($ch);
}
}
}
}
/* Уведомление в TG бот */
В переменную $token вставляем токен который мы получили при создании бота, в переменной $iblock_id указываем ID инфоблока из которого мы хотим получать уведомления о новых записях
Теперь нам нужно в этой же директории создать файл chat_id.txt в нем мы будем хранить ID пользователей которые будут получать уведомления
свой chat_id можно узнать сделав запрос https://api.telegram.org/botВАШ_ТОКЕН/getUpdates, после того как вы запустите бота командой /start в ответе появится результат в виде JSON

chat->id это и есть ваш ID, внесите его в файл chat_id.txt. В файле можно прописывать множество ID разных пользователей. Каждый ID с новой строки.
Если вам данный способ не удобен, свой ID можно узнать в боте userinfobot

Проверяем добавление


Как видно функционал уведомления в Telegram о новых добавленных элементах делается быстро.
Это может быть полезно если вы модерируете новостной портал, и всегда должны видеть что добавляют сотрудники.