Funkce Yandex odesílají poštu

Funkce Yandex odesílají poštu

Dnes si vytvoříme tzv. Funkce Yandex (oficiální jméno Funkce cloudu Yandex), která spolupracovala se zásilkovou službou SendGrid 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 Pamatujte a zapomeňte 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ý Yandex) 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 Alice si všechno pamatuje (a myslím, že v budoucnu zvážíme příklad pro jinou databázi - Databáze Yandex). 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 na stránku registrace účtu 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:

Funkce Yandex odesílají poštu

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

Funkce Yandex odesílají poštu

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íč:

Funkce Yandex odesílají poštu

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:

Funkce Yandex odesílají poštu

2. Psaní kódu

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

Funkce Yandex odesílají poštu

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 protected]
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 zde.

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 Alenka v zemi Bitrix - 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ů:

Funkce Yandex odesílají poštu

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:

Funkce Yandex odesílají poštu

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!

Funkce Yandex odesílají poštu

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.

Funkce Yandex odesílají poštu

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:

Funkce Yandex odesílají poštu

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:

Funkce Yandex odesílají poštu

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

Funkce Yandex odesílají poštu

Zdroj: www.habr.com

Přidat komentář