Telegram-botin rakentaminen Yandex.Cloudissa

Telegram-botin rakentaminen Yandex.Cloudissa

Tänään keräämme improvisoiduista materiaaleista Yandex.Cloud Puhelinohjelma botti kanssa Yandex Cloud Functions (tai Yandex-toiminnot lyhyyden vuoksi) ja Yandex-objektien tallennustila (tai Objektien tallennus - Selvyydeksi). Koodi tulee päälle Node.js. On kuitenkin yksi pikantinen seikka - tietty organisaatio nimeltä, sanotaanko RossKomsensuuri (sensuuri on kielletty Venäjän federaation perustuslain 29 §:ssä), ei salli Venäjän Internet-palveluntarjoajien siirtää pyyntöjä Tietoliikennesovellusliittymä osoitteeseen: https://api.telegram.org/. No, emme tee - ei, ei. Todellakin, laukussamme on ns. webhookit - Heidän avullaan emme tee pyyntöjä tiettyyn osoitteeseen, vaan vain lähetämme pyyntömme vastauksena meille pyyntöön. Eli kuten Odessassa - vastaamme kysymykseen kysymyksellä. Siksi Tietoliikennesovellusliittymä ei näy koodissamme.

VastuuvapauslausekeTässä artikkelissa mainittujen valtion järjestöjen nimet ovat kuvitteellisia, ja mahdolliset yhteensopivuus tosielämän organisaatioiden nimien kanssa ovat satunnaisia.

Joten teemme botin, joka toimittaa meille älykkäitä ajatuksia. Aivan kuten kuvassa:

Telegram-botin rakentaminen Yandex.Cloudissa

Voit kokeilla sitä käytännössä - tässä on nimi: @SmartThoughtsBot. Huomaa painike "Liisan taito"? Tämä johtuu siitä, että botti on eräänlainen "kumppani" samannimiselle Alicen taito, eli se suorittaa samat toiminnot kuin Alicen taito ja kenties että he voivat elää rauhassa rinnakkain mainostaen toisiaan. Tietoja luomisesta Älykkään ajattelun taito artikkelissa kuvattu Alice saa taidon. Nyt (joiden muutosten tekemisen jälkeen yllä olevan artikkelin julkaisemisen jälkeen) älypuhelimella tämä taito näyttää jotain tältä:

Telegram-botin rakentaminen Yandex.Cloudissa

Botin luominen

Haluaisin, että tästä opetusohjelmasta on hyötyä kaikille, mm. ja aloittelevat "bottien rakentajat". Siksi tässä osiossa kuvailen yksityiskohtaisesti kuinka luoda yleensä Telegrambotit. Niille, jotka eivät tarvitse näitä tietoja, siirry seuraaviin osiin.

Avaa sovellus Telegaram, kutsumme kaikkien robottien isäksi (heillä on kaikki kuin ihmisillä) - @BotFather - ja aluksi annamme hänelle / help -komennon virkistääksemme muistiamme siitä, mitä voimme tehdä. Nyt olemme kiinnostuneita joukkueesta / newbot.

Telegram-botin rakentaminen Yandex.Cloudissa

Koska tässä kuvattu botti on jo luotu, luon esittelytarkoituksessa toisen botin hetkeksi (sen jälkeen poistan sen). Soitan hänelle DemoHabrBot. Nimet (käyttäjätunnus) kaikkien sähkerobottien on päätyttävä sanaan bot, esimerkiksi: MyCoolBot tai my_cool_bot Tämä on boteille. Mutta ensin, anna botille nimi (nimi) on tarkoitettu ihmisille. Nimi voi olla millä tahansa kielellä, sisältää välilyöntejä, sen ei tarvitse päättyä sanaan bot, eikä sen tarvitse edes olla ainutlaatuinen. Tässä esimerkissä kutsuin tätä bottia Demo Habr.

Telegram-botin rakentaminen Yandex.Cloudissa

