Telegrami roboti ehitamine Yandex.Cloudis

Telegrami roboti ehitamine Yandex.Cloudis

Täna kogume improviseeritud materjalidest sisse Yandex.Cloud Telegrammi bot koos Yandexi pilvefunktsioonid (Või Yandexi funktsioonid lühiduse huvides) ja Yandexi objektide salvestusruum (Või Objektide hoiustamine - selguse huvides). Kood läheb sisse Node.js. Siiski on üks pikantne asjaolu – teatud organisatsioon nimega, oletame, RossKomTsensuur (tsensuur on keelatud Vene Föderatsiooni põhiseaduse artikliga 29), ei luba Venemaa Interneti-teenuse pakkujatel päringuid edastada Telegrami API aadressile: https://api.telegram.org/. Noh, me ei tee seda - ei, ei. Tõepoolest, meie kotis on nö. veebihaagid - nende abiga ei tee me päringuid konkreetsele aadressile, vaid saadame ainult oma päringu vastusena meile mis tahes päringule. See tähendab, nagu Odessas - me vastame küsimusele küsimusega. Sellepärast Telegrami API ei ilmu meie koodis.

Vastutusest loobumineKõigi selles artiklis mainitud riiklike organisatsioonide nimed on väljamõeldud ja võimalikud kokkulangevused tegelike organisatsioonide nimedega on juhuslikud.

Niisiis, me teeme roboti, mis varustab meid nutikate mõtetega. Täpselt nagu pildil:

Telegrami roboti ehitamine Yandex.Cloudis

Saate seda proovida - siin on nimi: @SmartThoughtsBot. Pange tähele nuppu "Alice'i oskused"? Seda seetõttu, et bot on omanimelise "kaaslane". Alice'i oskused, st. see täidab samu funktsioone nagu Alice'i oskused ja võib-olla et nad saavad üksteist reklaamides rahumeelselt koos eksisteerida. Sellest, kuidas luua Targa mõtlemise oskus artiklis kirjeldatud Alice saab oskuse. Nüüd (pärast mõningate muudatuste tegemist pärast ülaltoodud artikli avaldamist) nutitelefonis see oskus näeb välja umbes selline:

Telegrami roboti ehitamine Yandex.Cloudis

Boti loomine

Soovin, et see õpetus oleks kasulik kõigile, sh. ja algajad "botiehitajad". Seetõttu kirjeldan selles jaotises üksikasjalikult, kuidas üldiselt luua Telegramm'e robotid. Need, kes seda teavet ei vaja, jätkake järgmiste jaotistega.

Avage rakendus Telegaram, kutsume kõigi robotite isaks (neil on kõik nagu inimestel) - @BotFather - ja alustuseks anname talle käsu / abi, et värskendada meie mälu selle kohta, mida saame teha. Nüüd oleme meeskonnast huvitatud / newbot.

Telegrami roboti ehitamine Yandex.Cloudis

Kuna siin kirjeldatud bot on juba loodud, siis demonstreerimise eesmärgil loon lühikeseks ajaks teise boti (siis kustutan selle). Ma helistan talle DemoHabrBot. Nimed (kasutajanimi) kõik telegrammirobotid peavad lõppema sõnaga bot, näiteks: MyCoolBot või minu_lahe_bot See on mõeldud robotitele. Kuid kõigepealt andke robotile nimi (nimi) on inimestele. Nimi võib olla mis tahes keeles, sisaldada tühikuid, ei pea lõppema sõnaga bot, ja see ei pea isegi olema ainulaadne. Selles näites kutsusin seda robotit Demo Habr.

Telegrami roboti ehitamine Yandex.Cloudis

Nüüd vali robotile nimi (kasutajanimi, robotite jaoks mõeldud). Kutsume seda DemoHabrBot. Kõik, mis on seotud roboti nimega (nimi) pole tema nimega üldse seotud - kasutajanimi (või kehtib, aga täpselt vastupidi). Pärast kordumatu boti nime edukat loomist peame kopeerima ja salvestama (kõige kindlamalt!) ekraanipildil punase noolega kuvatud märgi. Tema abiga paigaldame hiljem väljuva Telegramm'veebihaak meie poole Yandexi funktsioon.

Telegrami roboti ehitamine Yandex.Cloudis

Ja nüüd anname kõigi robotite isale käsu: /mybotsja see näitab meile kõigi loodud robotite loendit. Jätame värskelt küpsetatud bot praegu rahule Demo Habr (see loodi selleks, et näidata, kuidas roboteid luua, kuid täna kasutame seda muudel demonstratsioonieesmärkidel) ja kaaluge robotit Targad mõtted (@SmartThoughtsBot). Klõpsake robotite loendis selle nimega nuppu.

