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