Yandex functions xa ntawv

Yandex functions xa ntawv

Hnub no peb yuav tsim lub npe hu ua. Yandex muaj nuj nqi (official npe Yandex Cloud Functions), uas colluded nrog kev xa ntawv SendGrid yuav xa "xab npum" rau cov neeg siv pw tsaug zog (tsuas yog kidding - Kuv paub tias peb txhua tus tawm tsam spam).

Kuv kuj yog ib tug neeg sib tw (tab sis tsis muaj fanaticism) ntawm ib txwm servers, thiab ib tug txhawb nqa ntawm lub thiaj li hu. serverless (serverless) cov kev daws teeb meem, vim kuv tsis nyiam (thiab kuv tsis paub yuav ua li cas) tswj cov servers, thiab ntau dua li, them rau lub sijhawm thaum lawv tsis thauj khoom. Lwm qhov yog cov haujlwm. Ib tug neeg pab lawv yam tsis muaj kuv, thiab kuv tsuas yog them rau kev hu. Thaum pib lub Kaum Hlis 2019, Yandex nthuav qhia nws Yandex Cloud Functions - zoo li yog thawj zaug hauv Lavxias Federation serverless. Thiab qhov zoo tshwj xeeb tshaj yog rau Alice cov txuj ci lawv feem ntau yog dawb, yog li lawv tau nyob hauv kuv lub zeem muag peripheral txij li thaum. Tab sis cia peb pib lawm.

