Vytvorenie telegramového robota v Yandex.Cloud

Vytvorenie telegramového robota v Yandex.Cloud

Dnes z odpadových materiálov budeme montovať Yandex.Cloud Telegram bot s Funkcie cloudu Yandex (Alebo Funkcie Yandex - v skratke) a Úložisko objektov Yandex (Alebo Skladovanie objektov - kvôli prehľadnosti). Kód bude zapnutý Node.js. Je tu však jedna pikantná okolnosť – istá organizácia nazývaná, povedzme, RossKomTsenzur (cenzúra je zakázaná článkom 29 Ústavy Ruskej federácie), neumožňuje ruským poskytovateľom internetu prenášať žiadosti na Telegram API na tejto adrese: https://api.telegram.org/. No, nebudeme - nie, nie. Veď v našej taške sú tzv. webhooky — s ich pomocou nepodávame požiadavky na konkrétnu adresu, ale jednoducho nám posielame našu požiadavku ako odpoveď na akúkoľvek požiadavku. To znamená, že ako v Odese odpovedáme na otázku otázkou. Preto Telegram API sa v našom kóde nezobrazí.

Vylúčenie zodpovednostiNázvy vládnych organizácií uvedené v tomto článku sú fiktívne a možné zhody s názvami organizácií v reálnom živote sú náhodné.

Vyrobíme si teda robota, ktorý nám poskytne inteligentné myšlienky. Presne ako na obrázku:

Vytvorenie telegramového robota v Yandex.Cloud

Môžete to vyskúšať v akcii - tu je názov: @SmartThoughtsBot. Všimol si tlačidlo "Alicina zručnosť"? Je to preto, že robot je akýmsi „spoločníkom“ pre robota s rovnakým názvom. Alicina zručnosť, t.j. plní rovnaké funkcie ako Alicina zručnosť a je možné, že vďaka vzájomnej reklame budú môcť spolunažívať. O tom, ako vytvoriť zručnosť Inteligentné myšlienky popísané v článku Alice získava zručnosť. Teraz (po vykonaní určitých zmien po zverejnení vyššie uvedeného článku) na smartfóne toto zručnosť bude vyzerať nejako takto:

Vytvorenie telegramového robota v Yandex.Cloud

Vytvorenie robota

Bol by som rád, keby bol tento návod užitočný pre každého, vrátane. a začínajúcich tvorcov robotov. Preto v tejto časti trochu podrobne popíšem, ako tvoriť vo všeobecnosti telegramroboti. Pre tých, ktorí tieto informácie nevyžadujú, prejdite na nasledujúce časti.

Otvorte aplikáciu Telegaram, nazvime otca všetkých robotov (všetko majú ako ľudia) - @BotOtec - a najprv mu dáme príkaz /help, aby si osviežil pamäť toho, čo môžeme urobiť. Teraz nás bude zaujímať tím / newbot.

Vytvorenie telegramového robota v Yandex.Cloud

Keďže tu popísaný bot už bol vytvorený, pre demonštračné účely vytvorím na krátky čas ďalšieho bota (a potom ho vymažem). zavolám mu DemoHabrBot. mená (meno) všetkých telegramových robotov musí končiť slovom Bot, napríklad: MyCoolBot alebo my_cool_bot - toto je pre robotov. Najprv však dáme robotovi meno (názov) - a to je pre ľudí. Názov môže byť v akomkoľvek jazyku, môže obsahovať medzery a nemusí končiť slovom Bota ani nemusí byť jedinečný. V tomto príklade som nazval tento robot Demo Habr.

Vytvorenie telegramového robota v Yandex.Cloud

Teraz vyberte názov robota (meno, ten pre roboty). Zavolajme mu DemoHabrBot. Všetko, čo súvisí s názvom robota (názov) vôbec nesúvisí s jeho menom - meno (alebo platí, ale presne naopak). Po úspešnom vytvorení jedinečného názvu robota musíme skopírovať a uložiť (najprísnejšie dôverne!) token zobrazený na snímke obrazovky s červenou šípkou. S jeho pomocou neskôr určíme pôvodnú z telegram'webhook pre naše Funkcia Yandex.

Vytvorenie telegramového robota v Yandex.Cloud

Teraz dajme príkaz otcovi všetkých robotov: /mybotsa zobrazí sa nám zoznam všetkých robotov, ktoré sme vytvorili. Čerstvo upečeného bota nechajme zatiaľ na pokoji Demo Habr (bol vytvorený, aby ukázal, ako vytvoriť roboty, ale dnes ho použijeme aj na iné demonštračné účely) a pozrime sa na robota Inteligentné myšlienky (@SmartThoughtsBot). Kliknite na tlačidlo s jeho názvom v zozname robotov.

Vytvorenie telegramového robota v Yandex.Cloud

