Как сделать вебхук Телеграм

Содержание

Telegram бот на PHP

Заметки айтишника

Примеры как зарегистрировать бота в Telegram, описание и взаимодействие с основными методами API. Документация на core.telegram.org и tlgrm.ru (неофициальный, на русском).

Все запросы к API должны осуществляться по HTTPS, подойдет бесплатный сертификат «Let’s Encrypt».

Регистрация бота

Следующим сообщением отправляем название для бота, обязательно на конце имени должно быть слово «bot» или «_bot». Ответным сообщением получим токен:

Что такое Webhook за 12 минут

Тут же можно настроить описание и аватарку:

/setname Имя
/setdescription Краткое описание
/setabouttext Описание бота
/setuserpic Юзерпик

Далее нужно поставить «Webhook» чтобы все сообщения из Telegram приходили на PHP скрипт ( https://example.com/bot.php ). Для этого нужно пройти по ссылке в которой подставлены полученный токен и адрес скрипта.

В ответе будет

При смене токена, установку вебхука нужно повторить.

Входящие сообщения

Сообщения приходят POST-запросом, с типом application/json . Получить его в PHP можно следующим образом:

$data = file_get_contents(‘php://input’); $data = json_decode($data, true);

Чтобы посмотреть входящие данные, их придется дампить в файл:

file_put_contents(__DIR__ . ‘/message.txt’, print_r($data, true));

Текстовое сообщение

Запрос от Телеграм:

Array ( [update_id] => 17584194 [message] => Array ( [message_id] => 26 [from] => Array ( [id] => 123456789 [is_bot] => [first_name] => UserName [language_code] => ru-US ) [chat] => Array ( [id] => 123456789 [first_name] => UserName [type] => private ) [date] => 1541888068 [text] => Привет бот! ) )

Получим текст сообщения:

if(!empty($data[‘message’][‘text’]))

Фотографии

При отправки фото боту, на скрипт приходит массив превьюшек, последним элементом будет оригинальное фото. Максимальный размер файла 20МБ.

Запрос от Телеграм:

Array ( [update_id] => 17584194 [message] => Array ( [message_id] => 38 [from] => Array ( [id] => 123456789 [is_bot] => [first_name] => UserName [language_code] => ru-US ) [chat] => Array ( [id] => 123456789 [first_name] => UserName [type] => private ) [date] => 1541924962 [photo] => Array ( [0] => Array ( [file_id] => AgADAgADUqexG7u8OEudBvlhgMzKC1agOQ8ABC6Bx26USA7Mw3gAAgI [file_size] => 1196 [width] => 51 [height] => 90 ) [1] => Array ( [file_id] => AgttAgADUqoxG7u8OEudBvlhgMzKC1agOQ8ABKwp_3jDPrIlxHgAAgI [file_size] => 21146 [width] => 180 [height] => 320 ) [2] => Array ( [file_id] => AgADAgADUqyxG7u8OEudBvlhgMzKC1agOQ8ABAN8gJWpUT1MxXgAAgI [file_size] => 90940 [width] => 449 [height] => 800 ) [3] => Array ( [file_id] => AgADAgADUqouu7u8OEudBvlhgMzKC1agOQ8ABIqVC1nEpbLDwngAAgI [file_size] => 114363 [width] => 719 [height] => 1280 ) ) ) )

Чтобы скачать файл нужно отправить POST или GET запрос на получение c параметром file_id изображения по URL:

1. Создание Telegram бота с Webhook’ом на Python. Подготовка.

https://api.telegram.org/bot/getFile

В ответ придет информация о файле:

Array ( [ok] => 1 [result] => Array ( [file_id] => AgADAgADUqoxG5u88E0dBvlhgMzKC1agOQ8ABIqVC1nEpbLDwngAAgI [file_size] => 114363 [file_path] => photos/file_1.jpg ) )

Далее его можно скачать по ссылке:

В PHP сохранение файла на сервер можно реализовать следующим образом:

$token = ‘123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11’; if (!empty($data[‘message’][‘photo’])) < $photo = array_pop($data[‘message’][‘photo’]); $ch = curl_init(‘https://api.telegram.org/bot’ . $token . ‘/getFile’); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, array(‘file_id’ =>$photo[‘file_id’])); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HEADER, false); $res = curl_exec($ch); curl_close($ch); $res = json_decode($res, true); if ($res[‘ok’]) < $src = ‘https://api.telegram.org/file/bot’ . $token . ‘/’ . $res[‘result’][‘file_path’]; $dest = __DIR__ . ‘/’ . time() . ‘-‘ . basename($src); copy($src, $dest); >>

Еще по теме:  Арабы с деньгами в Телеграмм

Документ

Запрос от Телеграм:

Array ( [update_id] => 17474201 [message] => Array ( [message_id] => 44 [from] => Array ( [id] => 123456789 [is_bot] => [first_name] => UserName [language_code] => ru-US ) [chat] => Array ( [id] => 123456789 [first_name] => UserName [type] => private ) [date] => 1541925844 [document] => Array ( [file_name] => IMG_7947.JPG [mime_type] => image/jpeg [thumb] => Array ( [file_id] => AAQCABMNv_QOAATwQugveIZBldZ3AAIC [file_size] => 2644 [width] => 67 [height] => 90 ) [file_id] => BQADAgADtQEAAqu9OEhzn2cEz8LpkgI [file_size] => 1976218 ) ) )

Скачивание файлов происходит по такой же схеме как у фотографий.

if (!empty($data[‘message’][‘document’])) < $file_id = $data[‘message’][‘document’][‘file_id’]; $ch = curl_init(‘https://api.telegram.org/bot’ . $token . ‘/getFile’); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, array(‘file_id’ =>$file_id)); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HEADER, false); $res = curl_exec($ch); curl_close($ch); $res = json_decode($res, true); if ($res[‘ok’]) < $src = ‘https://api.telegram.org/file/bot’ . $token . ‘/’ . $res[‘result’][‘file_path’]; $dest = __DIR__ . ‘/’ . time() . ‘-‘ . basename($src); copy($src, $dest); >>

Ответы бота

Отправка текста

$response = array( ‘chat_id’ => $data[‘message’][‘chat’][‘id’], ‘text’ => ‘Хай!’ ); $ch = curl_init(‘https://api.telegram.org/bot’ . $token . ‘/sendMessage’); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $response); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HEADER, false); curl_exec($ch); curl_close($ch);

Отправка картинки

$response = array( ‘chat_id’ => $data[‘message’][‘chat’][‘id’], ‘photo’ => curl_file_create(__DIR__ . ‘/image.png’) ); $ch = curl_init(‘https://api.telegram.org/bot’ . $token . ‘/sendPhoto’); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $response); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HEADER, false); curl_exec($ch); curl_close($ch);

Отправка файла

Пример скрипта

Скрипт простейшего бота. Он отвечает на вопросы и сохраняет файлы и изображение на сервере.

define(‘TOKEN’, ‘123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11’); // Функция вызова методов API. function sendTelegram($method, $response) < $ch = curl_init(‘https://api.telegram.org/bot’ . TOKEN . ‘/’ . $method); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $response); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HEADER, false); $res = curl_exec($ch); curl_close($ch); return $res; >// Прислали фото. if (!empty($data[‘message’][‘photo’])) < $photo = array_pop($data[‘message’][‘photo’]); $res = sendTelegram( ‘getFile’, array( ‘file_id’ =>$photo[‘file_id’] ) ); $res = json_decode($res, true); if ($res[‘ok’]) < $src = ‘https://api.telegram.org/file/bot’ . TOKEN . ‘/’ . $res[‘result’][‘file_path’]; $dest = __DIR__ . ‘/’ . time() . ‘-‘ . basename($src); if (copy($src, $dest)) < sendTelegram( ‘sendMessage’, array( ‘chat_id’ =>$data[‘message’][‘chat’][‘id’], ‘text’ => ‘Фото сохранено’ ) ); > > exit(); > // Прислали файл. if (!empty($data[‘message’][‘document’])) < $res = sendTelegram( ‘getFile’, array( ‘file_id’ =>$data[‘message’][‘document’][‘file_id’] ) ); $res = json_decode($res, true); if ($res[‘ok’]) < $src = ‘https://api.telegram.org/file/bot’ . TOKEN . ‘/’ . $res[‘result’][‘file_path’]; $dest = __DIR__ . ‘/’ . time() . ‘-‘ . $data[‘message’][‘document’][‘file_name’]; if (copy($src, $dest)) < sendTelegram( ‘sendMessage’, array( ‘chat_id’ =>$data[‘message’][‘chat’][‘id’], ‘text’ => ‘Файл сохранён’ ) ); > > exit(); > // Ответ на текстовые сообщения. if (!empty($data[‘message’][‘text’])) < $text = $data[‘message’][‘text’]; if (mb_stripos($text, ‘привет’) !== false) < sendTelegram( ‘sendMessage’, array( ‘chat_id’ =>$data[‘message’][‘chat’][‘id’], ‘text’ => ‘Хай!’ ) ); exit(); > // Отправка фото. if (mb_stripos($text, ‘фото’) !== false) < sendTelegram( ‘sendPhoto’, array( ‘chat_id’ =>$data[‘message’][‘chat’][‘id’], ‘photo’ => curl_file_create(__DIR__ . ‘/image.jpg’) ) ); exit(); > // Отправка файла. if (mb_stripos($text, ‘файл’) !== false) < sendTelegram( ‘sendDocument’, array( ‘chat_id’ =>$data[‘message’][‘chat’][‘id’], ‘document’ => curl_file_create(__DIR__ . ‘/test.txt’) ) ); exit(); > >

  • ← Как сбросить root-пароль Linux-сервера
  • Авторизация на сайте через Google →

Источник: it-stories.ru

Чат-бот Telegram и QlikView Qlik Sense. Интеграция через PHP

Чат бот телеграм

В этой статье я расскажу как создавать закрытый Telegram-канал, в который будут приходить важные оповещения. Плюс расскажу, как можно получать данные из QlikView и Qlik Sense с помощью чат-бота, которому Вы например пишите что хотите получить. Например, «Продажи за вчерашний день по Москве». И система Вам автоматически присылает отчет — картинку или Excel-файл.

qlikview

Чат-бот Telegram и QlikView Qlik Sense. Интеграция через PHP

Статья будет писаться постепенно и кусками. Подписывайтесь на мой Telegram-канал https://t.me/qlik_insight, чтобы не пропустить новую литературу по QlikView и Qlik Sense, а также самые «мощные», с технологической точки зрения, статьи.
Структура статьи будет выглядеть примерно так:

  1. Создание системы уведомлений в закрытом телеграм-канале (telegram канал, робот, отправка сообщений);
  2. Создание простого чат-бота (раскрою структуру приема и отправки сообщений);
  3. Создание команды для получения данных из приложения QlikView (с помощью API);
  4. Создание команды для получения данных из приложения Qlik Sense (с помощью API).
Еще по теме:  Как в группе Телеграм писать от имени группового чата

Создание системы уведомлений в закрытом Telegram-канале с применением QlikView или Qlik Sense

Процедура отправки сообщений в Telegram канал довольно простая. Нужно выполнить несколько действий, после которых станет доступным «интерфейс» отправки текстовых сообщений в телеграм-канал.

Краткий обзор шагов:

  1. Создать Telegram-канал;
  2. Создать бота;
  3. Получить все необходимые параметры объектов;
  4. Собрать URL-строку;
  5. Отправить в браузере сообщение (тестирование);
  6. Отправить сообщение из скрипта QlikView.

А теперь пройдемся более подробнее по шагам.

qlikview

Шаг 1 — создаем закрытый телеграм-канал

Заходим в мобильное приложение Telegram и создаем закрытый телеграм-канал (все как на картинках).

Создание закрытого телеграм канала для получения уведомлений по QlikView и Qlik Sense

Нажимаем «New Channel»:

Заполняем наименование канала и его описание:

Создание закрытого телеграм канала для получения уведомлений по QlikView и Qlik Sense

Выбираем «Private Channel», чтобы в канал можно было зайти только по ссылке:

Создание закрытого телеграм канала для получения уведомлений по QlikView и Qlik Sense

qlikview

Закрытый телеграм создан:

Создание закрытого телеграм канала для получения уведомлений по QlikView и Qlik Sense

Для Telegram канала выбираем фотографию:

Создание закрытого телеграм канала для получения уведомлений по QlikView и Qlik Sense
Должен получиться вот такой вот закрытый Telegram-канал, в который мы будем посылать сообщения через чат-бота.
Создание закрытого телеграм канала для получения уведомлений по QlikView и Qlik Sense

Шаг 2 — регистрируем чат-бота

Далее нам необходимо создать чат-бота. Для этих целей внутри самого Telegram есть системный чат-бот BotFather:

Чат-бот пришлет вариации команд, в том числе /newbot для создания бота. Выбираем эту команду:

BotFather предлагает ввести имя нашего бота (то, которое будет отображаться, можно на кириллице):

Далее нам необходимо ввести USERNAME Бота, которое должно оканчиваться на bot:

Если имя занято, то BotFather предложит сделать попытку снова (пока не попадется свободный username):

Кликаем на наш бот и нажимаем START:

/start — это название команды. В дальнейшем в бот можно ввести список команд и каждой команде на стороне backend (на сервере) задать последовательность тех или иных действий.

При регистрации бота команда /start пустая:

qlikview

Помните, чат бот BotFather выдал нам token? Это ключевая строка, без которой мы не сможем взаимодействовать с ботом. Скопируйте ее себе куда-нибудь. Если вдруг потеряете, то всегда сможете вернуться к BotFather и попросить прислать его токен снова.

Шаг 3 — Добавляем бота в качестве администратора в Telegram-канале (через мобильное приложение)

Чтобы бот смог присылать сообщения в телеграм-канал, его необходимо добавить в администраторы канала. Заходим в настройки канала и кликаем на Administrators:

Добавляем бота в качестве администратора в Telegram-канале (через мобильное приложение)

Add Administrator — выбираем пункт «Добавить администратора»

Добавляем бота в качестве администратора в Telegram-канале (через мобильное приложение)

Добавляем бота в качестве администратора в Telegram-канале (через мобильное приложение)

Все — бот добавлен в качестве администратора в закрытый Telegram канал:

Добавляем бота в качестве администратора в Telegram-канале (через мобильное приложение)

Шаг 4 — Получаем ID закрытого телеграм-канала для отправки сообщений через чат-бот и структура ссылки

Получаем chat_id Для приватного телеграм-канала

Для приватного телеграм канала необходимо взять цифры без буквы «c» и до знака «_». И добавить префикс -100.

https://api.telegram.org/bot######################/sendMessage?chat_id=-100#######################128578;

Шаг 6 — Отправляем сообщение в telegram-канал из QlikView 12

Теперь отправим простое сообщение из QlikView Script. Копируем наш URL, переходим в приложение QlikView 12 и выбираем Web Files:

Отправляем сообщение в telegram-канал из QlikView 12

Вбиваем наш URL:

Отправляем сообщение в telegram-канал из QlikView 12

Получаем строку. Эта строка будет каждый раз разная, но для начала мы формируем структуру запроса:

Отправляем сообщение в telegram-канал из QlikView 12

После того, как структура запроса сформирована, меняем название поля на *. Далее это поле можно назвать по человечески, но эту задачу здесь я решать пока не буду. В этой статье я раскрываю только принципы организации работы с чат ботом и телеграм каналом.

qlikview

В чат пришли два сообщения — первое, которое пришло после создания структуры скрипта, а второе после перезагрузки скрипта.

Отправляем сообщение в telegram-канал из QlikView 12

Специальные символы для текстовой строки (перенос строки и т.д.)

Если Вам необходимо в сообщении перенести строку, то необходимо использовать спецсимволы. Ниже приведен их список:

Вне контура Qlik: отправка сообщения через PHP в телеграм-канал

Токен и chatID неправильный (исправил символы).

Источник: ivan-shamaev.ru

Подключаем webhooks для репозитория

Android Tools

Вебхуки (Webhooks) позволяют настроить репозиторий для отправки различных запросов и сообщений на удалённый сервер при возникновении на репозитории определённых событий.

Вебхук состоит из следующих компонентов:

  • Субъект — ресурс, в котором создаётся вебхук, то есть собственно репозиторий.
  • Одно или несколько событий — события, посылаемые вебхуком при срабатывании триггера (у большинства репозиториев событием по умолчанию является push).
  • URL — конечная точка, куда вебхук должен отправить данные.

После создания вебхука для определенного события, каждый раз, когда это событие будет происходить, вебхук будет срабатывать и отправлять информацию на заданный URL. Таким образом, можно рассматривать вебхуки как систему уведомлений.

Создание сервера

Перед тем, как создать вебхук в репозитории, нам нужен сервер, который будет принимать данные. Особенность вебхуков заключается в том, что их можно интегрировать в различные приложения или сервисы (Telegram, Битрикс24 и так далее).

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

Затем на созданном сервере нажмём на его название и в открывшемся меню выберем Настройки сервера.

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

В появившемся окне будет предложено задать следующие данные для вебхука:

  • Имя вебхука, которое будет отображаться в сообщениях.
  • Канал, в который будут приходить сообщения (по умолчанию, в Discord создаётся канал #general, при желании вы можете создать новый канал специально для вебхука и задать его в параметрах).
  • Иконка для вебхука.

В поле URL вебхука автоматически сгенерируется URL, который нужно скопировать. Этот URL затем будет использоваться в качестве конечной точки при отправки вебхука.

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

Создание вебхука на репозитории

Теперь нужно создать вебхук на стороне репозитория, который будет отправлять данные на сервер. Воспользуемся для этого репозиторием GitHub.

В уже имеющемся проекте откроем вкладку Settings. Зайдём в раздел Webhooks и нажмём Add webhook, чтобы создать новый вебхук.

Здесь, аналогично созданию вебхука на сервере, нужно задать значения следующим полям:

    Payload URL — собственно конечная точка, адрес сервера, куда нужно отправлять данные. Сюда нужно скопировать URL, который был сгенерирован в Discord при создании вебхука.
    Примечание: в официальной документации говорится, что для взаимодействия между Discord и GitHub крайне важно добавить в конец URL ‘/github‘. Например:

https://discordapp.com/api/webhooks/424423662137901059/45LkPViOlhf7HEtpG_Pm8C-_B7Q_9ykWp9luUxP35XrM3kl8BVxPzKG3-oq-gzGzJksF/github

Введя все необходимые данные, сохраним вебхук, нажав Add webhook. Если всё сделано правильно, в списке вебхуков рядом с созданным вебхуком появится галочка, означающая, что соединение с сервером работает.

На этом подключение вебхуков завершено. Теперь, когда мы будем выполнять push в этот репозиторий, в Discord будут приходить соответствующие сообщения.

Добавление вебхука через Telegram

В Telegram существует большое количество ботов для автоматизации выполнения определённых операций. Одним из таких ботов является Integram, который позволяет интегрировать в Telegram различные сервисы в пару кликов.

Подключив Integram, можно увидеть диалог, предлагающий выбрать, что именно необходимо подключить.

Выберем GitHub, после чего откроется диалог с одноимённым ботом, который предложит ряд команд для работы с ним.

Пропишем команду /connect. Бот сгенерирует ссылку, по которой нужно пройти, чтобы связать бота с аккаунтом на GitHub.

После того, как соединение между ними будет установлено, нужно ввести команду /newintegration для того, чтобы интегрировать вебхук в нужный репозиторий.

Здесь будет предложено выбрать, какой репозиторий необходимо подключить. Далее нужно будет выбрать, куда отправлять данные: в личные сообщения или в группу.

После завершения интеграции можно увидеть сообщение о том, что репозиторий подключен. Если зайти в его настройки на GitHub, то в списке вебхуков будет созданный ботом вебхук.

В результате в Telegram будут приходить уведомления, отправленные этим вебхуком.

Источник: android-tools.ru

Рейтинг
( Пока оценок нет )
Загрузка ...