Show/Hide Toolbars

Руководство администратора

Чат-бот Telegram (HTTP-запрос)

Ссылки Назад Вверх Вперед

warning_icon  В данном разделе приведен пример использования HTTP-запроса для синхронизации "Первой Формы" с Telegram через чат-бот

С помощью смарт-действия "Отправить HTTP-запрос" можно автоматизировать общение через чат-бот Telegram. HTTP-запрос необходимо использовать в категории "Группы", когда в чате должно быть более одного пользователя, или "Сообщения", когда в чате должен быть только один пользователь и чат-бот. Действие срабатывает после написания комментария и отправляет запрос из "Первой Формы" в Telegram.

Порядок действий

1. Если вы еще не зарегистрированы в Telegram, пройдите регистрацию.

2. Создайте чат-бота. Для получения идентификатора нового бота (bot token) найдите в Telegram пользователя @BotFather, запустите с ним чат (команда /start при первом обращении) и введите команду создания нового бота: /newbot.

botfather

Команда создания нового бота

Введите публичное имя для вашего бота и имя пользователя для бота в Telegram. Обратите внимание: имя пользователя должно быть уникальным и должно заканчиваться на "bot" (например: Chat1FBot). Если пользователь с таким именем уже существует вы увидите ошибку: "Sorry, this username is invalid" — необходимо ввести уникальное имя. При успешном создании вы получите сообщение с ссылкой на свого бота в Telegram и токеном для доступа к HTTP API.

botfather2

Сообщение об успешном создании чат-бота

3. Получите идентификатор беседы с ботом <chat_id>: В диалоге с созданным ботом и напишите ему произвольное сообщение, затем откройте в браузере ссылку: https://api.telegram.org/bot<bot_token>/getUpdates

где <bot_token> — идентификатор, полученный от @BotFather.

В полученном json-ответе найдите значение в параметре result->message->chat->id, это и есть <chat_id>.

URL для отправки сообщения боту формируется по образцу:

https://api.telegram.org/bot<bot_token>/sendMessage?chat_id=<chat_id>&text=<текст_отправляемого_сообщения>

URL для получения последнего сообщения от бота формируется по образцу:

https://api.telegram.org/bot<bot_token>/getUpdates?offset=<номер_последнего_полученного_сообщения+1>

Если возвращается одно сообщение, то json имеет вид:

{"ok":true,"result":[
{"update_id":<offset>,
"message":{"message_id":14,
  "from":{"id":<user_id>,"is_bot":false,"first_name":"<name>","last_name":"<surname>","username":"<nick>,"language_code":"ru-RU"},
  "chat":{"id":<chat_id>,"first_name":"<name>","last_name":"<surname>","username":"<nick>","type":"private"},
  "date":1519205140,
  "text":"текст_сообщения"}
}
]}

Чат-бот может вернуть сразу несколько последних ответов — json вида:

{"ok":true,"result":[
{"update_id":<offset1>,
"message":{"message_id":14,
  "from":{"id":<user_id>,"is_bot":false,"first_name":"<name>","last_name":"<surname>","username":"<nick>,"language_code":"ru-RU"},
  "chat":{"id":<chat_id>,"first_name":"<name>","last_name":"<surname>","username":"<nick>","type":"private"},
  "date":1519205140,
  "text":"текст_сообщения1"}
},
{"update_id":<offset2>,
"message":{"message_id":15,
  "from":{"id":<user_id>,"is_bot":false,"first_name":"<name>","last_name":"<surname>","username":"<nick>,"language_code":"ru-RU"},
  "chat":{"id":<chat_id>,"first_name":"<name>","last_name":"<surname>","username":"<nick>","type":"private"},
  "date":1519205140,
  "text":"текст_сообщения2"}
}
]}

 

Первое непрочитанное ответное сообщение доступно как значение атрибута result.message[0].text, а <chat-id> доступен как значение атрибута result.message[0].chat.id (этот параметр важен, поскольку бот может вести несколько чатов одновременно).

Простейший пример обмена сообщениями с чат-ботом Telegram описан ниже.

Отправка сообщения

smart_http_bot_send_1

Смарт-пакет для отправки сообщения боту

smart_http_bot_send_4

Смарт-действие для отправки сообщения боту

Вариант смарт-действия для отправки сообщения боту с использованием двух параметров:

smart_http_bot_send_3

Вариант смарт-действия для отправки сообщения боту с использованием двух параметров

warning_icon  Для данного кейса не поддерживаются зашифрованные задачи

Получение сообщения

smart_http_bot_receive_5

Смарт-пакет для работы с курсом валюты в формате JSON

Обратите внимание на необходимость очистки ответа веб-сервиса от лишних символов. Поэтому во втором смарт-действии для выделения текста сообщения используется выражение TSQL:

select top 1 JSON_VALUE ( @ActionResult8639, '$.HttpResponse.ResponseContent.result[0].message.text' )

Полезные ссылки