
Dnes si vytvoříme tzv. Funkce Yandex (oficiální jméno ), která spolupracovala se zásilkovou službou bude posílat „mýdlo“ pokojně spícím uživatelům (dělám si srandu – vím, že jsme všichni proti spamu).
Jsem také odpůrcem (ale bez fanatismu) tradičních serverů a zastáncem tzv. serverless (bezserverová) řešení, protože mě nebaví (a vlastně ani neumím) spravovat servery a ještě víc platím za dobu, kdy nejsou načteny. Další věcí jsou funkce. Někdo je obsluhuje beze mě a já platím jen za hovory. Na začátku října 2019 představil Yandex svůj Funkce cloudu Yandex - zdá se být první v Ruské federaci serverless. A co je obzvláště pěkné, že pro Aliciny dovednosti jsou obecně zdarma, takže jsou od té doby v mém periferním vidění. Ale pojďme už začít.
Představme si tento scénář. Vaše aplikace (například Alicina dovednost který mimochodem také funguje Funkce Yandex) vyzve uživatele ke koupi digitálního produktu, například dalších možností, a uživatel provede platbu. Nějaký druh platebního systému (zmateně podobný ) zpracuje platbu a odešle ji na adresu, kterou uvedete (a my budeme mít odkaz na zavolání Funkce Yandex) HTTP- žádost obsahující platební údaje, jako je částka, celé jméno, telefonní číslo a e-mail plátce. Tyto údaje chceme nějakým způsobem zpracovat, např.: zkontrolovat množství, provést příslušné záznamy v databázi, odeslat uživatelům SMS и Email s potvrzením o přijetí platby a dalšími pokyny. Tedy sebe mikroservis.
O tom, jak od Funkce Yandex dělat záznamy v databázi Cloud Firestore už jsme se na to podívali v tutoriálu (a myslím, že v budoucnu zvážíme příklad pro jinou databázi - ). O tom, jak odesílat uživatelům SMS a integrovat naši aplikaci s Yandex.Money - v blízké budoucnosti to vyřešíme. Nyní se pojďme zabývat pouze odesíláním dopisů.
1. Vytvořte si účet v SendGrid
PoznámkaSendGrid je jen moje volba, kterou jsem udělal z několika důvodů, hlavní je, že mají hotové SDK pro Node.js. Můžete si vybrat jakoukoli jinou poštovní službu.
Pokračujte dál a tam vyplňte registrační formulář. Pak jdeme na Hlavní obrazovka, na navigačním panelu vyberte Email API -> Integrační příručkaa na hlavním panelu - Webové rozhraní API a нажимаем кнопку Vybrat. Vše je jako na obrázku:

V dalším kroku vybíráme Node.js:

Dále přicházíme na naše API-název klíče (bude zobrazen pouze v konzole v seznamu klíčů a nemá nic společného s naším budoucím kódem; přišel jsem s nehynoucím demo-api-key) a stiskněte tlačítko Vytvořit klíč:

Klíč bude vygenerován, zkopírujeme jej a uchováme v nejhlubší důvěře. A budeme mít obrazovku s tlačítkem Ověřte integraci, jako na obrázku níže, ale ještě na to neklikneme, ale přejděme k psaní kódu:

2. Psaní kódu
Ale samotný kód, jak vidíte, je směšně malý - 22 řádků!

V souladu #8 Můj e-mail je pevně zakódován (a proto stydlivě skrytý) - uveďte prosím svůj. V reálném životě obdržíme všechna data (včetně e-mail) z objektu událost. Například pokud metoda POST naší funkci je odeslán objekt uživatel s polem (majetkem) e-mail, hodnotu tohoto pole lze získat takto:
const { user } = event;
const email = user.email; A pokud je e-mailová adresa předána funkci pomocí metody GET, Například: https://functions.yandexcloud.net/123abc?email=user@example.com
hodnota parametru e-mail můžete to získat takto:
const email = event.queryStringParameters.email;Abychom se podívali, co přesně je v objektu obsaženo událost, můžete vytvořit nejjednodušší Funkce Yandex a překrucujte to dotazy:
module.exports.handler = async function (event) {
return {
'statusCode': 200,
'body': JSON.stringify(event)
};
};Podrobněji (ale méně jasně) je to popsáno v oficiální dokumentaci .
Vytvořte tedy adresář projektu (např. poštovní zásilka), přejděte na něj, inicializujte projekt, nainstalujte závislosti:
mkdir mailer
cd mailer
npm init -y
npm i @sendgrid/mail email-validator dotenv
Zde je vyžadován pouze balíček @sendgrid/mail. Igelitová taška e-mailový validátor zkontroluje platnost e-mailové adresy (jak jsem to hned neuhodl?), ale pokud jsme si tím jisti (už je dlouho kontrolována bez nás), nemusíme ji instalovat (a popř. samozřejmě to nemusíme kontrolovat v kódu). Igelitová taška dotenv navržený pro čtení záznamů ze souboru .env jako runtime proměnné. Ale v Funkce Yandex Tyto proměnné je možné umístit přímo do běhového prostředí. Jak? - Ukážu to níže. Proto balíček dotenv také jej nelze nainstalovat a soubor .env - nevytvářejte a zároveň je kód v souboru index.js neměň. Zde jsme ale nainstalovali tento balíček, takže vytváříme soubory index.js и .env:
touch index.js
touch .env
V souboru index.js napište 22 řádků kódu zobrazeného na snímku obrazovky výše (pouze do řádku #8 změnit svůj e-mail) a v souboru .env - (bez uvozovek nebo interpunkce) uveďte pár - název klíče/hodnota APIkterý jsme nedávno dostali do konzole SendGrid:
SENDGRID_API_KEY=váš-velmi tajný-sendgrid-api-key
A pokud chcete méně práce, naklonujte úložiště a nainstalujte balíčky:
git clone https://github.com/stmike/ycf-sendgrid-mailer-tutorial.git
cd ycf-sendgrid-mailer-tutorial
npm i
V souboru index.js, v souladu #8 změnit e-mail; vytvořit soubor v kořenovém adresáři .enva v něm uveďte název/hodnotu klíče API, jak je uvedeno výše.
3. Nasadit
Víceméně jasně a podrobně o Yandex.Cloud a jak to tam umístit Funkce Yandex popsané v mém článku - Neznalé posílám do této země a pro všechny ostatní (a ty, kteří se vrátili) - pak malý komiks (tedy série obrázků a textu).
Vytvořit zip-archiv (říkejme tomu např. mailer.zip), do kterého zařadíme adresář node_modules a soubory .env, index.js - vše z našeho katalogu projektů:

Vytvoříme funkci s názvem... správně - poštovní zásilka, v levém navigačním menu vstoupíme Editor, vyplňte požadovaná pole a přejděte na kartu ZIP archiv stáhněte si náš archiv mailer.zip:

A zde je již zmíněná možnost stažení API klíč přímo zde, místo vytváření souboru v projektu .enva balíček neinstalujte dotenv. Ale to vše jsme již udělali, takže to ukazuji jen pro informaci. To znamená, že není třeba duplikovat!

Nyní v pravém horním rohu klikněte na tlačítko Vytvořit verzia počkejte několik sekund. Když je vše připraveno, automaticky přejdeme do sekce Recenze. Tam volbu povolíme veřejná funkceabyste s ním mohli komunikovat z vnějšího světa.

Naproti nápisu vidíte modrý odkaz Odkaz na volání? Klikněte na něj. Otevře se prázdné okno prohlížeče... Ale počkejte – obdržel jsem e-mail:

Nyní se můžete vrátit do konzole SendGrida stiskněte tlačítko Ověřte integraci. Systém vše zkontroluje prostřednictvím svých kanálů a v důsledku toho by měl vrátit obrazovku jako je tato:

To je vše, chlapci (a dívky, samozřejmě) - všechno je opravdu velmi jednoduché a elegantní! Článků bude více. Pokud má někdo zájem si něco takového přečíst, přihlaste se k odběru, ať o nic nepřijdete.
4. Dary
Zdroj: www.habr.com
