Vytvoření telegramového robota v Yandex.Cloud

Vytvoření telegramového robota v Yandex.Cloud

Dnes z improvizovaných materiálů budeme sbírat v Yandex.Cloud Telegram bot použití Funkce cloudu Yandex (nebo Funkce Yandex pro stručnost) a Úložiště objektů Yandex (nebo Skladování objektů - pro přehlednost). Kód bude zapnutý Node.js. Je tu však jedna pikantní okolnost - jistá organizace zvaná řekněme RossKomCensorship (cenzura je zakázána článkem 29 Ústavy Ruské federace), neumožňuje poskytovatelům internetu v Rusku předávat požadavky na Telegram API na adresu: https://api.telegram.org/. No, nebudeme - ne, ne. Opravdu, v naší tašce jsou tzv. webhooky - s jejich pomocí nepodáváme požadavky na konkrétní adresu, ale pouze zasíláme naši žádost jako odpověď na jakýkoli požadavek na nás. Tedy jako v Oděse – na otázku odpovídáme otázkou. Proto Telegram API se v našem kódu nezobrazí.

Zřeknutí se odpovědnostiNázvy státních organizací zmíněných v tomto článku jsou fiktivní a možné shody se jmény skutečných organizací jsou náhodné.

Vyrobíme si tedy robota, který nás bude zásobovat chytrými myšlenkami. Přesně jako na obrázku:

Vytvoření telegramového robota v Yandex.Cloud

Můžete si to vyzkoušet v akci - zde je název: @SmartThoughtsBot. Všimněte si tlačítka "Alicina dovednost"? Je to proto, že bot je jakýmsi „společníkem“ pro eponymní Alicina dovednost, tj. plní stejné funkce jako Alicina dovednost a možná, že mohou koexistovat v míru a vzájemně si propagovat. O tom, jak tvořit Schopnost chytrého myšlení popsané v článku Alice získá dovednost. Nyní (po provedení některých změn po zveřejnění výše uvedeného článku) na smartphonu toto dovednost bude vypadat asi takto:

Vytvoření telegramového robota v Yandex.Cloud

Vytvoření bota

Přál bych si, aby tento návod byl užitečný pro všechny, vč. a začínající „stavitelé botů“. Proto v této části popíšu trochu podrobně, jak tvořit obecně v Telegrame boti. Pro ty, kteří tyto informace nepotřebují, pokračujte v dalších částech.

Otevřete aplikaci Telegaram, nazýváme otcem všech botů (mají všechno jako lidé) - @BotOtec - a pro začátek mu dáme příkaz / help, aby si osvěžil paměť toho, co umíme. Teď nás zajímá tým / newbot.

Vytvoření telegramového robota v Yandex.Cloud

Vzhledem k tomu, že zde popsaný bot již byl vytvořen, pro účely demonstrace vytvořím na krátkou dobu dalšího bota (pak jej smažu). Zavolám mu DemoHabrBot. jména (uživatelské jméno) všichni telegramoví roboti musí končit slovem čenich, Například: MyCoolBot nebo můj_cool_bot Toto je pro roboty. Nejprve však robotovi dejte jméno (název) je pro lidi. Název může být v libovolném jazyce, obsahovat mezery, nemusí končit slovem čenicha ani nemusí být unikátní. V tomto příkladu jsem nazval tohoto robota Demo Habr.

Vytvoření telegramového robota v Yandex.Cloud

Nyní vyberte jméno pro robota (uživatelské jméno, ten pro roboty). Nazvěme to DemoHabrBot. Vše, co souvisí se jménem robota (název) vůbec nesouvisí s jeho jménem - uživatelské jméno (nebo platí, ale přesně naopak). Po úspěšném vytvoření jedinečného názvu robota musíme zkopírovat a uložit (v nejpřísnější důvěře!) token zobrazený na snímku obrazovky s červenou šipkou. S jeho pomocí později nainstalujeme odchozí Telegram'webhook k našemu Funkce Yandex.

Vytvoření telegramového robota v Yandex.Cloud

A nyní dáme příkaz otci všech botů: /mybotia zobrazí se nám seznam všech robotů, které jsme vytvořili. Čerstvě upečeného bota zatím nechme na pokoji Demo Habr (byl vytvořen, aby ukázal, jak vytvářet roboty, ale my ho dnes použijeme pro jiné demonstrační účely) a zvažte robota Chytré myšlenky (@SmartThoughtsBot). Klikněte na tlačítko s jeho názvem v seznamu robotů.