Telegrami roboti ehitamine Yandex.Cloudis

Siin saame oma roboti seadistada. Nupu vajutamine Redigeerimine ... liigume edasi ühe või teise variandi redigeerimise juurde. Näiteks nupule klõpsates Redigeeri nime saame roboti nime muuta, ütleme selle asemel Targad mõtted, kirjuta hullud ideed. Botpic - see on roboti avatar, peab olema vähemalt 150 150 x px. Kirjeldus on lühike kirjeldus, mida kasutaja näeb roboti esmakordsel käivitamisel vastusena küsimusele: Mida see bot teha saab? MEIST - veelgi lühem kirjeldus, mis edastatakse koos lingiga robotile (https://t.me/SmartThoughtsBot) või selle kohta teavet vaadates.

Telegrami roboti ehitamine Yandex.Cloudis

Peame lihtsalt käsud seadistama. Selleks vajutage nuppu Redigeeri käske. Kasutajatavade standardiseerimiseks Telegramm soovitab alati kasutada kahte käsku: /start и / abi, ja kui bot vajab sätteid - lisakäsk /settings. Meie bot on lihtne nagu pall, nii et see ei vaja veel seadistusi. Kirjutame kaks esimest käsku, mida seejärel koodis töötleme. Kui nüüd kasutaja sisestab sisestusväljale kaldkriipsu (kaldkriips: /), ilmub tema kiireks valikuks käskude loend. Kõik on nagu pildil: vasakul - määrame käsud läbi bot-isa; paremal on need käsud juba meie roboti kasutajatele saadaval.

Telegrami roboti ehitamine Yandex.Cloudis

Yandexi funktsioon

Nüüd, kui meie bot on loodud, lähme edasi Yandex.Cloudet luua funktsioon, mis käivitab meie roboti koodi. Kui te pole koos töötanud Yandex.Cloud loe materjali Alice Bitrixi maal, ja siis - Yandexi funktsioonid saadavad kirju. Olen peaaegu kindel, et neist kahest suhteliselt väikesest artiklist piisab, et teil oleks sellest teemast elementaarne arusaam.

Nii et konsoolis Yandex.Clouds valige vasakpoolses navigeerimismenüüs üksus Pilvefunktsioonidja seejärel vajutage nuppu Looge funktsioon. Anname sellele nime ja enda jaoks - lühikirjelduse.

Telegrami roboti ehitamine Yandex.Cloudis

Pärast nupu vajutamist looma ja mõne sekundi pärast ilmub uus funktsioon kõigi funktsioonide loendisse. Klõpsake tema nimel - see viib meid lehele Vaadata meie funktsioon. Siin peate lubamaOn) lüliti avalik funktsioonteha see väliselt kättesaadavaks (ees Yandex.Clouds) ja väljade väärtust Link helistamiseks и ID - hoidke seda sügavas saladuses kõigi eest, välja arvatud teie ise ja Telegram, et erinevad petturid ei saaks teie funktsiooni kutsuda.

Telegrami roboti ehitamine Yandex.Cloudis

Nüüd kasutage vasakpoolset menüüd Toimetaja funktsioonid. Jätame hetkeks kõrvale oma Targad mõtted, ja looge minimaalne mallifunktsioon, et kontrollida meie roboti jõudlust ... Kuid selles kontekstis on see funktsioon meie robot ... Lühidalt, nüüd ja siin teeme kõige lihtsama roboti, mis "peegeldab" ( st saata tagasi ) kasutajasoovid. Seda malli saab alati kasutada uute telegrammirobotite loomisel, et tagada suhtlus Telegramom töötab hästi. Klõpsake Loo fail, kutsu seda index.jsja võrgus Koodiredaktor kleepige sellesse faili järgmine kood:

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
  };
};

Yandex.Cloudi konsoolis peaks see välja nägema umbes selline:

Telegrami roboti ehitamine Yandex.Cloudis

Allpool näitame sisenemispunkt - index.botKus indeks see on failinimi (index.js) ja bot - funktsiooni nimi (module.exports.bot). Jätke kõik muud väljad "nagu on" ja klõpsake paremas ülanurgas nuppu Loo versioon. Mõne sekundi pärast luuakse funktsiooni see versioon. Varsti pärast testimist veebihaak, loome uue versiooni − Targad mõtted.

Telegrami roboti ehitamine Yandex.Cloudis

Objektide hoiustamine

Nüüd, kui oleme seadistanud Yandexi funktsioonlähme, kui oleme konsoolis Yandex.Clouds, luua nn. ämber (kopp, st. venekeelne ämber, mitte mingil juhul kimp) pildifailide salvestamiseks, mida kasutatakse meie robotis Targad mõtted. Valige vasakpoolsest navigeerimismenüüst Objekti salvestamine, vajuta nuppu Loo ämber, andke sellele näiteks nimi, img-ämberja mis kõige tähtsam, Lugemisjuurdepääs objektidele tehke see avalikuks – muidu Telegram meie pilte ei näe. Kõik muud väljad jäetakse muutmata. Vajutame nuppu Loo ämber.

