Yandex funkcijas sūta pastu

Yandex funkcijas sūta pastu

Å odien veidosim t.s. Yandex funkcija (oficiālais nosaukums Yandex mākoņa funkcijas), kas sadarbojās ar pasta pakalpojumu SendGrid sÅ«tÄ«s ā€œziepesā€ mierÄ«gi guļoÅ”ajiem lietotājiem (jokoju - zinu, ka mēs visi esam pret surogātpastu).

Esmu arÄ« tradicionālo serveru pretinieks (bet bez fanātisma), un piekritējs t.s. serverless (bez servera) risinājumi, jo man nepatÄ«k (un es Ä«sti nezinu, kā) administrēt serverus un vēl jo vairāk maksāt par laiku, kad tie netiek ielādēti. Cita lieta ir funkcijas. Kāds viņus apkalpo bez manis, un es maksāju tikai par zvaniem. 2019. gada oktobra sākumā Yandex prezentēja savu Yandex mākoņa funkcijas - Ŕķiet pirmais Krievijas Federācijā serverless. Un Ä«paÅ”i jauki ir tas, ka Alises prasmēm tās parasti ir bez maksas, tāpēc kopÅ” tā laika tās ir manā perifēriskajā redzÄ“Å”anā. Bet sāksim jau.

Iedomāsimies Å”o scenāriju. JÅ«su pieteikums (piemēram, Alises prasme Atcerieties un aizmirstiet kas, starp citu, arÄ« darbojas Yandex funkcijas) piedāvā lietotājam iegādāties digitālo produktu, piemēram, papildu iespējas, un lietotājs veic maksājumu. Kaut kāda maksājumu sistēma (mulsinoÅ”i lÄ«dzÄ«ga Yandex) apstrādā maksājumu un nosÅ«ta to uz jÅ«su norādÄ«to adresi (un mums bÅ«s saite, lai piezvanÄ«tu Yandex funkcijas) HTTP-pieprasÄ«jums ar maksājuma informāciju, piemēram, summu, pilnu vārdu, maksātāja tālruņa numuru un e-pasta adresi. Mēs vēlamies Å”os datus kaut kādā veidā apstrādāt, piemēram: pārbaudÄ«t summu, veikt atbilstoÅ”us ierakstus datu bāzē, nosÅ«tÄ«t lietotājiem SMS Šø E-pasts ar maksājuma saņemÅ”anas apstiprinājumu un turpmākiem norādÄ«jumiem. Tātad pats mikropakalpojums.

Par to, kā no Yandex funkcijas veikt ierakstus datu bāzē Cloud Firestore mēs to jau apskatÄ«jām apmācÄ«bā Alise visu atceras (un nākotnē, es domāju, mēs apsvērsim piemēru citai datubāzei - Yandex datu bāze). Par to, kā nosÅ«tÄ«t lietotājiem SMS un integrējiet mÅ«su lietojumprogrammu ar Yandex.Money ā€” tuvākajā laikā mēs to atrisināsim. Tagad nodarbosimies tikai ar vēstuļu sÅ«tÄ«Å”anu.

1. Izveidojiet kontu SendGrid

PiezīmeSendGrid ir tikai mana izvēle, ko izdarīju vairāku iemeslu dēļ, no kuriem galvenais ir tas, ka viņiem ir gatavs Node.js SDK. Varat izvēlēties jebkuru citu pasta pakalpojumu.

Ejam tālāk uz konta reÄ£istrācijas lapu un tur aizpildiet reÄ£istrācijas veidlapu. Tad mēs ejam uz Mans Profils, navigācijas panelÄ« atlasiet E-pasta API ā€”> Integrācijas rokasgrāmata, un galvenajā panelÄ« - TÄ«mekļa API un nospiediet pogu izvēlēties. Viss ir kā bildē:

Yandex funkcijas sūta pastu

Nākamajā solī mēs izvēlamies Node.js:

Yandex funkcijas sūta pastu

Tālāk mēs nākam klajā ar mÅ«su API-atslēgas nosaukums (tiks parādÄ«ts tikai konsolē atslēgu sarakstā, un tam nav nekāda sakara ar mÅ«su nākotnes kodu; es tikko izdomāju nezÅ«doÅ”u demo-api-key) un nospiediet pogu Izveidot atslēgu:

Yandex funkcijas sūta pastu

Atslēga tiks Ä£enerēta, mēs to kopēsim un saglabāsim visdziļākajā pārliecÄ«bā. Un mums bÅ«s ekrāns ar pogu Pārbaudiet integrāciju, kā attēlā zemāk, bet mēs vēl nenoklikŔķināsim uz tā, bet pāriesim pie koda rakstÄ«Å”anas:

Yandex funkcijas sūta pastu

2. Koda rakstīŔana

Bet pats kods, kā redzat, ir smieklīgi mazs - 22 rindiņas!

Yandex funkcijas sūta pastu

Rindā #8 Mans e-pasts ir kodēts (un tāpēc kautrÄ«gi slēpts) ā€” lÅ«dzu, norādiet savu. Reālajā dzÄ«vē mēs saņemsim visus datus (ieskaitot e-pasts) no objekta notikums. Piemēram, ja metode POST objekts tiek nosÅ«tÄ«ts uz mÅ«su funkciju lietotājs ar lauku (Ä«paÅ”umu) e-pasts, Ŕī lauka vērtÄ«bu var iegÅ«t Ŕādi:

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

