„Yandex“ funkcijos siunčia laiškus

„Yandex“ funkcijos siunčia laiškus

Šiandien kursime vadinamąjį. Yandex funkcija (oficialus pavadinimas „Yandex“ debesies funkcijos), kuris susitarė su pašto tarnyba SendGrid išsiųs „muilą“ ramiai miegantiems vartotojams (juokauju – žinau, kad visi esame prieš šlamštą).

Taip pat esu tradicinių serverių priešininkas (bet be fanatizmo), taip pat vadinamųjų šalininkas. be serverio (be serverio) sprendimus, nes nemėgstu (ir nelabai moku) administruoti serverius, o tuo labiau mokėti už laiką, kai jie nėra įkeliami. Kitas dalykas – funkcijos. Kažkas juos aptarnauja be manęs, o aš moku tik už skambučius. 2019 m. spalio pradžioje „Yandex“ pristatė savo „Yandex“ debesies funkcijos - atrodo, pirmasis Rusijos Federacijoje be serverio. Ir ypač malonu, kad Alisos įgūdžiams jie paprastai yra nemokami, todėl nuo to laiko jie buvo mano periferiniame regėjime. Bet jau pradėkime.

Įsivaizduokime tokį scenarijų. Jūsų paraiška (pavyzdžiui, Alisos įgūdžiai Prisiminti ir pamiršti kuris, beje, taip pat veikia Yandex funkcijos) kviečia vartotoją įsigyti skaitmeninį produktą, pavyzdžiui, papildomų galimybių, o vartotojas atlieka mokėjimą. Kažkokia mokėjimo sistema (painiojamai panaši į "Yandex") apdoroja mokėjimą ir išsiunčia jį jūsų nurodytu adresu (ir mes turėsime nuorodą skambinti Yandex funkcijos) HTTP- prašymas, kuriame nurodoma mokėjimo informacija, tokia kaip suma, vardas, pavardė, telefono numeris ir mokėtojo el. Šiuos duomenis norime kokiu nors būdu apdoroti, pvz.: patikrinti sumą, padaryti atitinkamus įrašus duomenų bazėje, išsiųsti vartotojams SMS и El.pašto adresas* su mokėjimo gavimo patvirtinimu ir tolesniais nurodymais. Taigi pats mikro paslauga.

Apie tai, kaip iš Yandex funkcijos padaryti įrašus duomenų bazėje Debesų užkarda mes jau pažvelgėme į tai mokymo programoje Alisa viską prisimena (ir ateityje, manau, apsvarstysime kitos duomenų bazės pavyzdį - „Yandex“ duomenų bazė). Apie tai, kaip siųsti vartotojams SMS ir integruoti mūsų programą su „Yandex.Money“. - artimiausiu metu sutvarkysime. Dabar tiesiog užsiimkime laiškų siuntimu.

1. Sukurkite paskyrą SendGrid

Atkreipti dėmesį„SendGrid“ yra tik mano pasirinkimas, kurį padariau dėl kelių priežasčių, kurių pagrindinė yra ta, kad jie turi paruoštą Node.js SDK. Galite pasirinkti bet kurią kitą pašto paslaugą.

Eikime toliau į paskyros registracijos puslapį ir ten užpildykite registracijos formą. Tada einame į Prietaisų skydas, naršymo skydelyje pasirinkite El. pašto API -> Integravimo vadovas, o pagrindiniame skydelyje - Žiniatinklio API ir нажимаем кнопку Pasirinkti. Viskas kaip nuotraukoje:

„Yandex“ funkcijos siunčia laiškus

Kitame žingsnyje pasirenkame Node.js:

„Yandex“ funkcijos siunčia laiškus

Toliau mes sugalvojame savo API-rakto pavadinimas (bus rodomas tik konsolėje raktų sąraše ir neturi nieko bendra su mūsų būsimu kodu; aš sugalvojau neišnykstantį demo-api-key) ir paspauskite mygtuką Sukurti raktą:

„Yandex“ funkcijos siunčia laiškus

Raktas bus sugeneruotas, mes jį nukopijuosime ir saugosime su didžiausiu pasitikėjimu. Ir turėsime ekraną su mygtuku Patikrinkite integraciją, kaip žemiau esančiame paveikslėlyje, bet dar nespustelėsime, o pereikime prie kodo rašymo:

„Yandex“ funkcijos siunčia laiškus

2. Kodo rašymas

Tačiau pats kodas, kaip matote, yra juokingai mažas - 22 eilutės!

„Yandex“ funkcijos siunčia laiškus

Eilėje #8 Mano el. pašto adresas yra užkoduotas (todėl nedrąsiai paslėptas) – nurodykite savo. Realiame gyvenime gausime visus duomenis (įskaitant email) nuo objekto renginys. Pavyzdžiui, jei metodas POST objektas siunčiamas į mūsų funkciją vartotojas su lauku (nuosavybe) email, šio lauko reikšmę galima gauti taip:

const { user } = event;
const email = user.email;

Ir jei el. pašto adresas perduodamas funkcijai naudojant metodą GET, pavyzdžiui: https://functions.yandexcloud.net/123abc?[email protected]
parametro vertė email galite gauti taip:

const email = event.queryStringParameters.email;

