Отправка сообщений в Telegram из Contact Form 7
2 марта 2020 WordPress Telegram
Мы уже рассматривали как отправлять сообщения в телеграмм из обычного PHP скрипта и заказы из OpenCart. В этой статье вы узнаете как отправлять сообщения в телеграмм из плагина WordPress Contact Form 7.
Содержание
Создаем бота
Боты в Telegram создаются через другого специального бота @BotFather. Нужно найти его и отправить ему команду /start.
Для создания нового бота отправляем следующую команду /newbot. После чего бот запросит имя вашего нового бота, оно обязательно должно заканчиваться на Bot. В случае успеха в ответ получаем уникальный токен бота, который понадобится для дальнейшей работы. И не забудьте добавить вновь созданного бота в ваши контакты отправив ему команду /start
Получаем токен и chat id бота
Чтобы отправить сообщение пользователю через бота достаточно вызвать определенный URL из PHP скрипта содержащий токен бота и внутренний ID чата chat id.
Вам понадобился ремонт компьютера? Ремонт компьютеров и другой компьютерной техники может потребоваться везде, где она используется по ее прямому назначению. В услуги по ремонту и обслуживанию компьютера и сопутствующего оборудования обычно входит диагностика и восстановление работоспособности, реанимация и замена отдельных блоков системы, установка и настройка программного обеспечения и другие ремонтные работы согласно техническому заключению о поломках.
Токен бота у нас уже есть, а chat id можно получить 2 способами:
- Написать боту @ShowJsonBot любой текст. В ответ он вернет вам некие данные в JSON формате. Находим объект chat и в нем id — это и есть ваш chat id.
- В адресной строке ввести https://api.telegram.org/bot<YourBOTToken>/getUpdates где
<YourBOTToken>
— это ранее полученный токен вашего бота. Находим объект chat и в нем id — это и есть ваш chat id.
Отправка сообщений из плагина WordPress Contact Form 7 в Telegram
Для удобства я сохранил код в отдельный файл и включил его в плагине. Итак создаем файл telegram.php в текущем шаблоне и добавляем в него следующий код:
<? // токен бота define('TELEGRAM_TOKEN', '123456789:XXXXXXXXXXXXXXXXXXXXXXX'); // ваш внутренний ID define('TELEGRAM_CHATID', '123456789'); $message = str_replace("\n", ' ', strip_tags($body)); $ch = curl_init('https://api.telegram.org/bot'.TELEGRAM_TOKEN.'/sendMessage?chat_id='.TELEGRAM_CHATID.'&text='.$message); // URL curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // Не возвращать ответ curl_exec($ch); // Делаем запрос curl_close($ch); // Завершаем сеанс cURL ?>
В файле /wp-content/plugins/contact-form-7/includes/mail.php подключаем файл перед функцией return wp_mail( $recipient, $subject, $body, $headers, $attachments );
это примерно 133 строка:
include_once(get_template_directory().'/telegram.php');
Отправка сообщений в группу
Чтобы бот мог отправлять сообщения в группу, необходимо дать ему определенные разрешения.
Опять заходим в @BotFather и вводим следующую команду: /setjoingroups
, выбираем нашего бота и команду Enabled
. Теперь бота можно добавлять в группы. Далее необходимо разрешить боту читать и писать все сообщения, делается это командой /setprivacy
установленной наоборот в Disabled
.
Теперь добавляем бота в группу Telegram, как обычного участника.
Теперь необходимо добавить бота в группу. Сделать это можно в настройках группы в разделе Добавить участника. В поиске необходимо ввести имя вашего бота и нажать OK.
Теперь в настройках скрипта нужно изменить chat id пользователя, на chat id нужной группы. Для этого предварительно нужно написать любое сообщение в чат, а затем в адресной строке ввести https://api.telegram.org/bot<YourBOTToken>/getUpdates где <YourBOTToken>
— это ранее полученный токен вашего бота. После находим объект chat и в нем id — это и будет chat id группы.
спасибо
Добрый день, спасибо за материал, подскажите пожалуйста как сделать, чтоб после каждого поля контактной формы был перенос строки, а телефон был кликабельным?
Добрый день! Передайте HTML в поле parse_mode при использовании sendMessage.
Спасибо дружище), я тупанул, там в самой настройки формы СF7 надо было добавить %0A после каждого поля, а чтоб «плюсик» номера восстановить — добавить %2B перед номером. Вопрос еще такой, может подскажешь, если в поле textarea в contact form 7 при вводе текста сделать перенос строки(нажать ентер), то форма не отправит данные, хотя сообщение об успешной отправке появится. Это же просто ужас, клиент нажмет перевод строки и ты потеряешь клиента, так как его сообщение не отправится… Как этот можно исправить?
Добрый день!
Спасибо.
Если плагин обновится изменения затрутся?
Возможно письмо отправляется, но не доходит из-за символов, которые появляются при переводе строки.
Да, возможно после обновления надо будет вновь подключить скрипт в плагине.
А если у меня много форм обратной связи и я хочу, чтоб данные из каждой формы отправлялись в свою группу телеграм?
Перед скриптом отправки получать ID формы и в зависимости от неё менять параметры бота.
«После находим объект chat и в нем id — это и будет chat id группы.» — где находим? После ввода в адресной строке https://api.telegram.org/bot/getUpdates получил в ответ {«ok»:true,»result»:[]}
Видимо вы предварительно не отправили любое сообщение в группу, где находится бот.
Здравствуйте, все вышеуказанное проделал. Отправляю форму на сайте, но сообщения не приходят на телегу. Какие-то может после проделанной настройки работы еще в плагине Contact Form 7 должны производиться?
Нет, только вызов скрипта в коде плагина. Проверьте, что скрипт и бот верно настроен.
Огромное спасибо, все получилось!
Сделал всё пошагово по инструкции, проверил, с подключенным файлом telegram.php сообщения из формы вообще не отправляются, крутится анимация процесса отправки и всё, что может быть не так?
У вас ошибка в коде telegram.php
Спасибо за инструкцию, у меня получилось
Приветствую. Куда нужно положить файл telegram.php? Не отправляются сообщения вроде все сделал по инструкции.
Разобрался в тему кидать, огонь, спасибо
Перестали приходить с сайта в телеграмм бот сообщения….все работало и вдруг дня три ничего не приходит….
возможно обновили плагин CF-7 попробуйте заново отредактировать mail.php
Дякую! Все супер, але telegram.php потрібно закидати в папку с актуальною темою 🙂
Приветствую! всё приходит, но со штрихкодами, типо [tel], [name]. Не знаете как их отфильтровать?
Спасибо большое!
Что делать если SMTP блочит отправку. Распознает как спам.