Valitse nyt nimi botille (käyttäjätunnus, boteille tarkoitettu). Kutsutaan sitä DemoHabrBot. Kaikki botin nimeen liittyvä (nimi) ei liity hänen nimeensä ollenkaan - käyttäjätunnus (tai pätee, mutta juuri päinvastoin). Kun olet luonut onnistuneesti ainutlaatuisen botin nimen, meidän on kopioitava ja tallennettava (tiukimmassa luottamuksessa!) kuvakaappauksessa näkyvä merkki punaisella nuolella. Sen avulla asennamme myöhemmin lähtevän Telegram'webhook meille Yandex-toiminto.

Telegram-botin rakentaminen Yandex.Cloudissa

Ja nyt annamme käskyn kaikkien botien isälle: /mybotsja se näyttää meille luettelon kaikista luomistamme roboteista. Jätetään vastaleivottu botti toistaiseksi rauhaan Demo Habr (se luotiin osoittamaan, miten botteja luodaan, mutta käytämme sitä tänään muihin esittelytarkoituksiin) ja harkitse bottia Älykkäitä ajatuksia (@SmartThoughtsBot). Napsauta painiketta, jonka nimi on bottiluettelossa.

Telegram-botin rakentaminen Yandex.Cloudissa

Täällä voimme asentaa bottimme. Napin painaminen Muokata… siirrymme yhden tai toisen vaihtoehdon muokkaamiseen. Esimerkiksi napsauttamalla painiketta Muokkaa nimeä voimme muuttaa botin nimen, sano sen sijaan Älykkäitä ajatuksia, kirjoita hulluja ideoita. Botpic - Tämä on botin avatar, täytyy olla vähintään 150 x 150 px. Kuvaus on lyhyt kuvaus, jonka käyttäjä näkee, kun botti käynnistetään ensimmäisen kerran, vastauksena kysymykseen: Mitä tämä botti voi tehdä? Meistä - vielä lyhyempi kuvaus, joka välitetään linkin kanssa bottiin (https://t.me/SmartThoughtsBot) tai kun katselet sitä koskevia tietoja.

Telegram-botin rakentaminen Yandex.Cloudissa

Meidän on vain määritettävä komennot. Voit tehdä tämän painamalla -painiketta Muokkaa komentoja. Standardoida käyttäjäkäytäntöjä Telegram suosittelee aina käyttämään kahta komentoa: /alkaa и /auta, ja jos botti tarvitsee asetuksia - ylimääräinen /settings-komento. Bottimme on yksinkertainen kuin pallo, joten se ei vielä vaadi asetuksia. Kirjoitamme kaksi ensimmäistä komentoa, jotka sitten käsittelemme koodissa. Nyt, jos käyttäjä kirjoittaa vinoviivan (vinoviiva: /) syöttökenttään, näkyviin tulee luettelo komennoista, joita hän voi valita nopeasti. Kaikki on kuten kuvassa: vasemmalla - asetamme komennot bot-isän kautta; oikealla, nämä komennot ovat jo bottimme käyttäjien saatavilla.

Telegram-botin rakentaminen Yandex.Cloudissa

Yandex-toiminto

Nyt kun bottimme on luotu, siirrytään Yandex.Cloudluodaksesi toiminnon, joka suorittaa bot-koodimme. Jos et ole työskennellyt Yandex.Cloud lue materiaali Liisa Bitrixin maassa, ja sitten - Yandex-toiminnot lähettävät sähköpostia. Olen melkein varma, että nämä kaksi suhteellisen pientä artikkelia riittävät, jotta sinulla on perusymmärrys aiheesta.

Siis konsolissa Yandex.Clouds valitse kohde vasemmanpuoleisesta navigointivalikosta Pilvitoiminnotja paina sitten -painiketta Luo funktio. Annamme sille nimen ja itsellemme - lyhyen kuvauksen.

Telegram-botin rakentaminen Yandex.Cloudissa

Kun olet painanut painiketta luoda ja muutaman sekunnin kuluttua uusi toiminto tulee näkyviin kaikkien toimintojen luetteloon. Napsauta hänen nimeään - tämä vie meidät sivulle Arvostelu meidän toimintomme. Tässä sinun on otettava käyttöönOn) vaihtaa julkinen tehtäväjotta se saataisiin ulkopuolelta (for Yandex.Clouds) ja kenttien arvo Linkki puheluun и tunnisteen - Pidä se syvässä salassa kaikilta paitsi itseltäsi ja Telegramilta, jotta erilaiset huijarit eivät voi kutsua toimintoasi.

