Telegrammas robota izveide pakalpojumā Yandex.Cloud

Telegrammas robota izveide pakalpojumā Yandex.Cloud

Šodien mēs apkoposim no improvizētiem materiāliem Yandex.Cloud Telegram bot izmantojot Yandex mākoņa funkcijas (Vai Yandex funkcijas īsumam) un Yandex objektu krātuve (Vai Objektu glabāšana - skaidrības labad). Kods būs ieslēgts Node.js. Tomēr ir viens pikants apstāklis ​​- noteikta organizācija, ko sauc, teiksim, RossKomCenzūra (cenzūra ir aizliegta ar Krievijas Federācijas konstitūcijas 29. pantu), neļauj interneta pakalpojumu sniedzējiem Krievijā pārsūtīt pieprasījumus uz Telegram API uz adresi: https://api.telegram.org/. Nu, mēs to nedarīsim - nē, nē. Patiešām, mūsu somā ir t.s. tīmekļa aizķeres - ar viņu palīdzību mēs neveicam pieprasījumus uz konkrētu adresi, bet tikai nosūtām savu pieprasījumu kā atbildi uz jebkuru pieprasījumu mums. Tas ir, kā Odesā - mēs atbildam uz jautājumu ar jautājumu. Tāpēc Telegram API neparādīsies mūsu kodā.

AtrunaJebkuru šajā rakstā minēto valsts organizāciju nosaukumi ir fiktīvi, un iespējamās sakritības ar reālās dzīves organizāciju nosaukumiem ir nejaušas.

Tātad, mēs izveidosim robotu, kas mūs apgādās ar gudrām domām. Tieši kā attēlā:

Telegrammas robota izveide pakalpojumā Yandex.Cloud

Varat to izmēģināt darbībā - šeit ir nosaukums: @SmartThoughtsBot. Ievērojiet pogu "Alises prasme"? Tas ir tāpēc, ka robots ir sava veida "biedrs" tāda paša nosaukuma vārdam Alises prasme, t.i. tas veic tādas pašas funkcijas kā Alises prasme un, iespējams, ka viņi var mierīgi līdzāspastāvēt, reklamējot viens otru. Par to, kā izveidot Gudras domas prasme aprakstīts rakstā Alise iegūst prasmes. Tagad (pēc dažu izmaiņu veikšanas pēc iepriekš minētā raksta publicēšanas) viedtālrunī šis prasme izskatīsies apmēram šādi:

Telegrammas robota izveide pakalpojumā Yandex.Cloud

Botu izveide

Gribētos, lai šī pamācība būtu noderīga ikvienam, t.sk. un iesācēju "botu būvētāji". Tāpēc šajā sadaļā es detalizēti aprakstīšu, kā kopumā izveidot Telegramroboti. Tiem, kam šī informācija nav nepieciešama, pārejiet pie nākamajām sadaļām.

Atveriet lietojumprogrammu Telegaram, mēs saucam par visu robotu tēvu (viņiem viss ir kā cilvēkiem) - @BotFather - un sākumā mēs viņam dosim komandu / palīdzēt, lai atsvaidzinātu mūsu atmiņu par to, ko mēs varam darīt. Tagad mūs interesē komanda / newbot.

Telegrammas robota izveide pakalpojumā Yandex.Cloud

Tā kā šeit aprakstītais bots jau ir izveidots, demonstrācijas nolūkos uz īsu brīdi izveidošu vēl vienu botu (tad izdzēsīšu). Es viņam piezvanīšu DemoHabrBot. Vārdi (lietotājvārds) visiem telegrammu robotiem jābeidzas ar vārdu cērme, piemēram: MyCoolBot vai my_cool_bot Tas ir paredzēts robotiem. Bet vispirms dodiet robotam nosaukumu (nosaukums) ir paredzēts cilvēkiem. Nosaukums var būt jebkurā valodā, satur atstarpes, tam nav jābeidzas ar vārdu cērme, un tai pat nav jābūt unikālam. Šajā piemērā es saucu šo robotprogrammu Demo Habr.

Telegrammas robota izveide pakalpojumā Yandex.Cloud

Tagad izvēlieties robota nosaukumu (lietotājvārds, robotiem paredzētais). Sauksim to DemoHabrBot. Viss, kas saistīts ar robota nosaukumu (nosaukums) vispār nav saistīts ar viņa vārdu - lietotājvārds (vai attiecas, bet tieši otrādi). Pēc veiksmīgas unikāla robota nosaukuma izveides mums ir jākopē un jāsaglabā (stingrākajā pārliecībā!) ekrānuzņēmumā redzamais marķieris ar sarkanu bultiņu. Ar tās palīdzību mēs vēlāk uzstādīsim izejošo Telegram'tīmekļa aizķere mūsu Yandex funkcija.

Telegrammas robota izveide pakalpojumā Yandex.Cloud

Un tagad mēs dosim komandu visu botu tēvam: /mybotsun tas parādīs visu mūsu izveidoto robotprogrammatūru sarakstu. Pagaidām atstāsim tikko izcepto botu mierā Demo Habr (tas tika izveidots, lai parādītu, kā izveidot robotus, bet mēs to šodien izmantosim citiem demonstrācijas mērķiem), un apsveriet robotu Gudras domas (@SmartThoughtsBot). Botu sarakstā noklikšķiniet uz pogas ar tās nosaukumu.

Telegrammas robota izveide pakalpojumā Yandex.Cloud

Šeit mēs varam iestatīt savu robotprogrammatūru. Nospiežot pogu Rediģēt ... mēs pāriesim pie vienas vai otras opcijas rediģēšanas. Piemēram, noklikšķinot uz pogas Rediģēt vārdu mēs varam mainīt robota nosaukumu, teiksim tā vietā Gudras domas, rakstiet trakas idejas. Botpic - tas ir robota iemiesojums, tam jābūt vismaz 150 x 150 pikseļi. Apraksts ir īss apraksts, ko lietotājs redz, kad robots tiek palaists pirmo reizi, kā atbildi uz jautājumu: Ko šis robots var darīt? Par Mums - vēl īsāks apraksts, kas tiek pārsūtīts ar saiti uz robotu (https://t.me/SmartThoughtsBot) vai skatot informāciju par to.

Telegrammas robota izveide pakalpojumā Yandex.Cloud

Mums vienkārši jāiestata komandas. Lai to izdarītu, nospiediet pogu Rediģēt komandas. Standartizēt lietotāju praksi Telegram iesaka vienmēr izmantot divas komandas: /sākt и / palīdzība, un, ja robotam ir nepieciešami iestatījumi, papildu komanda /settings. Mūsu robots ir tikpat vienkāršs kā bumbiņa, tāpēc tam vēl nav nepieciešami nekādi iestatījumi. Mēs rakstām pirmās divas komandas, kuras pēc tam apstrādāsim kodā. Tagad, ja lietotājs ievades laukā ievada slīpsvītru (slīpsvītru: /), tiks parādīts komandu saraksts viņu ātrai atlasei. Viss ir kā attēlā: pa kreisi - mēs iestatām komandas caur bot-tēvu; labajā pusē šīs komandas jau ir pieejamas lietotājiem mūsu robotprogrammā.

Telegrammas robota izveide pakalpojumā Yandex.Cloud

Yandex funkcija

Tagad, kad mūsu robots ir izveidots, pāriesim pie Yandex.Cloudlai izveidotu funkciju, kas izpildīs mūsu robota kodu. Ja neesat strādājis ar Yandex.Cloud izlasi materiālu Alise Bitriksas zemē, un tad - Yandex funkcijas sūta pastu. Esmu gandrīz pārliecināts, ka ar šiem diviem salīdzinoši mazajiem rakstiem pietiks, lai jūs iegūtu elementāru izpratni par šo tēmu.

Tātad konsolē Yandex.Mākoņi kreisajā navigācijas izvēlnē atlasiet vienumu Mākoņu funkcijas, un pēc tam nospiediet pogu Izveidojiet funkciju. Mēs piešķiram tam nosaukumu, un sev - īsu aprakstu.

Telegrammas robota izveide pakalpojumā Yandex.Cloud

Pēc pogas nospiešanas izveidot un pēc pāris sekundēm jaunā funkcija parādīsies visu funkciju sarakstā. Noklikšķiniet uz viņas vārda - tas mūs aizvedīs uz lapu Pārskatiet mūsu funkcija. Šeit jums ir jāiespējoOn) slēdzis sabiedriskā funkcijalai padarītu to pieejamu no ārējās (par Yandex.Mākoņi) no pasaules un lauku vērtību Saite uz zvanu и ID - turiet to dziļā noslēpumā no visiem, izņemot sevi un Telegram, lai dažādi blēži nevarētu izsaukt jūsu funkciju.

