Yandex funkcije šalju poštu

Yandex funkcije šalju poštu

Danas ćemo kreirati tzv. Yandex funkcija (službeni naziv Yandex Cloud funkcije), koji je bio u dosluhu sa poštanskom uslugom SendGrid će slati „sapun“ korisnicima koji mirno spavaju (šalim se - znam da smo svi protiv neželjene pošte).

I ja sam protivnik (ali bez fanatizma) tradicionalnih servera, i pristalica tzv. bez servera (bez serverskih) rješenja, jer ne volim (a baš i ne znam kako da) administriram servere, a još više plaćam vrijeme kada nisu učitani. Druga stvar su funkcije. Neko ih servisira bez mene, a ja plaćam samo pozive. Početkom oktobra 2019. Yandex je predstavio svoj Yandex Cloud funkcije - izgleda prvi u Ruskoj Federaciji bez servera. A ono što je posebno lijepo je da su za Alisine vještine uglavnom besplatne, pa su od tada u mom perifernom vidu. Ali hajde da počnemo.

Zamislimo ovaj scenario. Vaša aplikacija (na primjer, Alisina vještina Zapamti i zaboravi koji, inače, takođe radi Yandex funkcije) poziva korisnika da kupi digitalni proizvod, na primjer, dodatne opcije, a korisnik vrši uplatu. Neka vrsta platnog sistema (zbunjujuće sličan Yandex novac) obrađuje uplatu i šalje je na adresu koju navedete (a mi ćemo imati link za poziv Yandex funkcije) HTTP-zahtjev koji sadrži detalje plaćanja, kao što su iznos, puno ime, broj telefona i e-mail platitelja. Želimo na neki način obraditi ove podatke, na primjer: provjeriti iznos, izvršiti odgovarajuće unose u bazu podataka, poslati korisnicima SMS и E-mail uz potvrdu o prijemu uplate i daljnje upute. Tako sebe mikroservis.

O tome kako od Yandex funkcije unose u bazu podataka Cloud Firestore već smo to pogledali u tutorijalu Alice se sjeća svega (i mislim da ćemo u budućnosti razmotriti primjer za drugu bazu podataka - Yandex baza podataka). O tome kako poslati korisnicima SMS i integrirati našu aplikaciju sa Yandex.Money - sredićemo to u bliskoj budućnosti. A sada da se pozabavimo slanjem pisama.

1. Kreirajte nalog u SendGrid

primjedbaSendGrid je samo moj izbor, koji sam napravio iz nekoliko razloga, a glavni je taj što imaju gotov SDK za Node.js. Možete odabrati bilo koju drugu uslugu slanja pošte.

Idemo dalje na stranicu za registraciju računa i tamo popunite formular za registraciju. Onda idemo na Komandna tabla, u navigacijskoj ploči odaberite API za e-poštu -> Vodič za integraciju, a na glavnom panelu - WebAPI i nazimaem dugme Izabrati. Sve je kao na slici:

Yandex funkcije šalju poštu

U sljedećem koraku biramo node.js:

Yandex funkcije šalju poštu

Sljedeće ćemo smisliti za naše API-naziv ključa (prikazuje se samo u konzoli na listi ključeva i nema nikakve veze sa našim budućim kodom; smislio sam nepropadljiv demo-api-ključ) i pritisnite dugme Kreiraj ključ:

Yandex funkcije šalju poštu

Ključ će biti generiran, mi ćemo ga kopirati i čuvati u najdubljem povjerenju. I imaćemo ekran sa dugmetom Potvrdite integraciju, kao na slici ispod, ali nećemo još kliknuti, nego prijeđimo na pisanje koda:

Yandex funkcije šalju poštu

2. Pisanje koda

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

Yandex funkcije šalju poštu

U redu #8 Moja e-pošta je tvrdo kodirana (i stoga stidljivo skrivena) - navedite svoju. U stvarnom životu ćemo primiti sve podatke (uključujući E-mail) od objekta događaj. Na primjer, ako je metoda POST objekt se šalje našoj funkciji korisnik sa poljem (imovinom) E-mail, vrijednost ovog polja se može dobiti ovako:

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

