Telegram — настраиваем передачу данных из форм на сайте в чат

telegram post data 1 - Telegram - настраиваем передачу данных из форм на сайте в чат

Более расширенный постинг в Telegram и дополнительные возможности — тут

Задача: в интернет-магазине есть форма заказа товара. Покупатель ее заполняет и отправляет оператору. Эти данные дополнительно приходят в чат телеграма. Форма, естественно, передается методом POST

Для реализации понадобятся: бот, чат, и якобы протокол https://, без которого все прекрасно работает 🙂

Ссылка для примера: http://tg.devarts.pro/send
Тестовый чат: https://t.me/iartsorders

Как создать своего бота: /691-telegram-registraciya-i-nastroyka-bota.html

В статье выше описывается создание бота и чата для него. на основании нее идем дальше. Принимаем условие, что для приема данных в Telegram уже все готово и осталось только настроить обработчик для отправки!

Отправлять уже можно! Используя Telegram API через адресную строку браузера можно присылать сообщения в чат. Заменяете красные значения на свои и переходите через браузер по ссылке. В чат должно прийти сообщение от вашего ботат!

https://api.telegram.org/bot273805635:AAGQOuPVadtQyEx0COPrDnq2r-YmUo90xaU&lt/sendMessage?chat_id=@iartsorders&text= my text
telegram post form - Telegram - настраиваем передачу данных из форм на сайте в чат

Данная форма создается очень легко и быстро! Самая базовая форма, которую без особых проблем набросать на HTML. Вставил переменную $return, чтобы не перенаправляло на отдельную страницу после отправки.

<div class="block">
    <form action="" method="POST">
        <p>Форма для заявки</p>
        <p><?= $return ?></p>
        
        <input name="name" type="text" placeholder="Введите ваше имя" required>
        <input name="phone" type="tel" pattern="^[ 0-9]+$" placeholder="Введите ваш телефон" required>
        <input type="submit" value="Отправить">
    </form>
</div>

PHP обработчик

Теперь осталось дело за малым. Подкинем сюда обработчик, который, собственно, и будет инициировать отправку.

<?php

//проверяем наличие ПОСТ-параметров
if(!empty($_POST)){
    
    //проверяем наличие параметров нашей формы
    if (!empty($_POST['name']) && !empty($_POST['phone'])){
    
        //токен вашего бота
        $token = "273805635:AAGQOuPVadtQyEx0COPrDnq2r-YmUo90xaU";
        //имя чата, если публичный или id для приватного
        $chat = "@iartsorders"; 
    
        //название вашего товара
        $order = rand(0, 1000); 

        //данные из форм
        $name = $_POST['name'];
        $phone = $_POST['phone'];

        $txt = "New order: $order%0A";  

        if (
            fopen("https://api.telegram.org/bot$token/sendMessage?chat_id=$chat&text=$txt", "") &&
            fopen("https://api.telegram.org/bot$token/sendContact?chat_id=$chat&phone_number=$phone&first_name=$name", "")
            ) {
            
            $return = 'Спасибо, Ваш заказ отправлен оператору!';
    
        } else {
        
            $return =  'Ошибка отправки!';
        }
    }
}
 
?>

Для того, чтобы сделать номер кликабельным, сделал две отправки через функцию fopen();. Первая передает текст заказа, а вторая номер и имя, указанные в форме. Результат записываем в переменную $return и выводим сразу под формой.

Новости от партнеров

Комментарии

  1. @devarts пишет:
    30.08.2018 в 07:21

    Цитата: Сергей
    есть простой сервис, чтобы на php не писать https://formfor.site/

    Совсем простой…
    Да, для далекого человека удобно GET через левый домен пускать прямо из формы

  2. @Сергей пишет:
    27.08.2018 в 18:56

    есть простой сервис, чтобы на php не писать https://formfor.site/

  3. @devarts пишет:
    14.03.2018 в 20:58

    Цитата: salemoney
    Пробывал у себя на хостинге, тоже самое

    Возможно что то изменилось в API телеграма?

    Только что все успешно отправилось. Если на вашем хосте тоже не пошло, значит были проблемы на стороне телеграма

  4. @salemoney пишет:
    11.03.2018 в 17:05

    Демо возвращыет такой результат:

    Warning: fopen(): php_network_getaddresses: getaddrinfo failed: Временный сбой в разрешении имен in /home/users/a/artemmian/domains/tg.devarts.pro/send/index.php on line 22

    Warning: fopen(https://…@iartsorders&text=New order: 612%0A): failed to open stream: php_network_getaddresses: getaddrinfo failed: Временный сбой в разрешении имен in /home/users/a/artemmian/domains/tg.devarts.pro/send/index.php on line 22

    Пробывал у себя на хостинге, тоже самое

    Возможно что то изменилось в API телеграма?

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *