„Telegram“ roboto kūrimas „Yandex.Cloud“.

„Telegram“ roboto kūrimas „Yandex.Cloud“.

Šiandien iš laužo medžiagų surinksime Yandex.Cloud Telegrafo botas naudojant „Yandex“ debesies funkcijos (Arba Yandex funkcijos - trumpai) ir „Yandex“ objektų saugykla (Arba Objektų saugykla - aiškumo dėlei). Kodas bus įjungtas Node.js. Tačiau yra viena pikantiška aplinkybė - tam tikra organizacija, vadinama, tarkime, RossKomTsenzur (cenzūrą draudžia Rusijos Federacijos Konstitucijos 29 straipsnis), neleidžia Rusijos interneto tiekėjams perduoti užklausų Telegram API pagal adresą: https://api.telegram.org/. Na, mes ne - ne, ne. Juk mūsų krepšyje yra vadinamieji. internetiniai kabliukai — su jų pagalba mes neteikiame užklausų konkrečiu adresu, o tiesiog išsiunčiame savo užklausą kaip atsakymą į bet kurį mums skirtą užklausą. Tai yra, kaip Odesoje, į klausimą atsakome klausimu. Štai kodėl Telegram API nebus rodomas mūsų kode.

Atsakomybės apribojimasVisų šiame straipsnyje minimų vyriausybinių organizacijų pavadinimai yra fiktyvūs, o galimi atitikmenys su realių organizacijų pavadinimais yra atsitiktiniai.

Taigi, mes sukursime botą, kuris suteiks mums protingų minčių. Lygiai kaip nuotraukoje:

„Telegram“ roboto kūrimas „Yandex.Cloud“.

Galite tai išbandyti praktiškai – štai pavadinimas: @SmartThoughtsBot. Pastebėjo mygtuką "Alisos įgūdžiai"? Taip yra todėl, kad robotas yra savotiškas to paties pavadinimo roboto „kompanionas“. Alisos įgūdžiai, t.y. jis atlieka tas pačias funkcijas kaip Alisos įgūdžiai ir gali būti, kad reklamuodami vienas kitą galės taikiai sugyventi. Apie tai, kaip kurti įgūdžiai Protingos mintys aprašyta straipsnyje Alisa įgyja įgūdžių. Dabar (atlikus keletą pakeitimų po minėto straipsnio paskelbimo) išmaniajame telefone tai įgūdžių atrodys maždaug taip:

„Telegram“ roboto kūrimas „Yandex.Cloud“.

Boto kūrimas

Norėčiau, kad ši pamoka būtų naudinga visiems, įskaitant. ir pradedantiesiems robotų kūrėjams. Todėl šiame skyriuje aš išsamiai aprašysiu, kaip apskritai kurti Telegram'e botai. Tiems, kuriems šios informacijos nereikia, pereikite prie tolesnių skyrių.

Atidarykite programą Telegaramas, pavadinkime visų botų tėvu (jie turi viską kaip žmonės) - @Botfather - ir pirmiausia duosime jam komandą /help, kad atnaujintume atmintį, ką galime padaryti. Dabar mus domina komanda / newbot.

„Telegram“ roboto kūrimas „Yandex.Cloud“.

Kadangi čia aprašytas botas jau sukurtas, demonstravimo tikslais trumpam sukursiu kitą botą (o tada jį ištrinsiu). Aš jam paskambinsiu DemoHabrBot. Vardai (Nick) visų telegramų robotų turi baigtis žodžiu snukis, pavyzdžiui: MyCoolBot arba my_cool_bot - tai skirta robotams. Bet pirmiausia suteikiame botui pavadinimą (pavadinimas) – ir tai skirta žmonėms. Pavadinimas gali būti bet kokia kalba, jame gali būti tarpų ir jis neturi baigtis žodžiu snukis, ir net nebūtinai turi būti unikalus. Šiame pavyzdyje aš pavadinau šį robotą Demo Habr.

