Как отправлять заявку с сайта в Telegram?
Все мы знаем, что очень часто на самые разнообразные сайты нужна форма обратной связи. Там человек может оставить свои контактные данные, чтобы люди, представляющие сайт, смогли с ним связаться. И да, отправка эта часто производится на обычную почту (e-mail). Однако сейчас, благодаря открытому и несложному API Telegram можно спокойно настраивать отправку этих же сообщений в него. Зачем? Это быстрее и гораздо удобнее. Сразу, в специальном чате, у вас появится заявка от пользователя.
Подготовка бота и чата
Конечно, для отправки заявки с сайта в Telegram нужен бот и соответствующий чат, где бот будет работать. Нужно его создать:
- Для начала в поиске контактов Telegram вводим @BotFather. Это «отец» ботов, позволяющий прозводить с ними некоторые манипуляции. В том числе и создать бота (все скриншоты показаны на примере Telegram for Windows).
- Нажимаем кнопку Start в чате с BotFather, после чего нашему вниманию выпадет список доступных команд. Можем найти сами нужную команду и кликнуть, а можем написать прямо в чат: «/newbot», без кавычек естественно.
- Далее нас попросят ввести имя бота. Будьте внимательны и избирательны, ведь Telegram работает по всему миру и огромное количество имен уже заняты.
- После успешного ввода имени потребуется ввести username бота, по которому его можно будет найти в поиске.
- Когда подберете верное имя для бота, вам придет последнее нужное сообщение от BotFather, содержащее в себе так называемый «токен». Данный токен пригодится Вам для дальнейших действий.
- Далее нужно создать групповой чат (New Group). Называем этот чат как «Заявка с сайта», и добавляем туда уже созданного бота через поиск (вводим @maxgrbot_bot, в моем случае).
- Следующий шаг — присоединить бота к чату. Делается это командой «/join @maxgrbot_bot» в вашем созданном чате.
- Затем, кликнув по «maxgrbot_bot» (т.е. названию вашего бота, оно то у вас другое будет), переходите в личный чат с ним и нажимаете кнопку Start. На этом работа с Telegram временно закончена.
Работа с формой
Теперь нужно создать форму и правильно ее разметить для работы с отправкой по Php.
- Размечаем нашу форму (обязательно внизу этого поста будет ссылка на готовую).
С самой формой Вы можете работать как угодно, но есть несколько обязательных условий:
1. В form action должно быть обязательно написано telegram.php. Это файл-обработчик формы, куда она «улетает» после нажатия на кнопку.
2. Сама кнопка должна быть типа Submit.
3. Так же у формы должен быть method=»POST»
4. У каждого инпута должен быть прописан атрибут name. - Создав данную форму мы переходим к работе с telegram.php. Там тоже нужно сделать несколько манипуляций.
Естественно, я рассмотрю свой файл на своем примере. Но Вы можете кастомить его под себя.
1. Первое, что нужно сделать — записать атрибут name в переменные. Т.е., у нас есть переменная $name = $_POST [‘name’]. В квадратных скобках как раз и указан атрибут name инпута формы. Если вдруг у вас появится еще и телефон в форме — Вы знаете что делать :)
2. Если появляются еще поля — нужно их разметить так же и в массиве $arr по примеру с предыдущими.
3. В переменную $token нужно вставить тот токен, который вам дал BotFather.
4. Самый сложный пункт — вставить $chat_id. Для этого сверху есть закомментированная строка:api.telegram.org/botXXXXXXXXXXXXXXXXXXXXXXXXX/getUpdates,
в которую вместо иксов нужно вставить токен. После чего скопировать всю ссылку и перейти по ней в браузере.
5. У вас должно появиться несколько строк кода. Среди них — находите id, значение которого указано с минусом. Чуть яснее Вам станет после просмотра видео.
6. Вставляем в итоге id в переменную $chat_id и сохраняем изменения.
7. Создайте простую страницу Thanks.html, в которую будет переходить Ваш сайт после успешной отправки сообщения. Либо сделайте свое действие после отправки.
Если вкратце, то это все. Не особо сложно, особенно после просмотра видео, которое я подготовил для Вас.
Референсы
Надеюсь, данная информация была для Вас полезна. Если да — оцените ее :)
Спасибо за внимание и до скорых встреч!
Автор данного блога. Веб-разработчик. Фрилансер. Создаю крутые адаптивные сайты. Портфолио на https://maxgraph.ru/
Добавляйтесь в друзья Вконтакте! Каждому добавившемуся и написавшему в личку «хочу полезность» — подарю набор крутых ссылок для верстальщика :)
Здравствуйте.
номер телефона приходит без +
и, соответственно не кликабельный.
7(000)000-0000
Добрый день.
работает, только номер телефона начинается с «7»
а «+» нет.
как исправить?
Можно внешне давать пользователю видеть +7, а на самом деле работать без плюса.
Автор красавчик!
Всё супер) очень давно не кодил, но решил эту штуку запилить)) всё получилось довольно просто)
Как сделать, чтобы номер телефона приходил кликабельным?
Тут увы не подскажу.
Добрый день!
А подскажите, как сделать так, чтобы уведомления получали два пользователя телеграмм.
Добрый день, в текущей реализации никак. надо пробовать переписать скрипт :)
спасибо
Здравствуйте, впервый раз делаю что то подобное. По факту мне нужна просто кнопка =) Без формы, нажал — пришло уведомление. Где взять готовый пример telegram.php файла?
Здравствуйте. Под ваши нужды готового нет, а сам php-файл — в архиве, приложенном к этой статье.
Решена проблема путем в xampp в php ini выставил с off в on — allow_url_include=On и allow_url_fopen=On
Здравствуйте! if ($sendToTelegram) {
header(‘Location: Thanks.html’);
} else {
echo «Error_»;
Не подскажите как сделать так что бы не страница html открывалась а некое всплывающее окно? Просто всплывает окошко где говорится — спасибо за заказ — ожидайте!
$sendToTelegram = fopen(«https://api.telegram.org/bot{$token}/sendMessage?chat_id={$chat_id}&parse_mode=html&text={$txt}»,»r»);
if ($sendToTelegram) {
header(‘Location: show.html’);
Здравствуйте! У меня все же проблемка, подскажите пожалуйста как сделать так что-бы вместо show.html выходило на index.html всплывающее окошко типа «Ожидайте пожалуйста, мы приняли Вашу заявку» и человеку остается только закрыть это окошко. В итоге он остается всегда на index.html
Тут логику менять тогда надо, не через php обрабатывать, а через js)
Не работает, сообщения прилетают пустыми данные в форме не передаются
Не могу просто по вашему сообщению назвать причину. У меня работает, вы какой-то шаг выполнили неверно.
закинул ваши исходники) на них и тестировал) токен и чат айди, что еще может быть не правильно?
то, где находится сайт, используется ли cms, поддерживается ли php и прочие мелочи.
Видимо из за того что файлы закинул из под рута, через обычного пользователя всё работает)
спасибо за скрипт
отлично)
А как отправлять и на почту и в телеграм?
Добавить еще туда функцию mail — можете на ютуб-канале видео про отправку посмотреть
Мне тут помогли, спасибо.
отлично )
При нажатии на кнопку, открывается php файл в браузере, и ничего не происходит. Как можно исправить?