Чтобы расширить логику уведомлений, форм или интеграций, можно заказать доработку функционала сайта на Битрикс.
В этой статье я расскажу, как настроить автоматическую отправку данных из веб-форм Bitrix в Telegram-бота. Это удобное решение для мгновенного уведомления менеджеров о новых заявках без ручного мониторинга CRM.
1. Создание Telegram-бота и получение токена
1. Откройте Telegram и найдите @BotFather.
2. Отправьте команду /newbot и следуйте инструкциям.
3. После создания бота вы получите токен (например, 123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11).
Как узнать chat_id?
Отправьте боту любое сообщение, затем перейдите по ссылке:
https://api.telegram.org/botВАШ_ТОКЕН/getUpdates
В ответе JSON найдите "id" в разделе chat – это и есть ваш chat_id.
код ниже добавляем в init.php, разберем некоторые моменты:
$result[“FORM_ID”] – это id формы, его можно посмотреть в админке по пути сервисы – веб-формы – результаты – настройка форм. в $formName указываем название формы.
$botToken – тут указываем токен бота
$chatId – тут указываем ID чата
/* telega */
use Bitrix\Main\Web\HttpClient; // Вешаем обработчик на событие добавления результата формы AddEventHandler("form", "onAfterResultAdd", "sendFormDataToTelegram"); function sendFormDataToTelegram($formId, $resultId) { $result = \CFormResult::GetByID($resultId)->Fetch();
// Получаем все ответы для этого результата $answers = \CFormResult::GetDataByID( $resultId, [], // массив полей, если пустой - все поля $arrResult, // массив с дополнительной информацией $arrAnswer // массив с ответами );
$extractedData = [ 'NAME' => $answers['NAME'][0]['USER_TEXT'], 'PHONE' => $answers['PHONE'][0]['USER_TEXT'], ];
if ($result["FORM_ID"] == 1) { $formName = "Программа лояльности"; } // Преобразуем массив в форматированную строку для Telegram $messageText = "📢 Новое сообщение из формы: " . $formName . "\n"; $messageText .= "<b>Имя:</b> " . htmlspecialcharsbx($extractedData['NAME']) . "\n"; $messageText .= "<b>Телефон:</b> " . htmlspecialcharsbx($extractedData['PHONE']) . "\n"; sendTelegramMessage($messageText); }
function sendTelegramMessage($text) { $botToken = 'токен бота'; //токен бота $chatId = 'id чата с ботом'; // id чата с ботом $url = "https://api.telegram.org/bot{$botToken}/sendMessage" $params = [ 'chat_id' => $chatId, 'text' => $text, 'parse_mode' => 'HTML', ];
$httpClient = new HttpClient(); $httpClient->setHeader('Content-Type', 'application/x-www-form-urlencoded'); $response = $httpClient->post($url, $params); if ($httpClient->getStatus() != 200) { Debug::writeToFile( "Telegram API Error: " . print_r(json_decode($response, true), true), "telegram_error.log" ); return false; }
return true; }
Готово, теперь при заполнении форм на сайте будут приходить уведомления в телеграмм в бот, если нужно что бы уведомления приходило нескольким людям, можно создать групповой чат и добавить туда этого бота.
Если нужно помочь с интеграцией или проконсультироваться вы можете написать мне в телеграмм или на почту.
Полезные материалы и услуги по теме
Как сделать Telegram-уведомления надежными
Уведомление о заявке должно помогать менеджеру быстро начать работу, а не быть единственным местом хранения данных. Заявка сначала сохраняется в форме или CRM, затем сайт формирует короткое сообщение для Telegram. Если мессенджер временно недоступен, заявка не должна теряться.
Что должно быть в сообщении
- время и источник обращения;
- имя и телефон в том виде, в котором их оставил клиент;
- страница, с которой отправлена форма;
- идентификатор заявки для поиска в админке;
- ссылка на карточку лида, если используется CRM.
Безопасность интеграции
Токен бота нельзя хранить в открытом JavaScript, HTML или публичном репозитории. Его следует держать в настройках сервера или защищенном файле конфигурации. Доступ к чату нужно ограничить, а в журнале не записывать лишние персональные данные и токены.
Проверка перед запуском
- Отправьте тестовую заявку с компьютера и телефона.
- Проверьте русские символы, переносы строк и ссылку на страницу.
- Отключите Telegram на короткое время и убедитесь, что заявка сохранилась.
- Проверьте повторную отправку после временной ошибки и отсутствие дублей.
- Убедитесь, что в сообщении нет паролей, платежных данных и скрытых полей.
Если уведомления нужно связать с формами, CRM или каталогом, пригодятся доработка сайта на Битрикс, интеграция чат-бота и техническая поддержка.