Categories: Php

Заявки с формы обратной связи в telegram

Идеальная замена обычных уведомлений на почту — это telegram. Заявка сразу прилетает в месенджер, не нужно постоянно проверять почту. Кроме того, избавляемся от проблем исходящей почты на сервере.

Часто на хостинге отключена возможность рассылки почты. Также, из-за спама могут закрыть порты на сервере. Поэтому будем использовать уведомления в телеграм!

Как настроить отправку уведомлений с сайта в телеграм на php

Создаем бота в телеграм

Для начала нам понадобится бот. Создаем его через botfather, сохраняем токен. Сложностей возникнуть не должно, инструкций много. Далее идем на сайт.

Форма обратной связи — пример

Возьмем для примера простую форму обратной связи:

<form action-xhr="#" method="POST">
 Введите Ваше имя: <br><input type="text" placeholder="Ваше имя" name="call_user"><br><br>
 Контакт для обратной связи <br>(<i>это может быть эмейл или телеграм-аккаунт</i>): <br><input type="text" placeholder="*Email или телеграм" name="us_contact" required><br><br>
 Сообщение: <br><textarea name="mymes" cols="40" rows="10" placeholder="*Напишите здесь текст" required></textarea><br>
 <button class="btn-fill-primary" type="submit">Отправить</button>
</form>
* - обязательные поля.
Форма обратной связи, простой пример. Стили играют роль

Поля: имя (необязательно), контакт (обязательно, эмейл или телеграм) и сам текст сообщения (обязательный). Дальше нужен обработчик формы.

Напишем обработчик на php

Выкладываю код обработчика с комментариями:

<?php
$userId = '264121246'; // Id телеграм аккаунта, куда отправлять сообщения
$token = '101543549:AAJDsandkWEuhsd434Sd23G8'; // Token бота, если что - он ненастоящий   

$user_name = ' ('.$_POST["call_user"].')'; // Скобки для красоты, мне так удобнее
$user_contact = $_POST["us_contact"]; // Данные с поля "контакт пользователя"
$user_text = $_POST["mymes"]; // Текст сообщения

if (!empty($user_contact) and !empty($user_text)) { // Если поля "контакт" и "текст" не пусты. Дополнительная проверка при обработке формы (если будут боты слать запросы)
 $msg = '*Заявка с сайта bdseo.ru*

'; // Делаем первую строку "жирной". Переводы строки для удобства в телеграме.
 $msg .= $user_contact.$user_name; // Добавляем в текст поле "контакт" и имя
 $msg .= ' пишет:

'.$user_text; // Добавляем текст сообщения. Перевод строки опять же для удобства

file_get_contents('https://api.telegram.org/bot'. $token .'/sendMessage?chat_id='. $userId .'&text=' . urlencode($msg) . '&parse_mode=markdown'); // Отправляем запрос. Разметка - markdown

 echo "<strong>Спасибо, мы получили Ваше сообщение.</strong><hr>"; // Выводим сообщение что заявка ушла
}
?>

Самое главное тут file_get_contents, через него и делаем отсылку заявку на телеграм. Если нужны дополнительные данные (ошибка или вывод «ответа» от сервера телеграм), поместите file_get_contents в переменную и выводите ее или сохраняйте в логи.

Куда это все разместить

Смотря где у Вас форма и где обработчик (куда уходят данные, action). У меня все на одной странице.

Как отправить заявку нескольким аккаунтам

Способов много. Создайте еще один file_get_contents, или массив с id аккаунтов и используйте цикл (например, foreach).

Не приходят уведомления с формы — что делать

В самом начале нужно со своего аккаунта написать боту. Можно нажать стандартный /start, чтобы аккаунт стал «доверенным» и бот мог слать ему сообщения. Дальше главное правильно прописать id. Как узнать свой телеграм ID — напишите боту @my_id_bot.

Как узнать свой id телеграм

Если это не помогло, нужно смотреть ответ после запроса.

Как заменить отправку на эмейл отправкой в телеграм

Уберите mail() с его данными и используйте file_get_contents. Адаптируйте поле с сообщением ($msg), добавьте туда все данные с формы.

Результат отправки заявки в телеграм с сайта

Вот как это примерно выглядит в телеграме:

Пример полученного сообщения в телеграм через бота. Заявка с сайта

Форма простая, обработчик тоже; «почтовые» порты на хостинге или сервере не нужны. И заявки моментально прилетают в телеграм. Удобно.

veniamin

View Comments

  • підкажіть будь ласка, а як робите редірект на головну?

    Загалом все працює, але після відправки повідомленна залишається сторінка /*.php

     

    • Добрий день,
      будь-яким зручним способом (яваскрипт або рнр), наприклад:

      header(“Location: http://site.ru/”);
      exit();

      Якщо вам не потрібна аякс-відповідь, то після file_get_contents вставляємо код і все.

Recent Posts

Бонус 100 USDT +10 BUSD от Binance

Биржа криптовалют Binance проводит сейчас промо-акцию: новым пользователям дают ваучеры в сумме 110 долларов. Деньги…

2 года ago

Как парсить длительность видео youtube на php в привычном виде

Самый главный момент в работе с youtube - это получить ключ api через консоль разработчика…

2 года ago

Как удалить чужую сессию пользователя в ubuntu (linux)

Арендую сервер для небольшого проекта на python. И вот приходит мне уведомление, что за сутки…

2 года ago

Как наложить watermark на видео в python windows массово

Тестирую одну схему, и нужно на много видео наложить watermark. Решил делать через Python 3,…

3 года ago

Kwork.ru: опыт поиска исполнителя и поздравление

Пришла в голову одна интересная идея. Связанно с тиктоком. Решил поискать исполнителя, который будет монтировать…

3 года ago

Отзыв о Накрутке подписчиков instagram через Socpublic в автоматическом режиме

Решил проверить "автоматическую" накрутку подписчиков в инстаграмме через сервис активной рекламы Socpublic.com. Сразу скажу -…

3 года ago