Cia peb xav txog qhov xwm txheej no. Koj daim ntawv thov (piv txwv li, Alice's txawj Nco thiab Tsis Nco uas, los ntawm txoj kev, kuj ua hauj lwm rau Yandex muaj nuj nqi) caw tus neeg siv los yuav cov khoom lag luam digital, piv txwv li, kev xaiv ntxiv, thiab tus neeg siv them nyiaj. Qee hom kev them nyiaj system (tsis meej pem zoo ib yam li Yandex.Money) ua cov nyiaj them poob haujlwm thiab xa mus rau qhov chaw nyob koj muab (thiab peb yuav muaj qhov txuas rau hu Yandex muaj nuj nqi) HTTP-ib daim ntawv thov uas muaj cov ntsiab lus them nyiaj, xws li tus nqi, lub npe tag nrho, tus lej xov tooj thiab email ntawm tus neeg them nyiaj. Peb xav ua cov ntaub ntawv no nyob rau hauv qee txoj kev, piv txwv li: xyuas tus nqi, ua kom tsim nyog nkag rau hauv cov ntaub ntawv, xa mus rau cov neeg siv SMS ΠΈ Email nrog kev pom zoo ntawm qhov tau txais kev them nyiaj thiab cov lus qhia ntxiv. Yog li koj tus kheej microservice.

Hais txog yuav ua li cas los ntawm Yandex muaj nuj nqi ua cov ntawv nkag hauv database Huab Tua Hluav Taws peb twb saib nws nyob rau hauv qhov kev qhia Alice nco ntsoov txhua yam (thiab yav tom ntej, kuv xav tias, peb yuav xav txog qhov piv txwv rau lwm cov ntaub ntawv - Yandex Database). Hais txog yuav xa mus rau cov neeg siv li cas SMS thiab integrate peb daim ntawv thov nrog Yandex.Money - Peb yuav txheeb nws tawm yav tom ntej. Tam sim no cia wb cia li nrog kev xa ntawv.

1. Tsim ib tus account hauv SendGrid

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅SendGrid tsuas yog kuv txoj kev xaiv, uas kuv tau ua rau ntau qhov laj thawj, qhov tseem ceeb yog tias lawv muaj SDK npaj txhij rau Node.js. Koj tuaj yeem xaiv lwm qhov kev pabcuam xa ntawv.

Cia peb mus mus rau nplooj ntawv sau npe tus account thiab sau daim foos sau npe rau ntawd. Ces peb mus dashboard, nyob rau hauv lub vaj huam sib luag navigation xaiv Email API -> Integration Guide, thiab ntawm lub ntsiab vaj huam sib luag - Lub Vev Xaib API Π½Π°ΠΆΠΈΠΌΠ°Π΅ΠΌ ΠΊΠ½ΠΎΠΏΠΊΡƒ xaiv. Txhua yam yog raws li hauv daim duab:

Yandex functions xa ntawv

Hauv kauj ruam tom ntej peb xaiv node.js:

Yandex functions xa ntawv

Tom ntej no peb tuaj rau peb API-key lub npe (yuav tsum tso tawm tsuas yog nyob rau hauv lub console nyob rau hauv daim ntawv teev cov yuam sij, thiab tsis muaj dab tsi ua rau peb yav tom ntej code; Kuv nyuam qhuav tuaj nrog imperishable demo-api-key) thiab nias lub pob Tsim tus yuam sij:

Yandex functions xa ntawv

Tus yuam sij yuav raug tsim tawm, peb yuav luam tawm thiab khaws cia hauv qhov kev ntseeg siab tob tshaj plaws. Thiab peb yuav muaj lub vijtsam nrog lub pob Tshawb xyuas kev koom ua ke, raws li hauv daim duab hauv qab no, tab sis peb yuav tsis nyem nws tsis tau, tab sis cia peb txav mus rau kev sau cov lej:

Yandex functions xa ntawv

2. Sau code

Tab sis txoj cai nws tus kheej, raws li koj tau pom, yog ridiculously me me - 22 kab!

Yandex functions xa ntawv

Hauv kab #8 Kuv tus email yog hardcoded (thiab yog li txaj muag zais) - thov qhia koj li. Hauv lub neej tiag tiag, peb yuav tau txais tag nrho cov ntaub ntawv (xws li email) los ntawm cov khoom kev tshwm sim. Piv txwv li, yog txoj kev NCEJ ib yam khoom raug xa mus rau peb txoj haujlwm cov neeg siv nrog field (property) email, tus nqi ntawm daim teb no tuaj yeem tau txais zoo li no:

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

Thiab yog hais tias tus email chaw nyob yog dhau mus rau lub luag haujlwm siv txoj kev TAU, piv txwv: https://functions.yandexcloud.net/123abc?[email protected]
tus nqi parameter email koj tuaj yeem tau txais nws zoo li no:

const email = event.queryStringParameters.email;

Txhawm rau saib seb qhov twg muaj nyob hauv ib qho khoom kev tshwm sim, koj tuaj yeem tsim qhov yooj yim tshaj plaws Yandex muaj nuj nqi thiab twist nws nrog cov lus nug:

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

Qhov no tau tham ntau yam ntxiv (tab sis tsis meej meej) hauv cov ntaub ntawv raug cai no.

Yog li, tsim ib qhov project directory (piv txwv li, xa ntawv), mus rau nws, pib qhov project, nruab dependencies:

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

Ntawm no tsuas yog lub pob yuav tsum tau @sendgrid/mail. Lub hnab yas email-validator tshawb xyuas email chaw nyob rau kev siv tau (ua li cas kuv tsis twv tam sim ntawd?), tab sis yog tias peb paub tseeb ntawm nws (nws twb tau kuaj xyuas lub sijhawm ntev tsis muaj peb), peb tsis tas yuav nruab nws (thiab, ntawm chav kawm, peb tsis tas yuav kuaj nws hauv qhov chaws). Lub hnab yas dotenv tsim los nyeem cov ntaub ntawv los ntawm cov ntaub ntawv .env raws li runtime variables. Tab sis nyob rau hauv Yandex muaj nuj nqi Nws muaj peev xwm muab cov hloov pauv no ncaj qha rau hauv qhov chaw khiav haujlwm. Yuav ua li cas? - Kuv mam li qhia hauv qab no. Yog li ntawd lub pob dotenv koj tuaj yeem tsis nruab nws, thiab cov ntaub ntawv .env - tsis txhob tsim, thiab tib lub sij hawm cov cai nyob rau hauv cov ntaub ntawv index.js tsis txhob hloov. Tab sis ntawm no peb tau teeb tsa lub pob no, yog li peb tsim cov ntaub ntawv index.js ΠΈ .env:

touch index.js
touch .env

Hauv cov ntaub ntawv index.js sau 22 kab ntawm cov lej qhia hauv lub screenshot saum toj no (tsuas yog hauv kab #8 hloov koj tus email), thiab hauv cov ntaub ntawv .env - (tsis muaj nqe lus los yog cov cim cim) qhia tus khub - lub npe tseem ceeb / tus nqi APIuas peb nyuam qhuav tau txais hauv console SendGrid:
SENDGRID_API_KEY=your-very-secret-sendgrid-api-key

Thiab yog tias koj xav tau kev ua haujlwm tsawg, clone lub repository thiab nruab cov pob khoom:

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

Hauv cov ntaub ntawv index.js, hauv kab #8 hloov email; tsim ib cov ntaub ntawv hauv paus directory .env, thiab hauv nws qhia lub npe / tus nqi ntawm tus yuam sij API, raws li qhia saum toj no.

3. Tso tawm

Ntau los yog tsawg kom meej meej thiab nthuav dav txog Yandex.Cloud thiab yuav muab tso rau ntawd li cas Yandex muaj nuj nqi piav nyob rau hauv kuv tsab xov xwm Alice hauv thaj av ntawm Bitrix - Kuv xa cov neeg uas tsis quav ntsej rau lub tebchaws no, thiab rau txhua tus neeg (thiab cov uas tau rov qab los) - tom qab ntawd ib phau ntawv me me (piv txwv li cov duab thiab cov ntawv nyeem).

Peb tsim zip-archive (cia peb hu nws, piv txwv li, xa ntawv.zip), uas peb suav nrog cov npe node_modules thiab cov ntaub ntawv .env, index.js - Txhua yam ntawm peb qhov project catalog:

Yandex functions xa ntawv

Peb tsim muaj nuj nqi nrog lub npe ... raug - xa ntawv, nyob rau sab laug navigation zaub mov peb nkag mus Tus editor, sau rau hauv cov teb xav tau, thiab hloov mus rau tab ZIP archive download peb archive xa ntawv.zip:

Yandex functions xa ntawv

Thiab ntawm no yog qhov kev xaiv yav dhau los hais kom rub tawm API key ncaj qha ntawm no, tsis yog tsim cov ntaub ntawv hauv qhov project .env, thiab tsis txhob nruab lub pob dotenv. Tab sis peb twb tau ua tag nrho cov no, yog li kuv qhia nws tsuas yog rau cov ntaub ntawv. Uas yog, tsis muaj yuav tsum tau duplicate!

Yandex functions xa ntawv

Tam sim no nyob rau sab xis saum toj ces nyem lub pob Tsim version, thiab tos ob peb feeb. Thaum txhua yam npaj txhij, peb yuav cia li mus rau ntu txheej txheem cej luam. Nyob ntawd peb yuav pab tau qhov kev xaiv Public functionkom koj tuaj yeem cuam tshuam nrog nws los ntawm lub ntiaj teb sab nraud.

Yandex functions xa ntawv

Koj pom qhov txuas xiav rov qab cov ntawv sau Hu rau link? Nyem rau nws. Ib qhov browser khoob yuav qhib... Tab sis tos - Kuv tau txais email:

Yandex functions xa ntawv

Tam sim no koj tuaj yeem rov qab mus rau console SendGrid, thiab nias lub pob Tshawb xyuas kev koom ua ke. Lub kaw lus yuav xyuas txhua yam los ntawm nws cov channel, thiab vim li ntawd nws yuav tsum rov qab lub vijtsam zoo li no:

Yandex functions xa ntawv

Qhov ntawd yog nws, cov txiv neej (thiab cov ntxhais, tau kawg) - txhua yam yog qhov yooj yim heev thiab muaj kuab heev! Yuav muaj ntau cov lus. Yog leej twg xav nyeem tej yam zoo li no, subscribe kom koj tsis txhob plam.

4. Nyiaj pub dawb

Yandex functions xa ntawv

Tau qhov twg los: www.hab.com

Ntxiv ib saib