I ako se email adresa prosljeđuje funkciji pomoću metode GET, na primjer: https://functions.yandexcloud.net/123abc?[email protected]
vrijednost parametra E-mail možete dobiti ovako:

const email = event.queryStringParameters.email;

Da pogledamo šta je tačno sadržano u objektu događaj, možete kreirati najjednostavniji Yandex funkcija i iskrivi 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 ovdje.

Dakle, kreirajte direktorij projekta (na primjer, poštar), idite na njega, inicijalizirajte projekat, instalirajte zavisnosti:

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

Ovdje je potreban samo paket @sendgrid/mail. Paket email-validator provjerava validnost adrese e-pošte (kako nisam odmah pogodio?), ali ako smo sigurni u nju (već je provjeravana bez nas), ne moramo je instalirati (i, od naravno, ne moramo to provjeravati u kodu). Plasticna kesa dotenv dizajniran za čitanje zapisa iz datoteke .NS kao runtime varijable. Ali unutra Yandex funkcije Moguće je postaviti ove varijable direktno u runtime okruženje. Kako? - Pokazaću to ispod. Stoga paket dotenv ne možete ga instalirati i datoteku .NS - ne kreirajte, a istovremeno je kod u datoteci index.js ne mijenjaj. Ali ovdje smo instalirali ovaj paket, pa kreiramo fajlove index.js и .NS:

touch index.js
touch .env

U fajlu index.js napišite 22 reda koda prikazanog na slici iznad (samo u liniji #8 promijenite svoju e-poštu) i u datoteci .NS - (bez navodnika ili interpunkcije) navedite par - ključ ime/vrijednost APIkoju smo nedavno dobili u konzoli SendGrid:
SENDGRID_API_KEY=vaš-veoma-tajni-sendgrid-api-ključ

A ako želite manje posla, klonirajte spremište i instalirajte pakete:

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

U fajlu index.js, U redu #8 promijeni e-mail; kreirajte datoteku u korijenskom direktoriju .NS, a u njemu naznačite ime/vrijednost ključa API, kao što je prikazano malo iznad.

3. Deploy

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

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

Yandex funkcije šalju poštu

Kreiramo funkciju sa imenom... ispravno - poštar, u lijevom navigacijskom meniju ulazimo Urednik, popunite potrebna polja i pređite na karticu ZIP arhiva preuzmite našu arhivu mailer.zip:

Yandex funkcije šalju poštu

A evo i prethodno spomenute opcije za preuzimanje API ključ direktno ovdje, umjesto da kreirate datoteku u projektu .NS, i nemojte instalirati paket dotenv. Ali sve smo to već uradili, pa vam pokazujem samo za informaciju. Odnosno, nema potrebe za dupliranjem!

Yandex funkcije šalju poštu

Sada u gornjem desnom uglu kliknite na dugme Kreiraj verziju, i sačekajte nekoliko sekundi. Kada sve bude spremno, automatski prelazimo na sekciju pregled. Tamo ćemo omogućiti opciju javna funkcijatako da možete komunicirati s njim iz vanjskog svijeta.

Yandex funkcije šalju poštu

Nasuprot natpisa vidite plavu vezu Link za poziv? Kliknite na njega. Otvoriće se prazan prozor pretraživača... Ali sačekajte - primio sam e-poštu:

Yandex funkcije šalju poštu

Sada se možete vratiti na konzolu SendGrid, i pritisnite dugme Potvrdite integraciju. Sistem će sve provjeriti kroz svoje kanale i kao rezultat bi trebao vratiti ekran ovako:

Yandex funkcije šalju poštu

To je to, momci (i devojke, naravno) - sve je zaista vrlo jednostavno i elegantno! Biće još članaka. Ako neko želi da pročita nešto poput ovoga, pretplatite se da ne propustite.

4. Donacije

Yandex funkcije šalju poštu

izvor: www.habr.com

Dodajte komentar