Telegrammas robota izveide pakalpojumā Yandex.Cloud

Tagad, izmantojot kreiso izvēlni, dodieties uz Redaktors funkcijas. Uz brīdi noliksim malā mūsu Gudras domas, un izveidojiet minimālu veidnes funkciju, lai pārbaudītu mūsu robota veiktspēju ... Tomēr šajā kontekstā šī funkcija ir mūsu robots ... Īsāk sakot, tagad un tieši šeit mēs izveidosim vienkāršāko robotu, kas "atspoguļos" ( i., nosūtīt atpakaļ ) lietotāju pieprasījumus. Šo veidni vienmēr var izmantot, veidojot jaunus telegrammu robotus, lai nodrošinātu saziņu ar Telegrammaom darbojas labi. Klikšķis Izveidot failu, sauc to index.js, un tiešsaistē Koda redaktors ielīmējiet šo kodu šajā failā:

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 konsolē tam vajadzētu izskatīties apmēram šādi:

Telegrammas robota izveide pakalpojumā Yandex.Cloud

Zemāk mēs norādām Ieejas punkts Sākot no index.botKur indekss šis ir faila nosaukums (index.js) un cērme - funkcijas nosaukums (module.exports.bot). Atstājiet visus pārējos laukus "kā ir" un augšējā labajā stūrī noklikšķiniet uz pogas Izveidot versiju. Pēc dažām sekundēm tiks izveidota šī funkcijas versija. Drīz pēc pārbaudes tīmekļa aizķere, mēs izveidosim jaunu versiju − Gudras domas.

Telegrammas robota izveide pakalpojumā Yandex.Cloud

Objektu glabāšana

Tagad, kad esam iestatījuši Yandex funkcijaiesim, kamēr esam konsolē Yandex.Mākoņi, izveidot tā saukto. spainis (spainis, t.i. spainis krievu valodā, nekādā gadījumā nav pušķis) attēlu failu glabāšanai, kas tiks izmantoti mūsu robotā Gudras domas. Kreisajā navigācijas izvēlnē atlasiet Objektu glabāšana, nospiediet pogu Izveidojiet spaini, piešķiriet tai nosaukumu, piemēram, img-spainis, un, pats galvenais, Lasīšanas piekļuve objektiem padariet to publisku - pretējā gadījumā Telegram neredzēs mūsu attēlus. Visi pārējie lauki tiek atstāti nemainīti. Nospiežam pogu Izveidojiet spaini.

Telegrammas robota izveide pakalpojumā Yandex.Cloud

Pēc tam visu segmentu saraksts varētu izskatīties apmēram šādi (ja šis ir jūsu vienīgais segments):

Telegrammas robota izveide pakalpojumā Yandex.Cloud

Tagad es ierosinu noklikšķināt uz kausa nosaukuma un tajā izveidot mapi, lai sakārtotu attēlu glabāšanu dažādām lietojumprogrammām. Piemēram, telegrammas robotam Gudras domas es izveidoju mapi ar nosaukumu tg-bot-smart-thoughts (Nekas, es sapratīšu šo šifru). Izveidojiet arī tādu.

Telegrammas robota izveide pakalpojumā Yandex.Cloud

Tagad varat noklikšķināt uz mapes nosaukuma, ieiet tajā un augšupielādēt failus:

Telegrammas robota izveide pakalpojumā Yandex.Cloud

