UBOS Community

Yurii Kostiuchenko
Yurii Kostiuchenko

Posted on

Як створити інтеграцію Telegram бота з Node-RED в середовищі UBOS.

В цій статті описано як легко та швидко можна створити інтеграцію Telegram бота з Node-RED в середовищі UBOS. Дана інтеграція дозволить вашому Telegram ботові спілкуватися за заданим вами сценарієм або при підключенні сторонніх сервісів (наприклад AI) використовувати їх можливості для формування необхідних відповідей

Необхідні умови:

  1. Воркспейс UBOS
  2. Flow Builder UBOS
  3. Обліковий запис в Telegram

Крок перший - створюємо Telegram бота.

Для цього потрібно відкрити @BotFather, натиснути на кнопку Menu. З'явиться повідомлення з переліком всіх команд управління Telegram-ботами, необхідно ввести команду /newbot, далі додати ім'я бота, воно обов'язково повинно закінчуватися на _bot.
Якщо ім'я прийнято, з’явиться посилання перейшовши за яким ми відкриємо чат з створеним ботом та token для доступу до HTTP API.

Image description

Крок другий - створюємо новий flow в середовищі Node-RED.

Розпочнемо з завантаження додаткових вузлів для роботи з Telegram. Завантажуємо з бібліотеки node-red-contrib-telegrambot
Як завантажувати вузли, можна перглянути тут

Далі необхідно запрограмувати дії бота за допомогою середовища Node-RED. Створюємо тут новий flow. Для роботи з Telegram будемо використовувати встановлені нами вузли із бібліотеки ”node-red-contrib-telegrambot”:

  • receiver
  • sender

Image description

Вузол receiver
Приймає дані із телеграм бота, передає їх тип та вміст для подальших дій.

До даного вузла потрібно додати Telegram-Bot. Відкриваємо вікно налаштувань біля поля Bot:

Image description

Заповнюємо поля "Bot-Name", "Token","Users", "ChatIds"
Дізнатися ChatId можна за допомогою Telegram-Bot Get My ID.

Image description

Перевіримо чи все працює. Надсилаємо повідомлення в чаті з створеним нами ботом:
Image description

Дані отримані вузлом receiver з Telegram можна побачити, підключивши debug (в середині вузла в полі "output" обрати значення "complete msg object"):

Image description

  • Дані які отримує вузол Telegram receiver
Назва Значення
ChatId Id чату яке ми отримали за допомогою Get My ID
messageId Id повідомлення в чаті
content текст відправленого повідомлення
date дата в мілісекундах

Вузол sender

Це вузол, який відправляє відповідь в msg.payload в чат з обраним ботом.
Обов'язковими ключами об'єкту msg.payload має бути contentта type:

Image description

Крок третій - діалог між користувачем та ботом.

Для прикладу відтворимо короткий діалог із заголовленими фразами.
Логіку цієї функції можна змінювати та розширювати. Наприклад, використовувати команди із сторонніх ресурсів чи штучний інтелект.

Image description

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;
Enter fullscreen mode Exit fullscreen mode

Image description

Результат в Telegram:

Image description

Discussion (0)