<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>UBOS Community: Yurii Kostiuchenko</title>
    <description>The latest articles on UBOS Community by Yurii Kostiuchenko (@yk).</description>
    <link>https://community.ubos.tech/yk</link>
    <image>
      <url>https://community.ubos.tech/uploads/user/profile_image/7/4fc293bf-a017-43a7-98ba-47ee31988c83.png</url>
      <title>UBOS Community: Yurii Kostiuchenko</title>
      <link>https://community.ubos.tech/yk</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://community.ubos.tech/feed/yk"/>
    <language>en</language>
    <item>
      <title>Як створити інтеграцію Telegram бота з Node-RED в середовищі UBOS.</title>
      <dc:creator>Yurii Kostiuchenko</dc:creator>
      <pubDate>Tue, 13 Dec 2022 08:24:35 +0000</pubDate>
      <link>https://community.ubos.tech/yk/iak-stvoriti-bazovogho-telegram-bota-ta-intieghruvati-z-nodered-5ej6</link>
      <guid>https://community.ubos.tech/yk/iak-stvoriti-bazovogho-telegram-bota-ta-intieghruvati-z-nodered-5ej6</guid>
      <description>&lt;p&gt;В цій статті описано як легко та швидко можна створити інтеграцію Telegram бота з Node-RED в середовищі UBOS. Дана інтеграція дозволить вашому Telegram ботові спілкуватися за заданим вами сценарієм або при підключенні сторонніх сервісів (наприклад AI) використовувати їх можливості для формування необхідних відповідей&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Необхідні умови:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Воркспейс UBOS&lt;/li&gt;
&lt;li&gt;&lt;a href="https://community.ubos.tech/alexseeko/pidniattia-sieriedovishcha-node-red-l88"&gt;Flow Builder UBOS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Обліковий запис в Telegram&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Крок перший - створюємо Telegram бота.
&lt;/h3&gt;

&lt;p&gt;Для цього потрібно відкрити &lt;a href="https://telegram.me/BotFather" rel="noopener noreferrer"&gt;@BotFather&lt;/a&gt;, натиснути на кнопку &lt;code&gt;Menu&lt;/code&gt;. З'явиться повідомлення з переліком всіх команд управління Telegram-ботами, необхідно ввести команду &lt;code&gt;/newbot&lt;/code&gt;, далі додати ім'я бота, воно обов'язково повинно закінчуватися на &lt;code&gt;_bot&lt;/code&gt;. &lt;br&gt;
Якщо ім'я прийнято, з’явиться посилання перейшовши за яким ми відкриємо чат з створеним ботом та &lt;code&gt;token&lt;/code&gt; для доступу до &lt;code&gt;HTTP API&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://community.ubos.tech/uploads/articles/9ofby2i6ghnevs0hkq1f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://community.ubos.tech/uploads/articles/9ofby2i6ghnevs0hkq1f.png" alt="Image description" width="850" height="688"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Крок другий - створюємо новий &lt;code&gt;flow&lt;/code&gt; в середовищі Node-RED.
&lt;/h3&gt;