Un noklikšķinot uz faila nosaukuma - iegūstiet to URL izmantošanai mūsu robotprogrammā un vispār - jebkur (bet nepublicējiet to URL nevajadzīgi, jo satiksme no objektu uzglabāšana uzlādēts).

Telegrammas robota izveide pakalpojumā Yandex.Cloud

Lūk, patiesībā, tas arī viss objektu uzglabāšana. Tagad jūs zināt, ko darīt, kad redzat uzvedni augšupielādēt failus.

Web aizķere

Tagad mēs instalēsim tīmekļa aizķere — t.i. kad robots saņem atjauninājumu (piemēram, ziņojumu no lietotāja), no servera Telegram mūsu Yandex funkcija pieprasījums tiks nosūtītspieprasīt) ar datiem. Šeit ir virkne, kuru varat vienkārši ielīmēt pārlūkprogrammas adreses laukā un pēc tam atsvaidzināt lapu (tas ir jādara tikai vienu reizi): https://api.telegram.org/bot{bot_token}/setWebHook?url={webhook_url}
Vienkārši nomainiet {bot_token} uz marķieri, ko saņēmām no tēva robota, veidojot savu robotprogrammatūru, un {webhook_url} - ieslēgts URL mūsu Yandex funkcijas. Uzgaidi minūti! Bet RossKomCenzūra aizliedz pakalpojumu sniedzējiem Krievijas Federācijā sniegt adresi https://api.telegram.org. Jā, tieši tā. Bet jūs varat kaut ko izdomāt. Galu galā, jūs varat, piemēram, pajautāt vecmāmiņai par to Ukrainā, Izraēlā vai Kanādā - tur nav "krievu cenzūras", un tikai Dievs zina, kā cilvēki bez tās dzīvo. Rezultātā pieprasījumam-atbildei, instalējot tīmekļa aizķeri, vajadzētu izskatīties šādi:

Telegrammas robota izveide pakalpojumā Yandex.Cloud

Testēšana. Jāatspoguļo.

Telegrammas robota izveide pakalpojumā Yandex.Cloud

Tā ir patiesība. Apsveicam - tagad Yandex funkcija ir kļuvusi Telegram- bot!

Gudras domas

Un tagad mēs veicam viedās domas. Kods ir atvērts un atrodas GitHub. Tas ir diezgan labi komentēts, un tas ir tikai simts rindiņas garš. Lasi kā operas dīvas libretu!

Telegrammas robota izveide pakalpojumā Yandex.Cloud

Klonējiet projektu un instalējiet atkarības:

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

Veiciet failā nepieciešamās izmaiņas index.js (pēc izvēles; jūs nevarat neko mainīt). Izveidot rāvējslēdzējs-arhīvs, ar failu index.js un mapi mezgla_moduļi iekšā, piemēram, sauc smart.zip.

Telegrammas robota izveide pakalpojumā Yandex.Cloud

Tagad dodieties konsolē uz mūsu Yandex funkcijas, atlasiet cilni ZIP arhīvs, nospiediet pogu Izvēlieties failuun lejupielādējiet mūsu arhīvu smart.zip. Visbeidzot, augšējā labajā stūrī noklikšķiniet uz pogas Izveidot versiju.

Telegrammas robota izveide pakalpojumā Yandex.Cloud

Pēc dažām sekundēm, kad funkcija tiks atjaunināta, mēs vēlreiz pārbaudīsim mūsu robotprogrammatūru. Tagad viņš vairs “neatspoguļo”, bet sniedz gudras domas!

Telegrammas robota izveide pakalpojumā Yandex.Cloud

Tas šodienai viss. Tālāk seko citi raksti. Ja jūs interesē lasīt šo, abonējiet paziņojumus par jauniem rakstiem. Abonēt var šeit vai Telegram- kanāls IT apmācība ZakharVai Twitter @mikezaharov.

atsauces

Kods vietnē GitHub
Yandex mākoņa funkcijas
Yandex objektu krātuve
Boti: ievads izstrādātājiem
Telegram Bot API

Ziedojumi

Telegrammas robota izveide pakalpojumā Yandex.Cloud

Avots: www.habr.com

Pievieno komentāru