Отправка сообщений в 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]. Не знаете как их отфильтровать?
Hi there,
We run an Instagram growth service, which increases your number of followers both safely and practically.
— Guaranteed: We guarantee to gain you 400-1200+ followers per month.
— Real, human followers: People follow you because they are interested in your business or niche.
— Safe: All actions are made manually. We do not use any bots.
The price is just $60 (USD) per month, and we can start immediately.
If you are interested, and have any questions, reply back and we can discuss further.
Kind Regards,
Megan
Спасибо большое!
Что делать если SMTP блочит отправку. Распознает как спам.
Hi there,
We run an Instagram growth service, which increases your number of followers safely and practically.
We aim to gain you 300-1000+ real human followers per month, with all actions safe as they are made manually (no bots).
The price is just $60 (USD) per month, and we can start immediately.
Let me know if you are interested and have any questions.
Kind Regards,
Megan