Funkcije Yandex pošiljajo pošto

Funkcije Yandex pošiljajo pošto

Danes bomo ustvarili t.i. Funkcija Yandex (uradno ime Funkcije v oblaku Yandex), ki se je dogovarjal s poštno službo SendGrid bo mirno spečim uporabnikom poslal “milo” (hecam se - vem, da smo vsi proti spamu).

Sem tudi nasprotnik (vendar brez fanatizma) tradicionalnih strežnikov in zagovornik t.i. brez strežnika (brezstrežniške) rešitve, ker strežnikov ne maram (in sploh ne znam) administrirati, še bolj pa plačevati čas, ko niso naloženi. Druga stvar so funkcije. Nekdo jih servisira brez mene, jaz pa plačujem samo klice. V začetku oktobra 2019 je Yandex predstavil svoj Funkcije v oblaku Yandex - zdi se, da je prvi v Ruski federaciji brez strežnika. In kar je še posebej lepo, je, da so za Alicine veščine na splošno brezplačne, tako da so od takrat v mojem perifernem vidu. A začnimo že.

Predstavljajmo si ta scenarij. Vaša aplikacija (na primer Alicina spretnost Zapomni si in pozabi ki mimogrede deluje tudi na Funkcije Yandex) povabi uporabnika k nakupu digitalnega izdelka, na primer dodatne možnosti, in uporabnik izvede plačilo. Nekakšen plačilni sistem (zmedno podoben Yandex) obdela plačilo in ga pošlje na naslov, ki ga navedete (in imeli bomo povezavo za klic Funkcije Yandex) HTTP- zahtevo, ki vsebuje podatke o plačilu, kot so znesek, polno ime, telefonska številka in e-pošta plačnika. Te podatke želimo na nek način obdelati, na primer: preveriti količino, narediti ustrezne vnose v bazo podatkov, poslati uporabnikom SMS и E-pošta s potrdilom o prejemu plačila in nadaljnjimi navodili. Torej sebe mikrostoritev.

O tem, kako od Funkcije Yandex vnesite v bazo podatkov Cloud Firestore smo si ga že ogledali v vadnici Alice se spominja vsega (in mislim, da bomo v prihodnosti razmislili o primeru za drugo bazo podatkov - Baza podatkov Yandex). O tem, kako poslati uporabnikom SMS in integrirajte našo aplikacijo z Yandex.Money — to bomo rešili v bližnji prihodnosti. Zdaj pa se posvetimo samo pošiljanju pisem.

1. Ustvarite račun v SendGrid

ObvestiloSendGrid je pač moja izbira, za katero sem se odločil iz več razlogov, glavni je ta, da imajo že pripravljen SDK za Node.js. Izberete lahko katero koli drugo poštno storitev.

Gremo naprej na stran za registracijo računa in tam izpolnite prijavnico. Potem gremo na Splošno, v navigacijski plošči izberite E-poštni API -> Vodnik za integracijo, in na glavni plošči - Spletni API in nažimaем gumb Izberite. Vse je kot na sliki:

Funkcije Yandex pošiljajo pošto

V naslednjem koraku izberemo Node.js:

Funkcije Yandex pošiljajo pošto

Naslednji smo prišli do za naše API-ime ključa (prikazano bo samo v konzoli na seznamu ključev in nima nobene zveze z našo prihodnjo kodo; pravkar sem si omislil neminljivo demo-api-ključ) in pritisnite gumb Ustvari ključ:

Funkcije Yandex pošiljajo pošto

Ključ bo generiran, kopirali ga bomo in hranili v najgloblji skrivnosti. In imeli bomo zaslon z gumbom Preverite integracijo, kot na spodnji sliki, vendar ga še ne bomo kliknili, ampak preidimo na pisanje kode:

Funkcije Yandex pošiljajo pošto

2. Pisanje kode

Toda sama koda je, kot lahko vidite, smešno majhna - 22 vrstic!

Funkcije Yandex pošiljajo pošto

V vrsti #8 Moj e-poštni naslov je v kodi (in zato sramežljivo skrit) – navedite svojega. V resničnem življenju bomo prejeli vse podatke (vključno z E-naslov) od predmeta dogodek. Na primer, če metoda POST predmet je poslan naši funkciji uporabnik s poljem (lastnina) E-naslov, lahko vrednost tega polja dobite takole:

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

In če je e-poštni naslov posredovan funkciji z metodo GET, na primer: https://functions.yandexcloud.net/123abc?[email protected]
vrednost parametra E-naslov lahko ga dobite takole:

const email = event.queryStringParameters.email;

Da bi pogledali, kaj točno je v predmetu dogodek, lahko ustvarite najpreprostejše Funkcija Yandex in ga zavrtite s poizvedbami:

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

To je podrobneje (vendar manj jasno) obravnavano v uradni dokumentaciji tukaj.

Ustvarite imenik projekta (npr. poštar), pojdite nanj, inicializirajte projekt, namestite odvisnosti:

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

Tukaj je potreben le paket @sendgrid/pošta. Plastična vrečka email-validator preveri veljavnost elektronskega naslova (kako nisem takoj uganil?), če pa smo vanj prepričani (preverjen je že dolgo brez nas), nam ga ni treba namestiti (in seveda nam tega ni treba preveriti v kodi). Plastična vrečka dotenv zasnovan za branje zapisov iz datoteke .env kot spremenljivke izvajalnega časa. Ampak v Funkcije Yandex Te spremenljivke je mogoče postaviti neposredno v okolje izvajanja. kako - Pokazal bom spodaj. Zato paket dotenv prav tako ga ne morete namestiti in datoteke .env - ne ustvarite, hkrati pa je koda v datoteki index.js ne spremeniti. Tukaj pa smo namestili ta paket, zato ustvarjamo datoteke index.js и .env:

touch index.js
touch .env

V datoteki index.js napišite 22 vrstic kode, prikazane na zgornjem posnetku zaslona (samo v vrstici #8 spremenite svoj e-poštni naslov) in v datoteki .env - (brez narekovajev ali ločil) določite par - ime ključa/vrednost APIki smo ga nedavno prejeli v konzoli SendGrid:
SENDGRID_API_KEY=vaš-zelo-skrivni-sendgrid-api-ključ

In če želite manj dela, klonirajte repozitorij in namestite pakete:

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

V datoteki index.js, v vrsti #8 spremeni e-pošto; ustvarite datoteko v korenskem imeniku .env, in v njem označite ime/vrednost ključa API, kot je prikazano zgoraj.

3. Razmestite

Bolj ali manj jasno in podrobno o Yandex.Cloud in kako ga tja postaviti Funkcije Yandex opisano v mojem članku Alice v deželi Bitrix - Nevednežem pošljem v to državo, vsem ostalim (in tistim, ki so se vrnili) pa potem majhen strip (tj. niz slik in besedila).

Ustvari Zadrga-arhiv (recimo ga npr. mailer.zip), v katerega vključimo imenik node_module in datoteke .env, index.js - vse iz našega kataloga projektov:

Funkcije Yandex pošiljajo pošto

Ustvarimo funkcijo z imenom ... pravilno - poštar, v levem navigacijskem meniju vstopimo Urednik, izpolnite zahtevana polja in preklopite na zavihek ZIP arhiv prenesite naš arhiv mailer.zip:

Funkcije Yandex pošiljajo pošto

In tukaj je prej omenjena možnost za prenos API ključ neposredno tukaj, namesto da ustvarite datoteko v projektu .env, in ne namestite paketa dotenv. A vse to smo že naredili, zato ga prikazujem zgolj informativno. Se pravi, ni treba podvajati!

Funkcije Yandex pošiljajo pošto

Zdaj v zgornjem desnem kotu kliknite gumb Ustvari različicoin počakajte nekaj sekund. Ko je vse pripravljeno, bomo samodejno prešli na razdelek Pregled. Tam bomo omogočili možnost javna funkcijatako da lahko z njim komunicirate iz zunanjega sveta.

Funkcije Yandex pošiljajo pošto

Nasproti napisa vidite modro povezavo Povezava do klica? Kliknite ga. Odprlo se bo prazno okno brskalnika ... Toda počakajte - prejel sem e-pošto:

Funkcije Yandex pošiljajo pošto

Zdaj se lahko vrnete na konzolo SendGrid, in pritisnite gumb Preverite integracijo. Sistem bo vse preveril po svojih kanalih in posledično bi moral vrniti tak zaslon:

Funkcije Yandex pošiljajo pošto

To je to, fantje (in dekleta, seveda) – vse je res zelo preprosto in elegantno! Člankov bo še več. Če koga zanima kaj takega, naj se naroči, da ne zamudite.

4. Donacije

Funkcije Yandex pošiljajo pošto

Vir: www.habr.com

Dodaj komentar