В цій статті описано як легко та швидко можна створити інтеграцію Telegram бота з Node-RED в середовищі UBOS. Дана інтеграція дозволить вашому Telegram ботові спілкуватися за заданим вами сценарієм або при підключенні сторонніх сервісів (наприклад AI) використовувати їх можливості для формування необхідних відповідей
Необхідні умови:
- Воркспейс UBOS
- Flow Builder UBOS
- Обліковий запис в Telegram
Крок перший - створюємо Telegram бота.
Для цього потрібно відкрити @BotFather, натиснути на кнопку Menu
. З'явиться повідомлення з переліком всіх команд управління Telegram-ботами, необхідно ввести команду /newbot
, далі додати ім'я бота, воно обов'язково повинно закінчуватися на _bot
.
Якщо ім'я прийнято, з’явиться посилання перейшовши за яким ми відкриємо чат з створеним ботом та token
для доступу до HTTP API
.
Крок другий - створюємо новий flow
в середовищі Node-RED.
Розпочнемо з завантаження додаткових вузлів для роботи з Telegram. Завантажуємо з бібліотеки node-red-contrib-telegrambot
Як завантажувати вузли, можна перглянути тут
Далі необхідно запрограмувати дії бота за допомогою середовища Node-RED. Створюємо тут новий flow
. Для роботи з Telegram будемо використовувати встановлені нами вузли із бібліотеки ”node-red-contrib-telegrambot”:
receiver
sender
Вузол receiver
Приймає дані із телеграм бота, передає їх тип та вміст для подальших дій.
До даного вузла потрібно додати Telegram-Bot. Відкриваємо вікно налаштувань біля поля Bot
:
Заповнюємо поля "Bot-Name"
, "Token"
,"Users"
, "ChatIds"
Дізнатися ChatId можна за допомогою Telegram-Bot Get My ID.
Перевіримо чи все працює. Надсилаємо повідомлення в чаті з створеним нами ботом:
Дані отримані вузлом receiver
з Telegram можна побачити, підключивши debug
(в середині вузла в полі "output"
обрати значення "complete msg object"
):
- Дані які отримує вузол
Telegram receiver
Назва | Значення |
---|---|
ChatId |
Id чату яке ми отримали за допомогою Get My ID
|
messageId |
Id повідомлення в чаті |
content |
текст відправленого повідомлення |
date |
дата в мілісекундах |
Вузол sender
Це вузол, який відправляє відповідь в msg.payload
в чат з обраним ботом.
Обов'язковими ключами об'єкту msg.payload
має бути content
та type
:
Крок третій - діалог між користувачем та ботом.
Для прикладу відтворимо короткий діалог із заголовленими фразами.
Логіку цієї функції можна змінювати та розширювати. Наприклад, використовувати команди із сторонніх ресурсів чи штучний інтелект.
if(msg.payload.content == "Hello"){
msg.payload.content = 'Hi, User!'
}
if (msg.payload.content == "How are you?") {
msg.payload.content = 'Pretty good. What about you?'
}
return msg;
Top comments (0)