April 15, 2021

ЗАЯВКИ С ФОРМЫ ОБРАТНОЙ СВЯЗИ В TELEGRAM

Скачать Готовый Скрипт - shre.su/HNPD

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

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

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

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

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

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

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

   <form action="" 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 = '850084532'; // Id телеграм аккаунта, куда отправлять сообщения
$token = '1068736344: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 = '*Больше скриптов на @IDEEPWEB*

'; // Делаем первую строку "жирной". Переводы строки для удобства в телеграме.
    $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), добавьте туда все данные с формы.

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

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

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

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

Скачать Готовый Скрипт - shre.su/HNPD