Yandex funkcije za slanje pošte

Yandex funkcije za slanje pošte

Danas ćemo kreirati tzv. Yandex funkcija (službeni naziv Yandex Cloud funkcije), koji je bio u dosluhu s poštanskom službom SendGrid slat će “sapun” korisnicima koji mirno spavaju (šalim se - znam da smo svi protiv spama).

Također sam protivnik (ali bez fanatizma) tradicionalnih servera, te pobornik tzv. serverless (bez servera) rješenja, jer ne volim (i ne znam baš kako) administrirati poslužitelje, a još više plaćati vrijeme kada nisu učitani. Druga stvar su funkcije. Netko ih servisira bez mene, a ja plaćam samo pozive. Početkom listopada 2019. Yandex je predstavio svoj Yandex Cloud funkcije - čini se da je prvi u Ruskoj Federaciji serverless. A ono što je posebno lijepo je da su za Aliceine vještine uglavnom besplatne, pa su od tada u mom perifernom vidu. No, počnimo već jednom.

Zamislimo ovaj scenarij. Vaša aplikacija (na primjer, Aliceina vještina Zapamti i Zaboravi koji, usput, također radi na Yandex funkcije) poziva korisnika da kupi digitalni proizvod, npr. dodatne opcije, a korisnik izvrši plaćanje. Nekakav sustav plaćanja (zbunjujuće sličan Yandex) obrađuje uplatu i šalje je na adresu koju navedete (a mi ćemo imati poveznicu za poziv Yandex funkcije) HTTP- zahtjev koji sadrži podatke o plaćanju, kao što su iznos, puno ime, broj telefona i e-mail uplatitelja. Te podatke želimo na neki način obraditi, npr.: provjeriti iznos, izvršiti odgovarajuće unose u bazu podataka, poslati korisnicima SMS и E-mail uz potvrdu o primitku uplate i daljnje upute. Dakle sebe mikroservis.

O tome kako iz Yandex funkcije napraviti unose u bazu podataka Cloud Firestore već smo to pogledali u tutorialu Alice se sjeća svega (i u budućnosti ćemo, mislim, razmotriti primjer za drugu bazu podataka - Yandex baza podataka). O načinu slanja korisnicima SMS i integrirati našu aplikaciju s Yandex.Money — riješit ćemo to u bliskoj budućnosti. Sada se pozabavimo samo slanjem pisama.

1. Napravite račun u SendGridu

PrimijetitiSendGrid je samo moj izbor za koji sam se odlučio iz više razloga, a glavni je taj što imaju gotov SDK za Node.js. Možete odabrati bilo koju drugu poštansku uslugu.

Idemo dalje na stranicu za registraciju računa i tamo ispunite obrazac za registraciju. Zatim idemo na Nadzorna ploča, u navigacijskoj ploči odaberite API za e-poštu -> Vodič za integraciju, a na glavnoj ploči - WebAPI i nazimaem gumb Odaberite. Sve je kao na slici:

Yandex funkcije za slanje pošte

U sljedećem koraku odabiremo Node.js:

Yandex funkcije za slanje pošte

Sljedeće smišljamo za naše API-naziv ključa (bit će prikazan samo u konzoli na popisu ključeva i nema nikakve veze s našim budućim kodom; upravo sam smislio neprolazni demo-api-ključ) i pritisnite gumb Kreiraj ključ:

Yandex funkcije za slanje pošte

Ključ će biti generiran, mi ćemo ga kopirati i čuvati u najvećoj tajnosti. I imat ćemo zaslon s gumbom Provjerite integraciju, kao na slici ispod, ali nećemo još kliknuti, već prijeđimo na pisanje koda:

Yandex funkcije za slanje pošte

2. Pisanje koda

Ali sam kod, kao što vidite, smiješno je mali - 22 reda!

Yandex funkcije za slanje pošte

U redu #8 Moja adresa e-pošte je tvrdo kodirana (i stoga sramežljivo skrivena) - molimo naznačite svoju. U stvarnom životu primit ćemo sve podatke (uključujući e-mail) od objekta događaj. Na primjer, ako je metoda POST objekt se šalje našoj funkciji korisnik s poljem (imovinom) e-mail, vrijednost ovog polja može se dobiti ovako:

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

A ako se adresa e-pošte proslijedi funkciji pomoću metode GET, na primjer: https://functions.yandexcloud.net/123abc?[email protected]
vrijednost parametra e-mail možete ga dobiti ovako:

const email = event.queryStringParameters.email;

Da biste vidjeli što je točno sadržano u objektu događaj, možete stvoriti najjednostavniji Yandex funkcija i okrećite ga upitima:

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

O tome se detaljnije (ali manje jasno) govori u službenoj dokumentaciji здесь.

Dakle, stvorite direktorij projekta (na primjer, poštar), idite na njega, inicijalizirajte projekt, instalirajte ovisnosti:

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

Ovdje je potreban samo paket @sendgrid/mail. Plastična vrećica email-validator provjerava valjanost e-mail adrese (kako nisam odmah pogodio?), ali ako smo sigurni u nju (već je dugo provjeravana bez nas), ne moramo je instalirati (i, od naravno, ne moramo to provjeravati u kodu). Plastična vrećica dotenv dizajniran za čitanje zapisa iz datoteke .NS kao varijable vremena izvođenja. Ali u Yandex funkcije Moguće je postaviti ove varijable izravno u runtime okruženje. Kako? - Pokazat ću dolje. Stoga paket dotenv također ga ne možete instalirati i datoteku .NS - nemojte stvarati, au isto vrijeme kod je u datoteci index.js nemoj mijenjati. Ali ovdje smo instalirali ovaj paket, pa stvaramo datoteke index.js и .NS:

touch index.js
touch .env

U spisu index.js napišite 22 retka koda prikazanog na gornjoj snimci zaslona (samo u retku #8 promijenite svoju e-poštu) i u datoteci .NS - (bez navodnika ili interpunkcijskih znakova) navedite par - naziv ključa/vrijednost APIkoju smo nedavno dobili u konzoli SendGrid:
SENDGRID_API_KEY=vaš-vrlo-tajni-sendgrid-api-ključ

A ako želite manje posla, klonirajte repozitorij i instalirajte pakete:

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

U spisu index.js, u redu #8 promijeni e-mail; stvoriti datoteku u korijenskom direktoriju .NS, te u njemu označiti naziv/vrijednost ključa API, kao što je prikazano gore.

3. Rasporedite

Više ili manje jasno i detaljno o Yandex.Cloud i kako ga tamo smjestiti Yandex funkcije opisano u mom članku Alisa u zemlji Bitrixa - Neznalicama šaljem u ovu zemlju, a za sve ostale (i one koji su se vratili) - zatim mali strip (tj. niz slika i teksta).

Mi stvaramo zip-arhiva (nazovimo je npr. mailer.zip), u koji uključujemo imenik čvorovi_moduli i datoteke .env, index.js - sve iz našeg kataloga projekata:

Yandex funkcije za slanje pošte

Stvaramo funkciju s imenom... ispravno - poštar, u lijevom navigacijskom izborniku ulazimo Urednik, ispunite potrebna polja i prijeđite na karticu ZIP arhiva preuzmite našu arhivu mailer.zip:

Yandex funkcije za slanje pošte

I ovdje je prethodno spomenuta opcija za preuzimanje API ključ izravno ovdje, umjesto stvaranja datoteke u projektu .NS, i nemojte instalirati paket dotenv. Ali sve smo to već napravili, pa prikazujem samo informativno. Odnosno, nema potrebe za dupliciranjem!

Yandex funkcije za slanje pošte

Sada u gornjem desnom kutu kliknite gumb Izradi verziju, i pričekajte nekoliko sekundi. Kada je sve spremno, automatski idemo na odjeljak Pregled. Tamo ćemo omogućiti opciju Javna funkcijatako da možete komunicirati s njim iz vanjskog svijeta.

Yandex funkcije za slanje pošte

Vidite plavu vezu nasuprot natpisa Veza poziva? Kliknite na nju. Otvorit će se prazan prozor preglednika... Ali čekaj - primio sam e-poruku:

Yandex funkcije za slanje pošte

Sada se možete vratiti na konzolu SendGrid, i pritisnite gumb Provjerite integraciju. Sustav će sve provjeriti kroz svoje kanale i kao rezultat bi trebao vratiti ovakav zaslon:

Yandex funkcije za slanje pošte

To je to, dečki (i cure, naravno) – sve je stvarno vrlo jednostavno i elegantno! Bit će još članaka. Ako je netko zainteresiran za čitanje ovako nečega, pretplatite se da ne propustite.

4. Donacije

Yandex funkcije za slanje pošte

Izvor: www.habr.com

Dodajte komentar