Данная версия сайта устарела и не актуальна, рекомендуем перейти на новую версию сайта => https://webinvolga.ru/
Блог / PHP

Уведомление в 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 о новых добавленных элементах делается быстро.

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

20 февраля, 2025 /

Комментарии:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *