С помощью смарт-действия "Отправить 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 описан ниже.
Отправка сообщения
Смарт-пакет для отправки сообщения боту.
Смарт-действие для отправки сообщения боту.
Вариант смарт-действия для отправки сообщения боту с использованием двух параметров:
Вариант смарт-действия для отправки сообщения боту с использованием двух параметров.
|
---|
Получение сообщения
Смарт-пакет для работы с курсом валюты в формате JSON.
Обратите внимание на необходимость очистки ответа веб-сервиса от лишних символов, эти объяснения даны здесь. Поэтому во втором смарт-действии для выделения текста сообщения используется выражение TSQL:
select top 1 JSON_VALUE ( @ActionResult8639, '$.HttpResponse.ResponseContent.result[0].message.text' )
Полезные ссылки