Telegram-botin rakentaminen Yandex.Cloudissa

Siirry nyt käyttämällä vasenta valikkoa Toimittaja toimintoja. Otetaan hetkeksi sivuun omamme Älykkäitä ajatuksia, ja luo minimaalinen mallipohjatoiminto tarkistaaksesi bottimme suorituskyvyn... Tässä yhteydessä tämä toiminto on kuitenkin bottimme ... Lyhyesti sanottuna, nyt ja juuri tässä teemme yksinkertaisimman botin, joka "peilaa" ( eli lähetä takaisin ) käyttäjien pyyntöjä. Tätä mallia voidaan aina käyttää luotaessa uusia sähkebotteja varmistaaksesi yhteydenpidon Telegram'om toimii hyvin. Klikkaus Luo tiedosto, kutsu sitä index.js, ja verkossa Koodieditori liitä seuraava koodi tähän tiedostoon:

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.Cloud-konsolissa sen pitäisi näyttää suunnilleen tältä:

Telegram-botin rakentaminen Yandex.Cloudissa

Alla osoitamme sisääntulopiste - index.botMissä indeksi tämä on tiedostonimi (index.js) ja bot - funktion nimi (module.exports.bot). Jätä kaikki muut kentät "ennalleen" ja napsauta oikeassa yläkulmassa olevaa painiketta Luo versio. Muutaman sekunnin kuluttua tämä funktion versio luodaan. Pian testauksen jälkeen webhook, luomme uuden version − Älykkäitä ajatuksia.

Telegram-botin rakentaminen Yandex.Cloudissa

Objektien tallennus

Nyt kun olemme perustaneet Yandex-toimintomennään, kun ollaan konsolissa Yandex.Clouds, luo ns. ämpäri (ämpäri, eli ämpäri venäjäksi, ei suinkaan kimppu) kuvatiedostojen tallentamiseen, joita käytetään botissamme Älykkäitä ajatuksia. Valitse vasemmasta navigointivalikosta Objektien varastointi, painaa nappia Luo ämpäri, anna sille nimi, esim. img-ämpäri, ja kaikkein tärkeimpänä, Lukuoikeus objekteihin tee se julkiseksi - muuten Telegram ei näe kuviamme. Kaikki muut kentät jätetään ennalleen. Painamme nappia Luo ämpäri.

Telegram-botin rakentaminen Yandex.Cloudissa

Tämän jälkeen luettelo kaikista kauhoista saattaa näyttää suunnilleen tältä (jos tämä on ainoa ämpärisi):

Telegram-botin rakentaminen Yandex.Cloudissa

Nyt ehdotan, että napsautat ämpärin nimeä ja luot sen sisään kansion kuvien tallennuksen järjestämiseksi eri sovelluksiin. Esimerkiksi sähkebotille Älykkäitä ajatuksia loin kansion nimeltä tg-bot-smart-ajatuksia (Ei mitään, ymmärrän tämän salauksen). Luo myös sellainen.

Telegram-botin rakentaminen Yandex.Cloudissa

Nyt voit napsauttaa kansion nimeä, mennä siihen ja lähettää tiedostoja:

Telegram-botin rakentaminen Yandex.Cloudissa

