Модуль Telegram

Telegram Комментариев нет

Модуль для интеграции с Telegram

Обсуждение: http://majordomo.smartliving.ru/forum/viewtopic.php?f=5&t=2768

На данный момент умеет

  • Регистрировать пользователей
  • Отправлять сообщения системы (определенного уровня важности)
  • Принимать команды
  • Создает в приложении Telegram клавиатуру с шаблонами команд
  • Прием файлов
  • Проигрывание голосовых сообщений
  • Обработчики событий
  • Сортировка команд
  • webhook

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

Для работы модуля необходимо зарегистрировать бота и получить его уникальный id, являющийся одновременно и токеном. Для этого в Telegram существует специальный бот — @BotFather.

Пишем ему /start и получаем список всех его команд. Первая и главная — /newbot — отправляем ему и бот просит придумать имя нашему новому боту. Единственное ограничение на имя — в конце оно должно оканчиваться на «bot». В случае успеха BotFather возвращает токен бота и ссылку для быстрого добавления бота в контакты, иначе придется поломать голову над именем.

В настройки модуля вносится токен бота вида "123456780:AAHeВ7UcDWvEovvcFaMfUrUVPupNORHWD_k"

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

Регистрация При первом добавлении бота в список контактов, для регистрации нужно нажать в клиенте кнопку "Начать". Либо отправить команду /start. От бота должно прийти в ответ "Вы зарегистрированы! Обратитесь к администратору для получения доступа к функциям."

Настройка

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

Команды

Команды используются для построения клавиатуры в клиенте, содержащей шаблоны сообщений. Одним нажатием кнопки из этой клавиатуры осуществляется отправка команды. У каждой команды есть настройка контроля доступа, где можно задать пользователей которым данная команда доступна. Если у команды поле код пусто, то команда передается дальше на обработку в сценарии и в processCommand. Если поле кода не пустое, то выполняется только код. Для отправки ответа на команду в конце кода должен быть return с текстовым сообщением. Текст может содержать HTML разметку.

События

Данный функционал позволяет навесить на события, такие как получение текстового сообщения, файла, стикера, местоположения и др, свой обработчик. Например, при получении аудиофайла, добавить его в плейлист и выполнить его воспроизведение. Для каждого из типов событий в выполняемый код передаются определенные параметры, такие как например $chat_id. Более подробно о параметрах расписано в подсказке, которая появляется при выборе типа события.

Webhook

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

Как включить?

  1. Ваш сервер должен быть доступен из интернет, а именно страница https://ваш_сервер/webhook_telegram.php
  2. Доступен только по протоколу HTTPS с подписанным сертификатом
  3. В поле Webhook URL задается имя вашего сервера или ip
  4. Нажатием кнопки "Set Webhook" отправляется запрос на установку вашего адреса для webhook. Результат отобразится ниже кнопки.

Плюсы

  1. Быстрый ответ на команду
  2. Нет постоянных запросов на наличие новых сообщений
  3. Работает независимо от того, запущен основной цикл или нет.

Минусы

  1. Нужен HTTPS с подписанным сертификатом
  2. При подписке на webhook перестает работать запрос сообщений с сервера. Поэтому прежде чем снять галочку "Use webhook" обязательно надо отписаться от webhook. Для этого надо нажать кнопку "Clean webhook".
  3. При долгой обработке сообщения, сервер телеграмм будет повторно высылать вам это сообщение.

Текущий статус использования webhook можно узнать нажав кнопку "Status webhook"

Примеры использования модуля в скриптах

Для отправки текстовых сообщений

Для отправки изображений

К изображению можно добавить текстовое описание

Для отправки файлов

Для отправки голосового сообщения

Для отправки стикеров

Для получения кода стикера (вида "BQADAgAD2gADeVziCaKoJ-z5_rAfAg") нужно отправить боту стикер и посмотреть код в "Истории событий" модуля.

Для отправки местоположения

Для отправки места (местоположение с описанием)

Для отправки статуса действия Применяется для отображения действия, которое выполняется на стороне бота(для долго выполняемых скриптов) Параметры функции sendAction($chat_id,$action) - $chat_id - идентификатор чата, $action - действие

  • typing - печатает...
  • upload_photo - загрузка фото
  • record_video or upload_video - загрузка видео
  • record_audio or upload_audio - загрузка аудио
  • upload_document - загрузка документа
  • find_location - поиск местоположения

Получение имени пользователя по его chat_id (только для зарегистрированных пользователей в модуле)

Поделитесь в соц сетях

Теги: