Funkcie Yandex odosielajú poštu

Funkcie Yandex odosielajú poštu

Dnes si vytvoríme tzv. Funkcia Yandex (oficiálny názov Funkcie cloudu Yandex), ktorá sa dohodla so zásielkovou službou SendGrid pošle „mydlo“ pokojne spiacim používateľom (len si robím srandu – viem, že všetci sme proti spamu).

Som tiež odporcom (ale bez fanatizmu) tradičných serverov a zástancom tzv. bez servera (bezserverové) riešenia, pretože nemám rád (a vlastne ani neviem ako) spravovať servery a ešte viac platím za čas, keď nie sú načítané. Ďalšia vec sú funkcie. Niekto ich obsluhuje bezo mňa a ja platím len za hovory. Začiatkom októbra 2019 Yandex predstavil svoje Funkcie cloudu Yandex - zdá sa byť prvým v Ruskej federácii bez servera. A čo je obzvlášť pekné, že pre Alicine schopnosti sú vo všeobecnosti zadarmo, takže odvtedy sú v mojom periférnom videní. Ale poďme už začať.

Predstavme si tento scenár. Vaša aplikácia (napríklad Alicina zručnosť Pamätaj a zabudni ktorý mimochodom funguje aj na Funkcie Yandex) vyzve používateľa, aby si kúpil digitálny produkt, napríklad ďalšie možnosti, a používateľ uskutoční platbu. Nejaký druh platobného systému (zmätočne podobný Yandex) spracuje platbu a odošle ju na vami uvedenú adresu (a budeme mať odkaz na zavolanie Funkcie Yandex) HTTP-žiadosť obsahujúca podrobnosti o platbe, ako je suma, celé meno, telefónne číslo a e-mail platiteľa. Tieto údaje chceme nejakým spôsobom spracovať, napr.: skontrolovať množstvo, vykonať príslušné záznamy v databáze, odoslať používateľom SMS и E-mail s potvrdením o prijatí platby a ďalšími pokynmi. Takže seba mikroservis.

O tom, ako od Funkcie Yandex robiť záznamy v databáze Cloud Firestore už sme sa na to pozreli v návode Alice si pamätá všetko (a myslím si, že v budúcnosti zvážime príklad pre inú databázu - Databáza Yandex). Informácie o odosielaní používateľom SMS a integrovať našu aplikáciu s Yandex.Money - vyriešime to v blízkej budúcnosti. Teraz sa poďme zaoberať len posielaním listov.

1. Vytvorte si účet v SendGrid

PoznámkaSendGrid je len moja voľba, ktorú som si vybral z viacerých dôvodov, tým hlavným je, že majú hotové SDK pre Node.js. Môžete si vybrať akúkoľvek inú poštovú službu.

Poďme ďalej na stránku registrácie účtu a tam vyplňte registračný formulár. Potom ideme na Informačný panel, na navigačnom paneli vyberte Email API -> Sprievodca integrácioua na hlavnom paneli - WebAPI a нажимаем кнопку Vybrať. Všetko je ako na obrázku:

Funkcie Yandex odosielajú poštu

V ďalšom kroku vyberieme Node.js:

Funkcie Yandex odosielajú poštu

Ďalej prídeme na naše API-názov kľúča (zobrazí sa iba v konzole v zozname kľúčov a nemá nič spoločné s naším budúcim kódom; práve som prišiel s nehynúcim demo-api-key) a stlačte tlačidlo Vytvoriť kľúč:

Funkcie Yandex odosielajú poštu

Kľúč sa vygeneruje, skopírujeme ho a uchovávame v najhlbšej dôvernosti. A budeme mať obrazovku s tlačidlom Overte integráciu, ako na obrázku nižšie, ale zatiaľ naň neklikneme, ale prejdime k písaniu kódu:

Funkcie Yandex odosielajú poštu

2. Písanie kódu

Ale samotný kód, ako vidíte, je smiešne malý - 22 riadkov!

Funkcie Yandex odosielajú poštu

V rade #8 Môj e-mail je pevne zakódovaný (a preto je hanblivo skrytý) - uveďte prosím svoj. V reálnom živote dostaneme všetky údaje (vrátane e-mail) z objektu udalosť. Napríklad, ak metóda POST objekt sa odošle našej funkcii užívateľ s poľom (vlastníctvom) e-mail, hodnotu tohto poľa možno získať takto:

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

A ak je e-mailová adresa odovzdaná funkcii pomocou metódy GET, napríklad: https://functions.yandexcloud.net/123abc?[email protected]
hodnota parametra e-mail môžete to získať takto:

const email = event.queryStringParameters.email;

Aby ste sa pozreli na to, čo presne obsahuje predmet udalosť, môžete vytvoriť najjednoduchšie Funkcia Yandex a otočte to otázkami:

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

Podrobnejšie (ale menej zrozumiteľne) sa o tom hovorí v oficiálnej dokumentácii tu.

Vytvorte si teda adresár projektu (napr. mailový klient), prejdite naň, inicializujte projekt, nainštalujte závislosti:

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

Tu je potrebný iba balík @sendgrid/mail. Plastový sáčok email-validátor skontroluje platnosť emailovej adresy (ako som to hneď neuhádol?), ale ak sme si ňou istí (už bola dlho kontrolovaná bez nás), nemusíme ju inštalovať (a resp. samozrejme, nemusíme to kontrolovať v kóde). Plastový sáčok dotenv určený na čítanie záznamov zo súboru .env ako runtime premenné. Ale v Funkcie Yandex Tieto premenné je možné umiestniť priamo do runtime prostredia. Ako? - Ukážem to nižšie. Preto balík dotenv tiež ho nemôžete nainštalovať a súbor .env - nevytvárajte a zároveň je kód v súbore index.js nemeň. Ale tu sme nainštalovali tento balík, takže vytvárame súbory index.js и .env:

touch index.js
touch .env

V súbore index.js napíšte 22 riadkov kódu zobrazeného na obrázku vyššie (iba do riadku #8 zmeniť svoj e-mail) a v súbore .env - (bez úvodzoviek alebo interpunkcie) uveďte pár - názov kľúča/hodnota APIktorý sme nedávno dostali do konzoly SendGrid:
SENDGRID_API_KEY=váš-veľmi tajný-sendgrid-api-key

A ak chcete menej práce, naklonujte úložisko a nainštalujte balíčky:

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

V súbore index.js, v rade #8 zmeniť e-mail; vytvorte súbor v koreňovom adresári .enva v ňom uveďte názov/hodnotu kľúča API, ako je znázornené vyššie.

3. Nasadiť

Viac-menej jasne a podrobne o Yandex.Cloud a ako to tam umiestniť Funkcie Yandex popísané v mojom článku Alica v krajine Bitrix - Nevedomých posielam do tejto krajiny a pre všetkých ostatných (a tých, ktorí sa vrátili) - potom malý komiks (t. j. sériu obrázkov a textu).

Tvoríme zips- archív (nazvime to napr. mailer.zip), do ktorého zaraďujeme adresár node_modules a súbory .env, index.js - všetko z nášho katalógu projektov:

Funkcie Yandex odosielajú poštu

Vytvoríme funkciu s názvom... správne - mailový klient, v ľavom navigačnom menu vstúpime editor, vyplňte požadované polia a prejdite na kartu ZIP archív stiahnite si náš archív mailer.zip:

Funkcie Yandex odosielajú poštu

A tu je už spomínaná možnosť na stiahnutie API kľúč priamo tu, namiesto vytvárania súboru v projekte .enva balík neinštalujte dotenv. Ale toto všetko sme už urobili, takže to uvádzam len pre informáciu. To znamená, že nie je potrebné duplikovať!

Funkcie Yandex odosielajú poštu

Teraz v pravom hornom rohu kliknite na tlačidlo Vytvoriť verziua počkajte niekoľko sekúnd. Keď je všetko pripravené, automaticky prejdeme do sekcie Recenzia. Tam túto možnosť povolíme Verejná funkciaaby ste s ním mohli komunikovať z vonkajšieho sveta.

Funkcie Yandex odosielajú poštu

Modrý odkaz vidíte oproti nápisu Odkaz na volanie? Kliknite naň. Otvorí sa prázdne okno prehliadača... Ale počkajte – dostal som e-mail:

Funkcie Yandex odosielajú poštu

Teraz sa môžete vrátiť do konzoly SendGrida stlačte tlačidlo Overte integráciu. Systém všetko skontroluje prostredníctvom svojich kanálov a v dôsledku toho by mal vrátiť takúto obrazovku:

Funkcie Yandex odosielajú poštu

To je všetko, chlapci (a dievčatá, samozrejme) - všetko je naozaj veľmi jednoduché a elegantné! Článkov bude viac. Ak má niekto záujem si niečo podobné prečítať, prihláste sa na odber, aby ste to nezmeškali.

4. Dary

Funkcie Yandex odosielajú poštu

Zdroj: hab.com

Pridať komentár