16 578
правок
(не показана 31 промежуточная версия 3 участников) | |||
Строка 1: | Строка 1: | ||
{{DISPLAYTITLE: Настройка Telegram-бота на контроллере Wiren Board }} | {{DISPLAYTITLE: Настройка Telegram-бота на контроллере Wiren Board }} | ||
[[Image: demo-command-full-tg.png |500px|thumb|right| Пример общения с ботом. Файл этого флоу смотрите в конце статьи]] | |||
== Описание == | |||
Телеграмм-бот — это многофункциональный помощник на платформе Телеграм, который понимает команды, может обращаться в API вашего сайта или сервиса. | |||
С помощью телеграм-бота вы можете управлять умным домом, получать состояние устройств или сделать систему напоминаний. | |||
== Подготовка == | == Подготовка == | ||
Для настройки Telegram-бота на контроллере Wiren Board нам понадобится установленный | {{YouTube | ||
| link= https://youtu.be/7U-1rruSQGM | |||
| text= Настройка телеграм-бота на контроллере Wiren Board 6.7.2 с помощью Node-RED | |||
}} | |||
Для настройки Telegram-бота на контроллере [[Wiren Board]] нам понадобится: | |||
* установленный Node-RED и [[Node-Red | настроенный модуль WB Nodes]], | |||
* модуль [https://flows.nodered.org/node/node-red-contrib-telegrambot node-red-contrib-telegrambot] | |||
* и созданный Telegram-бот. | |||
{{Wbincludes:Node-RED Intro}} | |||
== Создание бота == | == Создание бота == | ||
[[Image: tg-bot-created.png|300px|thumb|right| Процесс создания нового бота в мессенджере Telegram]] | |||
Если у вас нет телеграм-бота, то создайте его: | Если у вас нет телеграм-бота, то создайте его: | ||
# Установите клиент [https://telegram.org Telegram] и зарегистрируйте аккаунт. | # Установите клиент [https://telegram.org Telegram] и зарегистрируйте аккаунт. | ||
Строка 22: | Строка 33: | ||
== Установка модуля == | == Установка модуля == | ||
[[Image: installing node-red-contrib-telegrambot.png|300px|thumb|right| Установка модуля node-red-contrib-telegrambot]] | |||
Чтобы Node-RED смог работать с Telegram, установите модуль <code>node-red-contrib-telegrambot</code>: | Чтобы Node-RED смог работать с Telegram, установите модуль <code>node-red-contrib-telegrambot</code>: | ||
{{Node-RED Installing plugin | {{Node-RED Installing plugin | ||
Строка 32: | Строка 43: | ||
== Создание ноды для бота == | == Создание ноды для бота == | ||
[[Image: tg-bot- | [[Image: tg-bot-configure-nr.png|300px|thumb|right| Создание ноды телеграм-бота]] | ||
Перед тем, как передавать данные из контроллера в чат с ботом, нам нужно настроить ноду нашего бота: | Перед тем, как передавать данные из контроллера в чат с ботом, нам нужно настроить ноду нашего бота: | ||
# Перетяните в рабочую область ноду '''sender'''. | # Перетяните в рабочую область ноду '''sender'''. | ||
Строка 50: | Строка 61: | ||
== Пересылка принятых сообщений == | == Пересылка принятых сообщений == | ||
[[Image: demo-hello-nr.png|500px|thumb|right| Флоу пересылки сообщения]] | [[Image: demo-hello-nr.png|500px|thumb|right| Флоу пересылки сообщения]] | ||
[[Image: demo-hello-tg.png|400px|thumb|right| Общение с ботом в чате мессенджера Telegram. | [[Image: demo-hello-tg.png|400px|thumb|right| Общение с ботом в чате мессенджера Telegram. Бот отправил обратно принятое сообщение]] | ||
Добавьте ноду, которая будет принимать сообщения, отправленные в чат с ботом: | Добавьте ноду, которая будет принимать сообщения, отправленные в чат с ботом: | ||
Строка 67: | Строка 78: | ||
# Перетяните в рабочую область ноду '''function'''. | # Перетяните в рабочую область ноду '''function'''. | ||
# Дважды кликните на ней — откроется окно '''Edit function node'''. | # Дважды кликните на ней — откроется окно '''Edit function node'''. | ||
# На вкладке обработчика onMessage должна быть написана строка | # На вкладке обработчика '''onMessage''' должна быть написана строка | ||
#:<syntaxhighlight lang="javascript"> | #:<syntaxhighlight lang="javascript"> | ||
return msg; | return msg; | ||
Строка 82: | Строка 93: | ||
Теперь перейдите в чат к боту и отправьте ему произвольное сообщение, если бот прислал это же сообщение вам в ответ, то всё настроено правильно и можно переходить к более сложным задачам. | Теперь перейдите в чат к боту и отправьте ему произвольное сообщение, если бот прислал это же сообщение вам в ответ, то всё настроено правильно и можно переходить к более сложным задачам. | ||
== Запрос информации с контроллера == | == Запрос информации с датчиков контроллера == | ||
[[Image:demo-command-nr.png|500px|thumb|right| Флоу отправки температуры процессора по запросу пользователя. Темно-зелёная нода msg.payload — это вывод отладочных сообщений в debug-консоль]] | [[Image:demo-command-nr.png|500px|thumb|right| Флоу отправки температуры процессора по запросу пользователя. Темно-зелёная нода msg.payload — это вывод отладочных сообщений в debug-консоль]] | ||
[[Image: demo-command-tg.png|400px|thumb|right| Общение с ботом в чате мессенджера Telegram. Бот в ответ на команду прислал температуру процессора, но не среагировал на другие сообщения]] | [[Image: demo-command-tg.png|400px|thumb|right| Общение с ботом в чате мессенджера Telegram. Бот в ответ на команду прислал температуру процессора, но не среагировал на другие сообщения]] | ||
Строка 89: | Строка 100: | ||
Настроим бота так, чтобы он присылал температуру процессора контроллера Wiren Board в ответ на команду <code>/cputemp</code>. | Настроим бота так, чтобы он присылал температуру процессора контроллера Wiren Board в ответ на команду <code>/cputemp</code>. | ||
{{note|info|Перед | {{note|info|Перед созданием нового флоу очистите рабочее поле — это исключит ложные срабатывания на команду из чата. При очистке все настройки соединения с контроллером и телеграм-ботом сохранятся.}} | ||
=== ChatId === | === ChatId === | ||
[[Image: save-chatId-nr.png|400px|thumb|right| Функция, которая сохраняет chatId]] | |||
ChatId — это идентификатор чата с ботом, он нужен, чтобы бот понимал куда ему отвечать. | ChatId — это идентификатор чата с ботом, он нужен, чтобы бот понимал куда ему отвечать. | ||
Строка 107: | Строка 119: | ||
#* Перетяните в рабочую область ноду '''function'''. | #* Перетяните в рабочую область ноду '''function'''. | ||
#* Дважды кликните на ней — откроется окно '''Edit function node'''. | #* Дважды кликните на ней — откроется окно '''Edit function node'''. | ||
#* На вкладке обработчика onMessage удалите содержимое поля ввода и введите строку: | #* На вкладке обработчика '''onMessage''' удалите содержимое поля ввода и введите строку: | ||
#*:<syntaxhighlight lang="javascript"> | #*:<syntaxhighlight lang="javascript"> | ||
flow.set("chatId",msg.payload.chatId); | flow.set("chatId",msg.payload.chatId); | ||
Строка 115: | Строка 127: | ||
=== Обработка команды === | === Обработка команды === | ||
[[Image: wb-cpu-temp-nr.png|400px|thumb|right| Настройка получения данных с датчиков контроллера Wiren Board]] | |||
В предыдущем примере бот реагировал на любое входящее сообщение — теперь мы научим его понимать команды: | В предыдущем примере бот реагировал на любое входящее сообщение — теперь мы научим его понимать команды: | ||
Строка 121: | Строка 134: | ||
#* Дважды кликните на ней — откроется окно '''Edit command node'''. | #* Дважды кликните на ней — откроется окно '''Edit command node'''. | ||
#* Выберите в поле '''Bot''' ноду нашего бота. | #* Выберите в поле '''Bot''' ноду нашего бота. | ||
#* Для отображения команды в меню бота в телеграм: | |||
#** Установите галочку для '''Register at telegram server'''. | |||
#** Введите описание команды в поле '''Description'''. | |||
#* Чтобы сохранить настройки, нажмите кнопку '''Done'''. | #* Чтобы сохранить настройки, нажмите кнопку '''Done'''. | ||
# Добавьте запрос температуры процессора контроллера: | # Добавьте запрос температуры процессора контроллера: | ||
Строка 131: | Строка 147: | ||
#* Перетяните в рабочую область ноду '''function'''. | #* Перетяните в рабочую область ноду '''function'''. | ||
#* Дважды кликните на ней — откроется окно '''Edit function node'''. | #* Дважды кликните на ней — откроется окно '''Edit function node'''. | ||
#* На вкладке обработчика onMessage удалите содержимое поля ввода и введите строки: | #* На вкладке обработчика '''onMessage''' удалите содержимое поля ввода и введите строки: | ||
#*:<syntaxhighlight lang="javascript"> | #*:<syntaxhighlight lang="javascript"> | ||
msg.payload = { | msg.payload = { | ||
Строка 151: | Строка 167: | ||
#* верхний выход ноды '''command''' соедините со входом ноды (WB)'''get'''; | #* верхний выход ноды '''command''' соедините со входом ноды (WB)'''get'''; | ||
#* выход ноды (WB)'''get''' соедините со входом '''function''', где формируется сообщение; | #* выход ноды (WB)'''get''' соедините со входом '''function''', где формируется сообщение; | ||
#* выход | #* выход ноды '''function''' соедините со входом ноды '''sender'''. | ||
# Опубликуйте флоу нажатием на кнопку '''Deploy'''. Возле нод '''receiver''' и '''sender''' должны появится надписи ''connected''. | # Опубликуйте флоу нажатием на кнопку '''Deploy'''. Возле нод '''receiver''' и '''sender''' должны появится надписи ''connected''. | ||
Строка 165: | Строка 181: | ||
61.414 | 61.414 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== Примеры флоу из статьи == | |||
Примеры — это JSON-файлы, которые нужно загрузить в среду Node-RED: | |||
# Скачайте архив с примером на компьютер и распакуйте его. | |||
# Выберите в меню Node-RED пункт '''Import''' и выберите импорт из '''JSON'''. | |||
# Выберите распакованный на первом шаге файл. | |||
# После импорта укажите в параметрах телеграм-бота свой API-Key и имя разрешённых пользователей. | |||
Файлы: | |||
* [[Media: Node-RED-demo-hello.zip | Пересылка принятых сообщений]] | |||
* [[Media: Node-RED-demo-command.zip | Запрос информации с датчиков контроллера]] | |||
* [[Media: Node-RED-demo-command-full.zip | Запрос информации с нескольких датчиков контроллера одновременно]] | |||
== Полезные ссылки == | |||
* [[Node-RED|Node-RED]] | |||
* [[Rule_Examples#Отправка сообщения через Telegram-бота | Отправка сообщений в Telegram с помощью wb-rules]]. |