Norėdami pažvelgti į tai, kas tiksliai yra objekte renginys, galite sukurti paprasčiausią Yandex funkcija ir pasukite jį su užklausomis:

module.exports.handler = async function (event) {
  return {
   'statusCode': 200, 
   'body': JSON.stringify(event)
  };
};

Tai išsamiau (bet ne taip aiškiai) aptariama oficialiuose dokumentuose čia.

Taigi sukurkite projekto katalogą (pvz. pašto siuntėjas), eikite į jį, inicijuokite projektą, įdiekite priklausomybes:

mkdir mailer
cd mailer
npm init -y
npm i @sendgrid/mail email-validator dotenv

Čia reikalingas tik paketas @sendgrid/mail. Plastikinis maišelis pašto patvirtinimo priemonė patikrina el. pašto adreso galiojimą (kaip iš karto neatspėjau?), bet jei esame tuo tikri (jis jau seniai tikrintas be mūsų), mums jo diegti nereikia (ir Žinoma, mes neturime to tikrinti kode). Plastikinis maišelis dotenv skirta skaityti įrašus iš failo .NS kaip vykdymo laiko kintamieji. Bet į Yandex funkcijos Šiuos kintamuosius galima įdėti tiesiai į vykdymo aplinką. Kaip? - Parodysiu žemiau. Todėl pakuotė dotenv taip pat galite neįdiegti ir failo .NS - nekurti, o tuo pačiu kodas yra faile rodyklė.js nekeisti. Bet čia mes įdiegėme šį paketą, todėl kuriame failus rodyklė.js и .NS:

touch index.js
touch .env

Byloje rodyklė.js parašykite 22 kodo eilutes, parodytas aukščiau esančioje ekrano kopijoje (tik eilutėje #8 pakeisti el. pašto adresą) ir faile .NS - (be jokių kabučių ar skyrybos ženklų) nurodykite porą - rakto pavadinimas/reikšmė APIkurį neseniai gavome pulte SendGrid:
SENDGRID_API_KEY=jūsų-labai-slaptas-sendgrid-api-key

Ir jei norite mažiau darbo, klonuokite saugyklą ir įdiekite paketus:

git clone https://github.com/stmike/ycf-sendgrid-mailer-tutorial.git
cd ycf-sendgrid-mailer-tutorial
npm i

Byloje rodyklė.js, eilėje #8 pakeisti el. paštą; sukurti failą šakniniame kataloge .NS, ir jame nurodykite rakto pavadinimą / reikšmę API, kaip parodyta aukščiau.

3. Dislokuoti

Daugiau ar mažiau aiškiai ir išsamiai apie Yandex.Cloud ir kaip jį ten patalpinti Yandex funkcijos aprašyta mano straipsnyje Alisa Bitrix žemėje – Nežinantiems siunčiu į šią šalį, o visiems kitiems (ir grįžusiems) – tada mažą komiksą (t.y. paveikslėlių ir teksto seriją).

Sukurti užtrauktukas-archyvas (pavadinkime jį, pavyzdžiui, paštas.zip), į kurį įtraukiame katalogą mazgo_moduliai ir failus .env, index.js - viskas iš mūsų projektų katalogo:

„Yandex“ funkcijos siunčia laiškus

Sukuriame funkciją pavadinimu... teisingai - pašto siuntėjas, kairiajame naršymo meniu įeiname Redaktorius, užpildykite reikiamus laukus ir perjunkite į skirtuką ZIP archyvas atsisiųskite mūsų archyvą paštas.zip:

„Yandex“ funkcijos siunčia laiškus

Ir čia yra anksčiau minėta galimybė atsisiųsti API raktas tiesiogiai čia, o ne kurti failą projekte .NS, ir neįdiekite paketo dotenv. Bet mes jau visa tai padarėme, todėl parodau tai tik dėl informacijos. Tai yra, nereikia daugintis!

„Yandex“ funkcijos siunčia laiškus

Dabar viršutiniame dešiniajame kampe spustelėkite mygtuką Sukurti versiją, ir palaukite porą sekundžių. Kai viskas bus paruošta, mes automatiškai eisime į skyrių Peržiūrėti. Ten įjungsime parinktį viešoji funkcijakad galėtumėte su ja bendrauti iš išorinio pasaulio.

„Yandex“ funkcijos siunčia laiškus

Matote mėlyną nuorodą priešais užrašą Nuoroda į skambutį? Spustelėkite jį. Atsidarys tuščias naršyklės langas... Bet palaukite – gavau el. laišką:

„Yandex“ funkcijos siunčia laiškus

Dabar galite grįžti į konsolę SendGridir paspauskite mygtuką Patikrinkite integraciją. Sistema viską patikrins savo kanalais ir dėl to turėtų grąžinti tokį ekraną:

„Yandex“ funkcijos siunčia laiškus

Tai štai, vaikinai (ir, žinoma, merginos) – viskas tikrai labai paprasta ir elegantiška! Bus daugiau straipsnių. Jei kam nors įdomu paskaityti ką nors panašaus, užsiprenumeruokite, kad nepraleistumėte.

4. Aukos

„Yandex“ funkcijos siunčia laiškus

Šaltinis: www.habr.com

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