Telegrami roboti ehitamine Yandex.Cloudis

Pärast seda võib kõigi ämbrite loend välja näha umbes selline (kui see on teie ainus ämber):

Telegrami roboti ehitamine Yandex.Cloudis

Nüüd teen ettepaneku klõpsata ämbri nimel ja luua selle sees kaust, et korraldada piltide salvestamine erinevate rakenduste jaoks. Näiteks telegrammi roboti jaoks Targad mõtted lõin kausta nimega tg-bot-smart-thoughts (Ei midagi, ma saan sellest šifrist aru). Loo ka üks.

Telegrami roboti ehitamine Yandex.Cloudis

Nüüd saate klõpsata kausta nimel, minna sellesse ja failid üles laadida:

Telegrami roboti ehitamine Yandex.Cloudis

Ja klõpsates faili nimel - hankige see URL kasutamiseks meie robotis ja üldiselt - kõikjal (kuid ärge avaldage seda URL asjatult, kuna liiklus alates objektide hoidmine laetud).

Telegrami roboti ehitamine Yandex.Cloudis

Siin on tegelikult kõik objektide hoidmine. Nüüd teate, mida teha, kui näete viipa failide üleslaadimiseks.

Veebihaak

Nüüd paigaldame veebihaak — st. kui robot saab serverilt värskenduse (näiteks sõnumi kasutajalt). Telegramm meie sisse Yandexi funktsioon päring saadetaksetaotleda) andmetega. Siin on string, mille saate lihtsalt brauseri aadressiväljale kleepida ja seejärel lehte värskendada (seda tuleb teha ainult üks kord): https://api.telegram.org/bot{bot_token}/setWebHook?url={webhook_url}
Lihtsalt asenda {bot_token} tokenile, mille saime isabotilt oma boti loomisel ja {webhook_url} - peal URL meie Yandexi funktsioonid. Oota hetk! Aga RossKomTsensuur keelab Vene Föderatsiooni teenusepakkujatel aadressi edastada https://api.telegram.org. Jah see on õige. Aga sa võid midagi välja mõelda. Võid ju näiteks Ukrainas, Iisraelis või Kanadas vanaemalt selle kohta küsida - seal pole “Vene tsensuuri” ja jumal teab, kuidas inimesed ilma selleta elavad. Selle tulemusena peaks päring-vastus veebihaagi installimisel välja nägema järgmine:

Telegrami roboti ehitamine Yandex.Cloudis

Testimine. Peaks olema peegeldatud.

Telegrami roboti ehitamine Yandex.Cloudis

See on tõsi. Meie õnnitlused – nüüd Yandexi funktsioon muutunud Telegramm- bot!

Targad mõtted

Ja nüüd teeme nutikaid mõtteid. Kood on avatud ja asub GitHub. See on päris hästi kommenteeritud ja see on vaid sada rida pikk. Lugege seda nagu ooperidiiva libretot!

Telegrami roboti ehitamine Yandex.Cloudis

Kloonige projekt ja installige sõltuvused:

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

Tehke failis vajalikud muudatused index.js (valikuline; te ei saa midagi muuta). Loo tõmblukk-arhiiv, failiga index.js ja kaust sõlme_moodulid sees näiteks nn smart.zip.

Telegrami roboti ehitamine Yandex.Cloudis

Nüüd minge konsoolis meie juurde Yandexi funktsioonid, valige vahekaart ZIP-arhiiv, vajuta nuppu Valige failja laadige alla meie arhiiv smart.zip. Lõpuks klõpsake paremas ülanurgas nuppu Loo versioon.

Telegrami roboti ehitamine Yandex.Cloudis

Mõne sekundi pärast, kui funktsiooni värskendatakse, testime oma robotit uuesti. Nüüd ta enam ei “peegelda”, vaid edastab tarku mõtteid!

Telegrami roboti ehitamine Yandex.Cloudis

See on tänaseks kõik. Järgmised artiklid. Kui olete huvitatud selle lugemisest, tellige uute artiklite teatised. Tellida saab siit või Telegramm- kanal IT-õpetus ZakharVõi puperdama @mikezaharov.

Viited

Kood GitHubis
Yandexi pilvefunktsioonid
Yandexi objektide salvestusruum
Botid: sissejuhatus arendajatele
Telegram Boti API

Annetused

Telegrami roboti ehitamine Yandex.Cloudis

Allikas: www.habr.com

Lisa kommentaar