Vytvoření telegramového robota v Yandex.Cloud

Zde můžeme nastavit našeho robota. Stisknutí tlačítka Upravit… přejdeme k úpravě jedné nebo druhé možnosti. Například kliknutím na tlačítko Upravit jméno můžeme změnit jméno robota, řekněme místo Chytré myšlenky, napsat bláznivé nápady. Botpic - toto je avatar robota, musí být alespoň 150 x 150 px. Popis je krátký popis, který uživatel vidí při prvním spuštění robota jako odpověď na otázku: Co tento robot umí? O Nás - ještě kratší popis, který je přenášen s odkazem na robota (https://t.me/SmartThoughtsBot) nebo při prohlížení informací o něm.

Vytvoření telegramového robota v Yandex.Cloud

Musíme jen nastavit příkazy. Chcete-li to provést, stiskněte tlačítko Upravit příkazy. Standardizovat uživatelské postupy Telegram doporučuje vždy používat dva příkazy: / start и /Pomoca pokud robot potřebuje nastavení - další příkaz /settings. Náš robot je jednoduchý jako míč, takže zatím nepotřebuje žádné nastavení. Napíšeme první dva příkazy, které následně zpracujeme v kódu. Nyní, pokud uživatel zadá do vstupního pole lomítko (lomítko : /), objeví se seznam příkazů pro jejich rychlý výběr. Vše je jako na obrázku: vlevo - nastavujeme příkazy přes otce bota; vpravo jsou tyto příkazy již dostupné uživatelům našeho robota.

Vytvoření telegramového robota v Yandex.Cloud

Funkce Yandex

Nyní, když byl náš robot vytvořen, pojďme na to Yandex.Cloudvytvořit funkci, která spustí náš kód bota. Pokud jste nepracovali s Yandex.Cloud přečtěte si materiál Alenka v zemi Bitrix, a pak - Funkce Yandex odesílají poštu. Jsem si téměř jistý, že tyto dva relativně malé články vám k základnímu pochopení tématu postačí.

Tedy v konzoli Yandex.Clouds v levé navigační nabídce vyberte položku Cloudové funkcea poté stiskněte tlačítko Vytvořte funkci. Dáváme mu jméno a pro sebe - stručný popis.

Vytvoření telegramového robota v Yandex.Cloud

Po stisknutí tlačítka vytvořit a po několika sekundách se nová funkce objeví v seznamu všech funkcí. Klikněte na její jméno - tím se dostaneme na stránku Recenze naše funkce. Zde musíte povolitOn) přepínač veřejná funkceaby byl dostupný z externího (pro Yandex.Clouds) světa a hodnotu polí Odkaz na volání и ID - uchovávejte to v hlubokém utajení přede všemi kromě vás a Telegramu, aby vaši funkci nemohli volat různí podvodníci.

Vytvoření telegramového robota v Yandex.Cloud

Nyní pomocí levého menu přejděte na Editor funkcí. Odložme na chvíli naše Chytré myšlenkya vytvořit minimální funkci šablony pro kontrolu výkonu našeho robota... V tomto kontextu je však tato funkce naším robotem... Stručně řečeno, nyní a právě zde vytvoříme nejjednoduššího robota, který bude „zrcadlit“ ( tj. odeslat zpět ) uživatelské požadavky. Tuto šablonu lze vždy použít při vytváření nových robotů telegramů, aby se zajistila komunikace s Telegram'om funguje dobře. Klikněte Vytvořit soubor, zavolej to index.jsa online Editor kódu do tohoto souboru vložte následující 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 mělo vypadat nějak takto:

Vytvoření telegramového robota v Yandex.Cloud

Níže uvádíme Vstupní bod - index.botKde index toto je název souboru (index.js) a čenich - název funkce (module.exports.bot). Všechna ostatní pole ponechte „tak jak jsou“ a v pravém horním rohu klikněte na tlačítko Vytvořit verzi. Po několika sekundách se vytvoří tato verze funkce. Brzy po testování webhook, vytvoříme novou verzi − Chytré myšlenky.

Vytvoření telegramového robota v Yandex.Cloud

Skladování objektů

Nyní, když jsme se nastavili Funkce Yandexpojďme, když jsme v konzoli Yandex.Clouds, vytvořte tzv. Kbelík (vědro, tj. kbelík v ruštině, v žádném případě kytice) pro ukládání obrazových souborů, které budou použity v našem botě Chytré myšlenky. Vyberte z levé navigační nabídky Uložení objektů, zmáčknout tlačítko Vytvořte kbelík, pojmenujte to, např. img-bucket, a nejdůležitějsí, Přístup ke čtení k objektům zveřejnit - jinak Telegram neuvidí naše obrázky. Všechna ostatní pole zůstanou nezměněna. Stiskneme tlačítko Vytvořte kbelík.