„Telegram“ roboto kūrimas „Yandex.Cloud“.

Dabar pasirinkite roboto pavadinimą (Nick, skirtas robotams). Paskambinkime jam DemoHabrBot. Viskas, kas susiję su boto pavadinimu (pavadinimas) visiškai nesusijęs su jo vardu - Nick (arba taikoma, bet visiškai priešingai). Sėkmingai sukūrę unikalų roboto pavadinimą, turime nukopijuoti ir išsaugoti (su griežčiausiu pasitikėjimu!) ekrano kopijoje su raudona rodykle rodomą žetoną. Su jo pagalba vėliau nustatysime kilmę Telegram„Webhook mūsų Yandex funkcija.

„Telegram“ roboto kūrimas „Yandex.Cloud“.

Dabar duokime komandą visų robotų tėvui: /mybots, ir bus rodomas visų mūsų sukurtų robotų sąrašas. Ką tik iškeptą botą kol kas palikime ramybėje Demo Habr (jis buvo sukurtas norint parodyti, kaip kurti botus, bet šiandien jį naudosime ir kitiems demonstravimo tikslams), o pažiūrėkime į botą Protingos mintys (@SmartThoughtsBot). Botų sąraše spustelėkite mygtuką su jo pavadinimu.

„Telegram“ roboto kūrimas „Yandex.Cloud“.