Ja napsauta tiedoston nimeä - hanki se URL käytettäväksi robotissamme ja yleensä missä tahansa (mutta älä julkaise tätä URL tarpeettomasti, koska liikennettä esineen säilytys veloitettu).

Telegram-botin rakentaminen Yandex.Cloudissa

Tässä itse asiassa kaikki esineen säilytys. Nyt tiedät mitä tehdä, kun näet kehotteen ladata tiedostoja sinne.

Webhook

Nyt asennamme webhook – eli kun botti saa päivityksen (esimerkiksi viestin käyttäjältä) palvelimelta Telegram meidän sisään Yandex-toiminto pyyntö lähetetäänpyyntö) tietojen kanssa. Tässä on merkkijono, jonka voit liittää selaimen osoitekenttään ja päivittää sivun (tämä täytyy tehdä vain kerran): https://api.telegram.org/bot{bot_token}/setWebHook?url={webhook_url}
Vaihda vain {bot_token} tokeniin, jonka saimme isäbotilta bottiamme luodessaan, ja {webhook_url} - päällä URL meidän Yandex-toiminnot. Odota hetki! Mutta RossKomsensuuri kieltää Venäjän federaation palveluntarjoajia toimittamasta osoitetta https://api.telegram.org. Kyllä se on oikein. Mutta voit ajatella jotain. Loppujen lopuksi voit esimerkiksi kysyä isoäidiltäsi Ukrainassa, Israelissa tai Kanadassa - siellä ei ole "venäläisiä sensuuria", ja vain Jumala tietää, kuinka ihmiset elävät ilman sitä. Tämän seurauksena pyyntö-vastaus webhookia asennettaessa pitäisi näyttää tältä:

Telegram-botin rakentaminen Yandex.Cloudissa

Testaus. Pitäisi peilata.

Telegram-botin rakentaminen Yandex.Cloudissa

Tämä on totta. Onnittelumme - nyt Yandex-toiminto on tullut Telegram-botti!

Älykkäitä ajatuksia

Ja nyt teemme Smart Thoughtsia. Koodi on auki ja on päällä GitHub. Se on melko hyvin kommentoitu, ja se on vain sata riviä pitkä. Lue se kuin oopperadiivan libretto!

Telegram-botin rakentaminen Yandex.Cloudissa

Kloonaa projekti ja asenna riippuvuudet:

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

Tee tiedostoon tarvittavat muutokset index.js (valinnainen; et voi muuttaa mitään). Luoda vetoketju-arkisto, tiedoston kanssa index.js ja kansio solmu_moduulit sisällä esimerkiksi ns smart.zip.

Telegram-botin rakentaminen Yandex.Cloudissa

Mene nyt konsoliin meidän luoksemme Yandex-toiminnot, valitse välilehti ZIP-arkisto, painaa nappia Valitse tiedostoja lataa arkistomme smart.zip. Napsauta lopuksi oikeassa yläkulmassa olevaa painiketta Luo versio.

Telegram-botin rakentaminen Yandex.Cloudissa

Muutaman sekunnin kuluttua, kun toiminto on päivitetty, testaamme bottimme uudelleen. Nyt hän ei enää "peilaa", vaan välittää älykkäitä ajatuksia!

Telegram-botin rakentaminen Yandex.Cloudissa

Siinä kaikki tältä päivältä. Muut artikkelit seuraavat. Jos olet kiinnostunut lukemaan tämän, tilaa ilmoitukset uusista artikkeleista. Voit tilata tästä tai Telegram- kanava IT-opetusohjelma ZakharTai Twitter @mikezaharov.

viittaukset

Koodi GitHubissa
Yandex Cloud Functions
Yandex-objektien tallennustila
Botit: Johdatus kehittäjille
Sähke Bot -sovellusliittymä

Lahjoitukset

Telegram-botin rakentaminen Yandex.Cloudissa

Lähde: will.com

Lisää kommentti