Show/Hide Toolbars

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

Чат-бот Telegram

С помощью смарт-действия "Отправить HTTP-запрос" можно автоматизировать общение через бот мессенджера Telegram.

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

2.Получите идентификатор нового бота <bot_token>: обратитесь к боту @BotFather c требованием создать нового бота (команда /newbot).

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 Для данного кейса не поддерживаются зашифрованные задачи

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

smart_http_bot_receive_5

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

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

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

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