Un ja e-pasta adrese funkcijai tiek nodota, izmantojot metodi GET, piemēram: https://functions.yandexcloud.net/123abc?[email protected]
parametra vērtÄ«ba e-pasts jÅ«s to varat iegÅ«t Ŕādi:

const email = event.queryStringParameters.email;

Lai apskatītu, kas tieŔi ir ietverts objektā notikums, jūs varat izveidot visvienkārŔāko Yandex funkcija un pagrieziet to ar vaicājumiem:

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

Tas ir sīkāk (bet mazāk skaidri) apspriests oficiālajā dokumentācijā Ŕeit.

Tātad, izveidojiet projekta direktoriju (piemēram, pastnieks), dodieties uz to, inicializējiet projektu, instalējiet atkarības:

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

Å eit ir nepiecieÅ”ama tikai pakete @sendgrid/mail. Plastmasas maisiņŔ e-pasta apstiprinātājs pārbauda e-pasta adreses derÄ«gumu (kā es uzreiz neuzminēju?), bet, ja esam par to pārliecināti (tā jau ilgu laiku ir pārbaudÄ«ta bez mums), mums tā nav jāinstalē (un protams, mums tas nav jāpārbauda kodā). Plastmasas maisiņŔ dotenv paredzēts ierakstu nolasÄ«Å”anai no faila .env kā izpildlaika mainÄ«gie. Bet iekŔā Yandex funkcijas Å os mainÄ«gos ir iespējams ievietot tieÅ”i izpildlaika vidē. Kā? - Es to parādÄ«Å”u zemāk. Tāpēc iepakojums dotenv jÅ«s varat arÄ« neinstalēt to un failu .env - neveidojiet, un tajā paŔā laikā kods ir failā index.js nemaina. Bet Å”eit mēs esam instalējuÅ”i Å”o pakotni, tāpēc mēs veidojam failus index.js Šø .env:

touch index.js
touch .env

Failā index.js ierakstiet 22 koda rindiņas, kas parādītas ekrānuzņēmumā (tikai rindā #8 mainiet savu e-pastu) un failā .env - (bez pēdiņām un pieturzīmēm) norādiet pāri - atslēgas nosaukums/vērtība APIko nesen saņēmām konsolē SendGrid:
SENDGRID_API_KEY=jūsu-ļoti-secret-sendgrid-api-key

Un, ja vēlaties mazāk darba, klonējiet repozitoriju un instalējiet pakotnes:

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

Failā index.js, rindā #8 MainÄ«t e-pastu; izveidojiet failu saknes direktorijā .env, un tajā norādiet atslēgas nosaukumu/vērtÄ«bu API, kā parādÄ«ts tieÅ”i iepriekÅ”.

3. Izvietot

Vairāk vai mazāk skaidri un detalizēti par Yandex.Cloud un kā to tur novietot Yandex funkcijas aprakstÄ«ts manā rakstā Alise Bitriksas zemē - SÅ«tu uz Å”o valsti nezinātājus, un visiem pārējiem (un tiem, kas atgriezuÅ”ies) - pēc tam mazu komiksu (t.i. bilžu un teksta sēriju).

Izveidot rāvējslēdzējs-arhīvs (sauksim to, piemēram, mailer.zip), kurā mēs iekļaujam direktoriju mezgla_moduļi un faili .env, index.js - viss no mūsu projektu kataloga:

Yandex funkcijas sūta pastu

Mēs izveidojam funkciju ar nosaukumu... pareizi - pastnieks, mēs ieejam kreisajā navigācijas izvēlnē Redaktors, aizpildiet obligātos laukus un pārslēdzieties uz cilni ZIP arhīvs lejupielādējiet mūsu arhīvu mailer.zip:

Yandex funkcijas sūta pastu

Un Å”eit ir iepriekÅ” minētā lejupielādes iespēja API atslēga tieÅ”i Å”eit, nevis izveidojot failu projektā .env, un neinstalējiet pakotni dotenv. Bet mēs to visu jau esam izdarÄ«juÅ”i, tāpēc es to parādu tikai informācijai. Tas ir, nav nepiecieÅ”ams dublēt!

Yandex funkcijas sūta pastu

Tagad augŔējā labajā stÅ«rÄ« noklikŔķiniet uz pogas Izveidot versiju, un pagaidiet pāris sekundes. Kad viss bÅ«s gatavs, automātiski dosimies uz sadaļu Pārskatiet. Tur mēs iespējosim opciju sabiedriskā funkcijalai jÅ«s varētu mijiedarboties ar to no ārpasaules.

Yandex funkcijas sūta pastu

JÅ«s redzat zilo saiti pretÄ« uzrakstam Saite uz zvanu? NoklikŔķiniet uz tā. Atvērsies tukÅ”s pārlÅ«kprogrammas logs... Bet pagaidiet - es saņēmu e-pastu:

Yandex funkcijas sūta pastu

Tagad jÅ«s varat atgriezties konsolē SendGrid, un nospiediet pogu Pārbaudiet integrāciju. Sistēma visu pārbaudÄ«s caur saviem kanāliem, un rezultātā tai vajadzētu atgriezt Ŕādu ekrānu:

Yandex funkcijas sūta pastu

Tas tā, puiÅ”i (un meitenes, protams) - viss tieŔām ir ļoti vienkārÅ”i un eleganti! BÅ«s vēl raksti. Ja kādam ir interese lasÄ«t kaut ko lÄ«dzÄ«gu, abonējiet, lai nepalaistu garām.

4. Ziedojumi

Yandex funkcijas sūta pastu

Avots: www.habr.com

Pievieno komentāru