Čia galime sukonfigūruoti savo robotą. Paspaudus mygtuką Redaguoti… Pereisime prie vieno ar kito varianto redagavimo. Pavyzdžiui, paspaudus mygtuką Redaguoti vardą galime pakeisti roboto pavadinimą, tarkime Protingos mintys, parašyk Beprotiškos idėjos. Botpic - tai yra roboto avataras, turi būti bent jau 150 150 x px. Aprašymas — tai trumpas aprašymas, kurį vartotojas mato pirmą kartą paleisdamas robotą kaip atsakymą į klausimą: Ką gali padaryti šis robotas? Apie mus — dar trumpesnis aprašymas, kuris perduodamas su nuoroda į robotą (https://t.me/SmartThoughtsBot) arba peržiūrėdami informaciją apie tai.

„Telegram“ roboto kūrimas „Yandex.Cloud“.

Viskas, ką turime padaryti, tai nustatyti komandas. Norėdami tai padaryti, paspauskite mygtuką Redaguoti komandas. Standartizuoti vartotojo praktiką Telegram rekomenduoja visada naudoti dvi komandas: / pradžia и / pagalba, o jei robotui reikia nustatymų, naudokite papildomą komandą /settings. Mūsų robotas yra paprastas kaip kamuolys, todėl jam dar nereikia jokių nustatymų. Rašome pirmas dvi komandas, kurias vėliau apdorosime kodu. Dabar, jei vartotojas įvesties lauke įveda pasvirąjį brūkšnį (pasvirojo brūkšnio ženklas: /), pasirodys komandų sąrašas, skirtas greitai pasirinkti. Viskas kaip paveikslėlyje: kairėje - komandas diegiame per tėvo botą; dešinėje šios komandos jau pasiekiamos mūsų roboto naudotojams.

„Telegram“ roboto kūrimas „Yandex.Cloud“.

Yandex funkcija

Dabar, kai mūsų robotas buvo sukurtas, pereikime prie Yandex.CloudNorėdami sukurti funkciją, kuri vykdys mūsų roboto kodą. Jei nedirbote su Yandex.Cloud perskaityti medžiagą Alisa Bitrix žemėje, ir tada - „Yandex“ funkcijos siunčia laiškus. Esu tikras, kad šių dviejų gana trumpų straipsnių pakaks, kad turėtumėte pagrindinį šios temos supratimą.

Taigi konsolėje Yandex.Cloud kairiajame naršymo meniu pasirinkite elementą Debesų funkcijos, tada paspauskite mygtuką Sukurkite funkciją. Suteikiame sau pavadinimą ir trumpą aprašymą.

„Telegram“ roboto kūrimas „Yandex.Cloud“.

Paspaudus mygtuką kurti ir po poros sekundžių nauja funkcija atsiras visų funkcijų sąraše. Spustelėkite jos vardą – tai nuves mus į puslapį Peržiūrėti mūsų funkcija. Čia reikia įjungti (On) jungiklis viešoji funkcijakad ji taptų prieinama iš išorės (už Yandex.Cloud) pasaulio ir laukų prasmę Nuoroda į skambutį и ID — laikykite ją giliai paslaptyje nuo visų, išskyrus save ir Telegramą, kad jūsų funkcijos negalėtų iškviesti įvairūs sukčiai.

„Telegram“ roboto kūrimas „Yandex.Cloud“.

Dabar, naudodamiesi kairiuoju meniu, eikite į Redaktorius funkcijas. Trumpam atidėkime į šalį savo Protingos mintys, ir sukurti minimalią šablono funkciją mūsų boto funkcionalumui patikrinti... Tačiau šiame kontekste ši funkcija yra mūsų botas... Trumpai tariant, dabar ir čia pat padarysime paprastą robotą, kuris „veidrodis“ ( y. siųsti atgal ) vartotojų užklausas. Šį šabloną visada galima naudoti kuriant naujus telegramų robotus, kad būtų užtikrintas ryšys su telegrama'ohm veikia gerai. Spustelėkite Sukurti failą, paskambinkime jam rodyklė.js, ir internete Kodo redaktorius įklijuokite šį kodą į šį 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ėje jis turėtų atrodyti maždaug taip:

„Telegram“ roboto kūrimas „Yandex.Cloud“.

Toliau mes nurodome Įejimas - index.botKur rodyklė tai failo pavadinimas (rodyklė.js), ir snukis - funkcijos pavadinimas (module.exports.bot). Palikite visus kitus laukus tokius, kokie yra, ir spustelėkite mygtuką viršutiniame dešiniajame kampe Sukurti versiją. Po kelių sekundžių bus sukurta ši funkcijos versija. Netrukus po bandymo webhook, sukursime naują versiją − Protingos mintys.

„Telegram“ roboto kūrimas „Yandex.Cloud“.

Objektų saugykla

Dabar, kai sukūrėme Yandex funkcija, eik, kol esame pulte Yandex.Cloud, sukurkime vadinamąjį kibiras (kibiras, t.y. kibiras rusų kalba, visai ne puokštė) vaizdo failams, kurie bus naudojami mūsų robote, saugoti Protingos mintys. Kairiajame naršymo meniu pasirinkite elementą Objektų saugykla, Paspausk mygtuką Sukurkite kibirą, sugalvokite jam pavadinimą, pavyzdžiui, img-kibirasir, svarbiausia, Skaitymo prieiga prie objektų Paviešiname – kitaip Telegram nematys mūsų nuotraukų. Visus kitus laukus paliekame nepakeistus. Paspausk mygtuką Sukurkite kibirą.

„Telegram“ roboto kūrimas „Yandex.Cloud“.

Po to visų segmentų sąrašas gali atrodyti maždaug taip (jei tai jūsų vienintelis segmentas):

„Telegram“ roboto kūrimas „Yandex.Cloud“.

Dabar siūlau spustelėti kibiro pavadinimą ir sukurti jame aplanką, kad būtų galima sutvarkyti įvairių programų vaizdų saugojimą. Pavyzdžiui, telegramų robotui Protingos mintys Sukūriau aplanką pavadinimu tg-bot-smart-thoughts (nieko, aš suprasiu šį kodą). Sukurkite ir tokį.

„Telegram“ roboto kūrimas „Yandex.Cloud“.

Dabar galite spustelėti aplanko pavadinimą, eiti į jį ir įkelti failus:

„Telegram“ roboto kūrimas „Yandex.Cloud“.

Ir paspaudę ant failo pavadinimo – gaukite URL adresas naudoti mūsų robote ir apskritai bet kur (bet neskelbkite to URL adresas nereikalingas, nes eismas iš Objektų saugykla apmokestintas).

„Telegram“ roboto kūrimas „Yandex.Cloud“.

Tai iš esmės viskas Objektų saugykla. Dabar žinosite, ką daryti, kai pamatysite raginimą ten įkelti failus.

Webhook

Dabar mes įdiegsime webhook - t.y. kai robotas gauna atnaujinimą (pavyzdžiui, pranešimą iš vartotojo) iš serverio Telegram mūsų Yandex funkcija bus išsiųstas prašymas (prašyti) su duomenimis. Čia yra eilutė, kurią galite tiesiog įklijuoti į naršyklės adreso lauką ir atnaujinti puslapį (tai reikia padaryti tik vieną kartą): https://api.telegram.org/bot{bot_token}/setWebHook?url={webhook_url}
Mes tiesiog jį pakeisime {bot_token} į žetoną, kurį gavome iš tėvo roboto kurdami savo robotą, ir {webhook_url} - įjungta URL adresas mūsų Yandex funkcijos. Palauk minutę! Bet RossKomTsenzur draudžia paslaugų teikėjams Rusijos Federacijoje aptarnauti adresą https://api.telegram.org. Taip, teisingai. Bet ką nors sugalvok. Galų gale, pavyzdžiui, galite paklausti savo močiutės apie tai Ukrainoje, Izraelyje ar Kanadoje - ten nėra „roskomcenzūros“, o Dievas tik žino, kaip žmonės gyvena be jos. Dėl to užklausa-atsakymas diegiant webhook turėtų atrodyti taip:

„Telegram“ roboto kūrimas „Yandex.Cloud“.

Mes testuojame. Jis turėtų „veidrodis“.

„Telegram“ roboto kūrimas „Yandex.Cloud“.

Tai yra tiesa. Mūsų sveikinimai – dabar Yandex funkcija tapo Telegram- Botas!

Protingos mintys

Dabar atlikime protingas mintis. Kodas atidarytas ir guli GitHub. Tai gana gerai pakomentuota ir yra tik šimto eilučių ilgio. Skaitykite kaip operos divos libretą!

„Telegram“ roboto kūrimas „Yandex.Cloud“.

Klonuokite projektą ir įdiekite priklausomybes:

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

Atlikite reikiamus failo pakeitimus rodyklė.js (neprivaloma; nieko keisti nereikia). Sukurti užtrauktukas-archyvas, su byla rodyklė.js ir aplankas mazgo_moduliai viduje, pavyzdžiui, po pavadinimu smart.zip.

„Telegram“ roboto kūrimas „Yandex.Cloud“.

Dabar eikite į konsolę pas mus Yandex funkcijos, pasirinkite skirtuką ZIP archyvas, Paspausk mygtuką Pasirinkite failą, ir atsisiųskite mūsų archyvą smart.zip. Galiausiai viršutiniame dešiniajame kampe spustelėkite mygtuką Sukurti versiją.

„Telegram“ roboto kūrimas „Yandex.Cloud“.

Po kelių sekundžių, kai funkcija bus atnaujinta, mes dar kartą išbandysime savo robotą. Dabar jis nebe „veidrodiuoja“, o pateikia protingas mintis!

„Telegram“ roboto kūrimas „Yandex.Cloud“.

Tai viskas siandienai. Toliau straipsniai. Jei jus domina tai skaityti, užsiprenumeruokite pranešimus apie naujus straipsnius. Prenumeruoti galite čia arba el Telegram- kanalas IT pamoka ZakharArba Twitter @mikezaharovas.

Nuorodos

Kodas „GitHub“.
„Yandex“ debesies funkcijos
„Yandex“ objektų saugykla
Botai: įvadas kūrėjams
„Telegram Bot“ API

Aukos

„Telegram“ roboto kūrimas „Yandex.Cloud“.

Šaltinis: www.habr.com

Добавить комментарий