Vytvoření telegramového robota v Yandex.Cloud

Poté může seznam všech segmentů vypadat nějak takto (pokud je toto váš jediný segment):

Vytvoření telegramového robota v Yandex.Cloud

Nyní navrhuji kliknout na název kbelíku a vytvořit v něm složku pro uspořádání ukládání obrázků pro různé aplikace. Například pro telegramového robota Chytré myšlenky vytvořil jsem složku s názvem tg-bot-chytré-myšlenky (Nic, tuhle šifru pochopím). Vytvořte si také.

Vytvoření telegramového robota v Yandex.Cloud

Nyní můžete kliknout na název složky, přejít do ní a nahrát soubory:

Vytvoření telegramového robota v Yandex.Cloud

A kliknutím na název souboru - získat URL pro použití v našem robotu a obecně - kdekoli (ale toto nezveřejňujte URL zbytečně, protože provoz z úložiště objektů zpoplatněno).

Vytvoření telegramového robota v Yandex.Cloud

Tady je to vlastně všechno úložiště objektů. Nyní budete vědět, co dělat, když se zobrazí výzva k nahrání souborů.

Webhook

Nyní provedeme instalaci webhook - tj. když robot obdrží aktualizaci (například zprávu od uživatele) ze serveru Telegram do našeho Funkce Yandex žádost bude odeslánapožádat) s daty. Zde je řetězec, který můžete jednoduše vložit do adresního pole prohlížeče a poté obnovit stránku (toto je třeba provést pouze jednou): https://api.telegram.org/bot{bot_token}/setWebHook?url={webhook_url}
Stačí vyměnit {bot_token} na token, který jsme obdrželi od robota otce při vytváření našeho robota, a {webhook_url} - zapnuto URL naše Funkce Yandex. Počkej chvíli! Ale RossKomCensorship zakazuje poskytovatelům v Ruské federaci doručovat adresu https://api.telegram.org. Ano to je správně. Ale něco si vymyslet můžete. Ostatně na to se můžete zeptat třeba babičky na Ukrajině, v Izraeli nebo v Kanadě – tam žádná „ruská cenzura“ neexistuje a jen bůh ví, jak se bez ní žije. V důsledku toho by žádost-odpověď při instalaci webhooku měla vypadat takto:

Vytvoření telegramového robota v Yandex.Cloud

Testování. Mělo by být zrcadleno.

Vytvoření telegramového robota v Yandex.Cloud

To je pravda. Gratulujeme - nyní Funkce Yandex se stal Telegram-bot!

Chytré myšlenky

A teď děláme Chytré myšlenky. Kód je otevřený a leží dál GitHub. Je to docela dobře komentované a má to jen sto řádků. Přečtěte si to jako libreto operní divy!

Vytvoření telegramového robota v Yandex.Cloud

Naklonujte projekt a nainstalujte závislosti:

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

Proveďte v souboru potřebné změny index.js (volitelné; nemůžete nic změnit). Vytvořit zip-archiv, se souborem index.js a složku node_modules uvnitř např. tzv smart.zip.

Vytvoření telegramového robota v Yandex.Cloud

Nyní přejděte v konzole k našemu Funkce Yandex, vyberte kartu ZIP archiv, zmáčknout tlačítko Vyberte soubora stáhněte si náš archiv smart.zip. Nakonec v pravém horním rohu klikněte na tlačítko Vytvořit verzi.

Vytvoření telegramového robota v Yandex.Cloud

Za pár sekund, až bude funkce aktualizována, našeho bota znovu otestujeme. Nyní již „nezrcadlí“, ale přináší chytré myšlenky!

Vytvoření telegramového robota v Yandex.Cloud

To je pro dnešek vše. Další články následují. Pokud máte zájem si toto přečíst, přihlaste se k odběru upozornění na nové články. Přihlásit se můžete zde popř Telegram-kanál IT kurz ZakharNebo X @mikezaharov.

reference

Kód na GitHubu
Funkce cloudu Yandex
Úložiště objektů Yandex
Boti: Úvod pro vývojáře
Telegram Bot API

.Онаты

Vytvoření telegramového robota v Yandex.Cloud

Zdroj: www.habr.com

Přidat komentář