Tu môžeme nakonfigurovať nášho robota. Stlačením tlačidla Upraviť ... Prejdeme k úprave jednej alebo druhej možnosti. Napríklad kliknutím na tlačidlo Upraviť meno môžeme zmeniť názov robota, povedzme namiesto toho Inteligentné myšlienky, píšte Bláznivé nápady. Botpic - toto je avatar robota, musí byť aspoň 150 x 150 px. Popis — toto je krátky popis, ktorý používateľ vidí pri prvom spustení robota ako odpoveď na otázku: Čo dokáže tento robot? O nás — ešte kratší popis, ktorý sa prenáša s odkazom na robota (https://t.me/SmartThoughtsBot) alebo pri prezeraní informácií o ňom.

Vytvorenie telegramového robota v Yandex.Cloud

Všetko, čo musíme urobiť, je nastaviť príkazy. Ak to chcete urobiť, stlačte tlačidlo Upraviť príkazy. Na štandardizáciu používateľskej praxe telegram odporúča vždy použiť dva príkazy: /štart и / Pomoca ak robot potrebuje nastavenia, použite dodatočný príkaz /settings. Náš robot je jednoduchý ako lopta, takže zatiaľ nepotrebuje žiadne nastavenia. Napíšeme prvé dva príkazy, ktoré následne spracujeme v kóde. Teraz, ak používateľ zadá do vstupného poľa lomku (lomítko: /), zobrazí sa zoznam príkazov pre rýchly výber. Všetko je ako na obrázku: vľavo - príkazy inštalujeme cez otca bota; na pravej strane sú tieto príkazy už dostupné používateľom nášho robota.

Vytvorenie telegramového robota v Yandex.Cloud

Funkcia Yandex

Teraz, keď bol náš robot vytvorený, poďme na to Yandex.Cloudvytvoriť funkciu, ktorá spustí kód nášho bota. Ak ste nepracovali s Yandex.Cloud prečítajte si materiál Alica v krajine Bitrix, a potom - Funkcie Yandex odosielajú poštu. Som si celkom istý, že tieto dva relatívne krátke články vám budú stačiť na základné pochopenie témy.

Takže v konzole Yandex.Cloud v ľavom navigačnom menu vyberte položku Cloudové funkciea potom stlačte tlačidlo Vytvorte funkciu. Dávame jej názov a krátky popis.

Vytvorenie telegramového robota v Yandex.Cloud

Po stlačení tlačidla vytvoriť a po niekoľkých sekundách sa nová funkcia objaví v zozname všetkých funkcií. Kliknite na jej meno - dostanete sa na stránku Recenzia naša funkcia. Tu musíte povoliť (On) prepínač Verejná funkciatak, aby bol prístupný zvonku (napr Yandex.Cloud) sveta a význam polí Odkaz na volanie и identifikátor — utajiť to pred všetkými okrem seba a telegramu, aby tvoju funkciu nemohli volať rôzni podvodníci.

Vytvorenie telegramového robota v Yandex.Cloud

Teraz pomocou ľavého menu prejdite na editor funkcie. Odložíme na chvíľu bokom náš Inteligentné myšlienky, a vytvorte minimálnu šablónovú funkciu na kontrolu funkčnosti nášho bota... Avšak v tomto kontexte je táto funkcia naším botom... Skrátka, teraz a práve tu si vytvoríme jednoduchého bota, ktorý bude “zrkadliť” ( t.j. poslať späť ) požiadavky používateľov. Túto šablónu možno vždy použiť pri vytváraní nových telegramových robotov, aby ste sa uistili, že komunikácia s telegramohm funguje dobre. Kliknite Vytvorte súbor, nazvime to index.jsa online Editor kódu do tohto súboru vložte nasledujúci kód:

module.exports.bot = async (event) => {
  
  const body = JSON.parse(event.body);

  const msg = {
    'method': 'sendMessage',
    'chat_id': body.message.chat.id,
    'text': body.message.text
  };

  return {
    'statusCode': 200,
    'headers': {
      'Content-Type': 'application/json'
    },
    'body': JSON.stringify(msg),
    'isBase64Encoded': false
  };
};

V konzole Yandex.Cloud by to malo vyzerať takto:

Vytvorenie telegramového robota v Yandex.Cloud

Ďalej uvádzame nižšie Vstupný bod - index.botKde index toto je názov súboru (index.js), a Bot - názov funkcie (module.exports.bot). Všetky ostatné polia nechajte tak, ako sú, a kliknite na tlačidlo v pravom hornom rohu Vytvoriť verziu. Táto verzia funkcie sa vytvorí o niekoľko sekúnd. Čoskoro po testovaní webhook, vytvoríme novú verziu - Inteligentné myšlienky.

Vytvorenie telegramového robota v Yandex.Cloud

Skladovanie objektov

Teraz, keď sme vytvorili Funkcia Yandex, no tak, kým sme v konzole Yandex.Cloud, vytvorme si tzv vedro (vedro, t.j. vedro v ruštine, vôbec nie kyticu) na ukladanie obrázkových súborov, ktoré budú použité v našom bote Inteligentné myšlienky. V ľavom navigačnom menu vyberte položku Ukladanie objektov, stlač tlačidlo Vytvorte vedro, vymyslite mu názov, napr. img-bucket, a čo je najdôležitejšie, Prístup na čítanie k objektom Zverejňujeme to - inak Telegram neuvidí naše obrázky. Všetky ostatné polia necháme nezmenené. stlač tlačidlo Vytvorte vedro.

Vytvorenie telegramového robota v Yandex.Cloud

Potom môže zoznam všetkých segmentov vyzerať asi takto (ak je toto váš jediný segment):

Vytvorenie telegramového robota v Yandex.Cloud

Teraz navrhujem kliknúť na názov vedra a vytvoriť v ňom priečinok na usporiadanie ukladania obrázkov pre vaše rôzne aplikácie. Napríklad pre telegramového robota Inteligentné myšlienky Vytvoril som priečinok s názvom tg-bot-smart-myšlienky (nič, tomuto kódu budem rozumieť). Vytvorte si aj vy.

Vytvorenie telegramového robota v Yandex.Cloud

Teraz môžete kliknúť na názov priečinka, prejsť doň a nahrať súbory:

Vytvorenie telegramového robota v Yandex.Cloud

A kliknutím na názov súboru - získajte ho URL na použitie v našom robote a vo všeobecnosti - kdekoľvek (ale nezverejňujte to URL zbytočné, keďže premávka z Skladovanie objektov spoplatnené).

Vytvorenie telegramového robota v Yandex.Cloud

To je v podstate všetko Skladovanie objektov. Teraz budete vedieť, čo robiť, keď sa zobrazí výzva na nahranie súborov.

Webhook

Teraz nainštalujeme webhook - t.j. keď robot dostane aktualizáciu (napríklad správu od používateľa) zo servera telegram do nášho Funkcia Yandex bude odoslaná žiadosť (požiadať) s údajmi. Tu je riadok, ktorý môžete jednoducho vložiť do poľa adresy prehliadača a potom obnoviť stránku (stačí to urobiť raz): https://api.telegram.org/bot{bot_token}/setWebHook?url={webhook_url}
Len ho vymeníme {bot_token} na token, ktorý sme dostali od otcovského robota pri vytváraní nášho robota a {webhook_url} - zapnuté URL náš Funkcie Yandex. Počkaj minútu! ale RossKomTsenzur zakazuje poskytovateľom v Ruskej federácii obsluhovať adresu https://api.telegram.org. Áno, to je správne. Ale vymysli niečo. Koniec koncov, môžete sa na to opýtať svojej babičky napríklad na Ukrajine, v Izraeli alebo v Kanade - tam žiadna „Rosskomcenzúra“ neexistuje a len Boh vie, ako ľudia bez nej žijú. V dôsledku toho by požiadavka-odpoveď pri inštalácii webhooku mala vyzerať takto:

Vytvorenie telegramového robota v Yandex.Cloud

Testujeme. Mal by sa „zrkadliť“.

Vytvorenie telegramového robota v Yandex.Cloud

Toto je pravda. Gratulujeme - teraz Funkcia Yandex sa stal telegram-bot!

Inteligentné myšlienky

Teraz poďme robiť inteligentné myšlienky. Kód je otvorený a leží na GitHub. Je to celkom dobre komentované a má len sto riadkov. Prečítajte si to ako libreto opernej divy!

Vytvorenie telegramového robota v Yandex.Cloud

Naklonujte projekt a nainštalujte závislosti:

git clone https://github.com/stmike/tg-bot-smart-thoughts.git
cd tg-bot-smart-thoughts
npm i

Vykonajte potrebné zmeny v súbore index.js (voliteľné; nemusíte nič meniť). Vytvorte zips-archív, so spis index.js a priečinok node_modules vnútri, napríklad pod menom smart.zip.

Vytvorenie telegramového robota v Yandex.Cloud

Teraz prejdite do konzoly na našu Funkcie Yandex, vyberte kartu ZIP archív, stlač tlačidlo Vyberte súbora stiahnite si náš archív smart.zip. Nakoniec v pravom hornom rohu kliknite na tlačidlo Vytvoriť verziu.

Vytvorenie telegramového robota v Yandex.Cloud

O niekoľko sekúnd, keď sa funkcia aktualizuje, opäť otestujeme nášho robota. Teraz už „nezrkadlí“, ale prináša inteligentné myšlienky!

Vytvorenie telegramového robota v Yandex.Cloud

To je na dnes všetko. Nasledujú ďalšie články. Ak máte záujem si toto prečítať, prihláste sa na odber upozornení na nové články. Prihlásiť sa môžete tu, alebo na telegram- kanál IT tutorial ZakharAlebo Twitter @mikezaharov.

referencie

Kód na GitHub
Funkcie cloudu Yandex
Úložisko objektov Yandex
Boti: Úvod pre vývojárov
Telegram Bot API

dary

Vytvorenie telegramového robota v Yandex.Cloud

Zdroj: hab.com

Pridať komentár