Ang mga function sa Yandex nagpadala ug mail

Ang mga function sa Yandex nagpadala ug mail

Karong adlawa atong mugnaon ang gitawag nga. Yandex function (opisyal nga ngalan Yandex Cloud Functions), nga nakigkunsabo sa serbisyo sa pagpadala SendGrid magpadala og "sabon" sa malinawon nga natulog nga mga tiggamit (pagbiaybiay lang - nahibal-an ko nga kitang tanan supak sa spam).

Usa usab ako ka kontra (apan walay panatisismo) sa tradisyonal nga mga tigtagad, ug usa ka tigpaluyo sa gitawag nga. serverless (wala'y server) nga mga solusyon, tungod kay dili ko ganahan (ug dili gyud ko kabalo kung unsaon) pagdumala sa mga server, ug labi pa, pagbayad sa oras kung wala sila gikarga. Ang laing butang mao ang mga function. Adunay nagserbisyo kanila nga wala ako, ug nagbayad lang ako sa mga tawag. Sa sinugdanan sa Oktubre 2019, gipresentar sa Yandex ang Yandex Cloud Functions - daw mao ang una sa Russian Federation serverless. Ug unsa ang labi ka nindot mao nga alang sa mga kahanas ni Alice sila sa kasagaran libre, mao nga naa sila sa akong peripheral nga panan-aw sukad niadto. Pero sugdan na nato.

Hunahunaa kini nga senaryo. Ang imong aplikasyon (pananglitan, kahanas ni Alice Hinumdomi ug Kalimti nga, sa dalan, usab nagtrabaho sa Yandex function) nagdapit sa tiggamit sa pagpalit sa usa ka digital nga produkto, pananglitan, dugang nga mga kapilian, ug ang user mobayad. Usa ka matang sa sistema sa pagbayad (makalibog nga susama sa Yandex.Money) nagproseso sa pagbayad ug ipadala kini sa adres nga imong gihatag (ug kami adunay link nga tawagan Yandex function) http-usa ka hangyo nga adunay mga detalye sa pagbayad, sama sa kantidad, kompleto nga ngalan, numero sa telepono ug email sa nagbayad. Gusto namon nga iproseso kini nga datos sa usa ka paagi, pananglitan: susihon ang kantidad, paghimo og angay nga mga entri sa database, ipadala sa mga tiggamit SMS ΠΈ Email uban ang pagkumpirma sa resibo sa pagbayad ug dugang nga mga panudlo. Busa imong kaugalingon microservice.

Mahitungod kung giunsa gikan Yandex function paghimo og mga entry sa database Cloud Firestore gitan-aw na namo kini sa tutorial Nahinumdom si Alice sa tanan (ug sa umaabot, sa akong hunahuna, atong tagdon ang usa ka pananglitan alang sa laing database - Yandex Database). Mahitungod sa kung giunsa ipadala sa mga tiggamit SMS ug i-integrate ang among aplikasyon sa Yandex.Kuwarta - Atong husayon ​​kini sa umaabot nga umaabot. Karon atubangon na lang nato ang pagpadala og mga sulat.

1. Paghimo og account sa SendGrid

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅Ang SendGrid mao ra ang akong gipili, nga akong gihimo sa daghang mga hinungdan, ang panguna mao nga sila adunay andam nga SDK alang sa Node.js. Makapili ka ug lain pang serbisyo sa pagpadala.

Magpadayon ta ngadto sa pahina sa pagparehistro sa account ug fill up sa registration form didto. Unya kita moadto sa dashboard, sa navigation panel pilia Email API -> Giya sa Paghiusa, ug sa main panel - WebAPI ug pindota ang buton Pagpili. Ang tanan ingon sa litrato:

Ang mga function sa Yandex nagpadala ug mail

Sa sunod nga lakang atong pilion Node.js:

Ang mga function sa Yandex nagpadala ug mail

Sunod atong buhaton para sa atong API-key nga ngalan (mapakita ra sa console sa lista sa mga yawe, ug wala’y labot sa among umaabot nga code; bag-o lang ako nga adunay usa ka dili madunot demo-api-key) ug i-press ang buton Paghimo Key:

Ang mga function sa Yandex nagpadala ug mail

Mabuhat ang yawe, kopyahon namon kini ug tipigan kini sa labing lawom nga pagsalig. Ug kita adunay usa ka screen nga adunay usa ka buton I-verify ang Integration, sama sa hulagway sa ubos, apan dili pa nato kini i-klik, apan magpadayon kita sa pagsulat sa code:

Ang mga function sa Yandex nagpadala ug mail

2. Kodigo sa pagsulat

Apan ang code mismo, ingon sa imong makita, kataw-anan nga gamay - 22 ka linya!

Ang mga function sa Yandex nagpadala ug mail

Sa linya #8 Ang akong email gi-hardcode (ug busa maulawon nga gitago) - palihug ipakita ang imo. Sa tinuud nga kinabuhi, madawat namon ang tanan nga datos (lakip ang email) gikan sa butang nga panghitabo. Pananglitan, kung ang pamaagi POST usa ka butang ang gipadala sa among function user uban sa uma (property) email, ang bili niini nga uma mahimong makuha sama niini:

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

Ug kung ang email address ipasa sa function gamit ang pamaagi GETsama pananglit: https://functions.yandexcloud.net/123abc?[email protected]
bili sa parameter email makuha nimo kini sama niini:

const email = event.queryStringParameters.email;

Aron tan-awon kung unsa gyud ang naa sa usa ka butang nga panghitabo, makahimo ka sa pinakasimple Yandex function ug i-twist kini sa mga pangutana:

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

Gihisgotan kini sa mas detalyado (apan dili kaayo klaro) sa opisyal nga dokumentasyon dinhi.

Busa, paghimo og direktoryo sa proyekto (pananglitan, mga mailers), adto niini, pagsugod sa proyekto, pag-instalar sa mga dependency:

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

Dinhi ang pakete ra ang gikinahanglan @sendgrid/mail. Plastic nga bag email-validator Gisusi ang email address alang sa pagkabalido (giunsa nga wala ako makatag-an dayon?), apan kung sigurado kami niini (nasusi na kini sa dugay nga panahon nga wala kami), dili na namon kinahanglan i-install kini (ug, sa Siyempre, dili na nato kinahanglan nga susihon kini sa code). Plastic nga bag dotenv gidisenyo sa pagbasa sa mga rekord gikan sa usa ka file .env ingon runtime variables. Apan sa Yandex function Posible nga ibutang kini nga mga variable direkta sa runtime nga palibot. Giunsa? - Ipakita ko kini sa ubos. Busa ang package dotenv dili usab nimo ma-install kini, ug ang file .env - ayaw paghimo, ug sa samang higayon ang code anaa sa file index.js ayaw usba. Apan dinhi among gi-install kini nga pakete, mao nga naghimo kami og mga file index.js ΠΈ .env:

touch index.js
touch .env

Sa file index.js pagsulat og 22 ka linya sa code nga gipakita sa screenshot sa ibabaw (sa linya lang #8 usba ang imong email), ug sa file .env - (walay bisan unsang mga kinutlo o punctuation) ipiho ang pares - yawe nga ngalan/bili APInga bag-o lang namon nadawat sa console SendGrid:
SENDGRID_API_KEY=imong-kaayo-sekreto-sendgrid-api-key

Ug kung gusto nimo ang gamay nga trabaho, i-clone ang repository ug i-install ang mga pakete:

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

Sa file index.js, sa linya #8 pagbag-o sa email; paghimo og file sa root directory .env, ug diha niini nagpakita sa ngalan/bili sa yawe API, ingon sa gipakita sa ibabaw.

3. Ipakaylap

Labaw o dili kaayo klaro ug detalyado bahin sa Yandex.Cloud ug unsaon pagbutang niini didto Yandex function gihulagway sa akong artikulo Alice sa yuta sa Bitrix - Gipadala nako ang mga ignorante niini nga nasud, ug alang sa tanan (ug kadtong mibalik) - unya usa ka gamay nga libro sa komiks (ie usa ka serye sa mga hulagway ug teksto).

Kami nagmugna zip-archive (tawgon nato kini, pananglitan, mailer.zip), diin among gilakip ang direktoryo node_modules ug mga file .env, index.js - tanan gikan sa among katalogo sa proyekto:

Ang mga function sa Yandex nagpadala ug mail

Naghimo kami usa ka function nga adunay ngalan ... husto - mga mailers, sa wala nga navigation menu kita mosulod Ang editor, sulati ang gikinahanglan nga mga natad, ug ibalhin ngadto sa tab ZIP archive i-download ang among archive mailer.zip:

Ang mga function sa Yandex nagpadala ug mail

Ug ania ang nahisgutan nga kapilian sa pag-download yawe sa API direkta dinhi, kay sa paghimo og file sa proyekto .env, ug ayaw i-install ang package dotenv. Apan nahimo na nato kining tanan, busa gipakita ko kini alang lamang sa impormasyon. Sa ato pa, dili na kinahanglang duplicate!

Ang mga function sa Yandex nagpadala ug mail

Karon sa ibabaw nga tuo nga suok i-klik ang buton Paghimo Bersyon, ug paghulat pipila ka segundo. Kung andam na ang tanan, awtomatiko namong moadto sa seksyon kinatibuk-ang paghulagway. Didto atong palihokon ang kapilian publiko nga gimbuhatonaron ikaw makig-uban niini gikan sa gawas nga kalibutan.

Ang mga function sa Yandex nagpadala ug mail

Nakita nimo ang asul nga sumpay sa atbang sa inskripsiyon Link sa pagtawag? I-klik kini. Usa ka walay sulod nga bintana sa browser ang moabli... Apan paghulat - Nakadawat ko og email:

Ang mga function sa Yandex nagpadala ug mail

Karon makabalik ka sa console SendGrid, ug pindota ang buton I-verify ang Integration. Susihon sa sistema ang tanan pinaagi sa mga kanal niini, ug ingon usa ka sangputanan kinahanglan nga ibalik ang usa ka screen nga sama niini:

Ang mga function sa Yandex nagpadala ug mail

Mao ra kana, mga lalaki (ug mga babaye, siyempre) - ang tanan yano ra kaayo ug elegante! Adunay dugang nga mga artikulo. Kung adunay interesado nga magbasa sama niini, pag-subscribe aron dili ka masipyat.

4. Mga donasyon

Ang mga function sa Yandex nagpadala ug mail

Source: www.habr.com

Idugang sa usa ka comment