&lt;p&gt;Розпочнемо з завантаження додаткових вузлів для роботи з Telegram. Завантажуємо з бібліотеки &lt;code&gt;node-red-contrib-telegrambot&lt;/code&gt;&lt;br&gt;
Як завантажувати вузли, можна перглянути &lt;a href="https://community.ubos.tech/blue_skies/node-function-in-node-red-4hj3#chapter-5"&gt;тут&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Далі необхідно запрограмувати дії бота за допомогою середовища Node-RED. Створюємо тут новий &lt;code&gt;flow&lt;/code&gt;. Для роботи з Telegram будемо використовувати встановлені нами вузли із бібліотеки &lt;a href="https://flows.nodered.org/node/node-red-contrib-telegrambot" rel="noopener noreferrer"&gt;”node-red-contrib-telegrambot”&lt;/a&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;receiver&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sender&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://community.ubos.tech/uploads/articles/wucxj56qzwbwok0k0228.png" class="article-body-image-wrapper"&gt;&lt;img src="https://community.ubos.tech/uploads/articles/wucxj56qzwbwok0k0228.png" alt="Image description" width="747" height="89"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Вузол receiver&lt;/strong&gt;&lt;br&gt;
Приймає дані із телеграм бота, передає їх тип та вміст для подальших дій.&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://community.ubos.tech/uploads/articles/yqxm5ljxvwp90mtzebhf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://community.ubos.tech/uploads/articles/yqxm5ljxvwp90mtzebhf.png" alt="Image description" width="587" height="153"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Заповнюємо поля &lt;code&gt;"Bot-Name"&lt;/code&gt;, &lt;code&gt;"Token"&lt;/code&gt;,&lt;code&gt;"Users"&lt;/code&gt;, &lt;code&gt;"ChatIds"&lt;/code&gt;&lt;br&gt;
Дізнатися &lt;em&gt;ChatId&lt;/em&gt; можна за допомогою Telegram-Bot &lt;a href="https://t.me/getmyid_bot" rel="noopener noreferrer"&gt;Get My ID&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://community.ubos.tech/uploads/articles/s1sx0fxo5vb5jeyuphrf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://community.ubos.tech/uploads/articles/s1sx0fxo5vb5jeyuphrf.png" alt="Image description" width="700" height="716"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Перевіримо чи все працює. Надсилаємо повідомлення в чаті з створеним нами ботом:&lt;br&gt;
&lt;a href="https://community.ubos.tech/uploads/articles/iwpctkkcix4voatzecs9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://community.ubos.tech/uploads/articles/iwpctkkcix4voatzecs9.png" alt="Image description" width="467" height="100"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://community.ubos.tech/uploads/articles/8fvuyrz0vwh8vkpatlub.png" class="article-body-image-wrapper"&gt;&lt;img src="https://community.ubos.tech/uploads/articles/8fvuyrz0vwh8vkpatlub.png" alt="Image description" width="587" height="193"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Дані які отримує вузол &lt;code&gt;Telegram receiver&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Назва&lt;/th&gt;
&lt;th&gt;Значення&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;ChatId&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;Id&lt;/code&gt; чату яке ми отримали за допомогою &lt;a href="https://t.me/getmyid_bot" rel="noopener noreferrer"&gt;Get My ID&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;messageId&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;Id&lt;/code&gt; повідомлення в чаті&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;content&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;текст відправленого повідомлення&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;date&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;дата в мілісекундах&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Вузол sender&lt;/strong&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://community.ubos.tech/uploads/articles/7rtngm5e8wi2bufuykdv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://community.ubos.tech/uploads/articles/7rtngm5e8wi2bufuykdv.png" alt="Image description" width="786" height="497"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Крок третій - діалог між користувачем та ботом.
&lt;/h3&gt;

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

&lt;p&gt;&lt;a href="https://community.ubos.tech/uploads/articles/r0v43zbogi0ggyf9l2i6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://community.ubos.tech/uploads/articles/r0v43zbogi0ggyf9l2i6.png" alt="Image description" width="809" height="218"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;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;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://community.ubos.tech/uploads/articles/kp4ecy72m38c55qvrz60.png" class="article-body-image-wrapper"&gt;&lt;img src="https://community.ubos.tech/uploads/articles/kp4ecy72m38c55qvrz60.png" alt="Image description" width="1409" height="528"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;h3&gt;
  
  
  Результат в Telegram:
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://community.ubos.tech/uploads/articles/3byo7ukf4whkllwmzoc9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://community.ubos.tech/uploads/articles/3byo7ukf4whkllwmzoc9.png" alt="Image description" width="771" height="206"&gt;&lt;/a&gt; &lt;/p&gt;

</description>
      <category>telegram</category>
      <category>nodered</category>
    </item>
  </channel>
</rss>
