Mae swyddogaethau Yandex yn anfon post

Mae swyddogaethau Yandex yn anfon post

Heddiw byddwn yn creu yr hyn a elwir. Swyddogaeth Yandex (enw swyddogol Swyddogaethau Cwmwl Yandex), a oedd yn cydgynllwynio â'r gwasanaeth postio SendGrid yn anfon “sebon” at ddefnyddwyr sy'n cysgu'n dawel (dim ond twyllo - dwi'n gwybod ein bod ni i gyd yn erbyn sbam).

Rwyf hefyd yn wrthwynebydd (ond heb ffanatigiaeth) o weinyddion traddodiadol, ac yn gefnogwr i'r hyn a elwir. di-weinydd atebion (di-weinydd), oherwydd dydw i ddim yn hoffi (a dwi ddim yn gwybod sut i) weinyddu gweinyddwyr, a hyd yn oed yn fwy felly, talu am yr amser pan nad ydyn nhw'n cael eu llwytho. Peth arall yw swyddogaethau. Mae rhywun yn eu gwasanaethu heb i mi, a dim ond am alwadau rwy'n talu. Ar ddechrau mis Hydref 2019, cyflwynodd Yandex ei Swyddogaethau Cwmwl Yandex - mae'n ymddangos mai dyma'r cyntaf yn Ffederasiwn Rwsia di-weinydd. A’r hyn sy’n arbennig o braf yw eu bod nhw’n rhad ac am ddim yn gyffredinol ar gyfer sgiliau Alice, felly maen nhw wedi bod yn fy ngweledigaeth ymylol ers hynny. Ond gadewch i ni ddechrau yn barod.

Gadewch i ni ddychmygu'r senario hwn. Eich cais (er enghraifft, sgil Alice Cofiwch ac Anghofiwch sydd, gyda llaw, hefyd yn gweithio ar Swyddogaethau Yandex) yn gwahodd y defnyddiwr i brynu cynnyrch digidol, er enghraifft, opsiynau ychwanegol, ac mae'r defnyddiwr yn gwneud taliad. Rhyw fath o system dalu (yn ddryslyd o debyg i Yandex.Money) prosesu’r taliad a’i anfon i’r cyfeiriad a ddarperir gennych (a bydd gennym ddolen i’w ffonio Swyddogaethau Yandex) HTTP- cais yn cynnwys manylion talu, megis swm, enw llawn, rhif ffôn ac e-bost y talwr. Rydym am brosesu'r data hwn mewn rhyw ffordd, er enghraifft: gwirio'r swm, gwneud cofnodion priodol yn y gronfa ddata, anfon at ddefnyddwyr SMS и E-bost gyda chadarnhad o dderbyn taliad a chyfarwyddiadau pellach. Felly eich hun meicrowasanaeth.

Ynglŷn â sut o Swyddogaethau Yandex gwneud cofnodion yn y gronfa ddata Storfa Dân Cwmwl rydym eisoes wedi edrych arno yn y tiwtorial Mae Alice yn cofio popeth (ac yn y dyfodol, rwy'n meddwl, byddwn yn ystyried enghraifft ar gyfer cronfa ddata arall - Cronfa Ddata Yandex). Ynglŷn â sut i anfon at ddefnyddwyr SMS ac integreiddio ein cais gyda Yandex.Money - byddwn yn ei ddatrys yn y dyfodol agos. Nawr gadewch i ni ddelio ag anfon llythyrau.

1. Creu cyfrif yn SendGrid

NodynFy newis yn unig yw SendGrid, a wneuthum am sawl rheswm, a'r prif un oedd bod ganddynt SDK parod ar gyfer Node.js. Gallwch ddewis unrhyw wasanaeth postio arall.

Gadewch i ni symud ymlaen i'r dudalen cofrestru cyfrif a llenwi'r ffurflen gofrestru yno. Yna awn i dangosfwrdd, yn y panel llywio dewiswch E-bost API -> Canllaw Integreiddio, ac ar y prif banel - API Gwe a gwasgwch y botwm Dewiswch. Mae popeth fel yn y llun:

Mae swyddogaethau Yandex yn anfon post

Yn y cam nesaf rydym yn dewis Node.js:

Mae swyddogaethau Yandex yn anfon post

Nesaf rydym yn dod i fyny gyda ar gyfer ein API-enw'r allwedd (bydd yn cael ei arddangos yn y consol yn y rhestr o allweddi yn unig, ac nid oes ganddo unrhyw beth i'w wneud â'n cod yn y dyfodol; fe wnes i feddwl am anfarwol demo-api-allwedd) a gwasgwch y botwm Creu Allwedd:

Mae swyddogaethau Yandex yn anfon post

Bydd yr allwedd yn cael ei gynhyrchu, byddwn yn ei gopïo a'i gadw'n gwbl gyfrinachol. A bydd gennym sgrin gyda botwm Dilysu Integreiddio, fel yn y llun isod, ond ni fyddwn yn ei glicio eto, ond gadewch i ni symud ymlaen i ysgrifennu'r cod:

Mae swyddogaethau Yandex yn anfon post

2. Côd ysgrifennu

Ond mae'r cod ei hun, fel y gwelwch, yn chwerthinllyd o fach - 22 llinell!

Mae swyddogaethau Yandex yn anfon post

Mewn llinell #8 Mae fy e-bost wedi'i god caled (ac felly wedi'i guddio'n swil) - nodwch eich un chi. Mewn bywyd go iawn, byddwn yn derbyn yr holl ddata (gan gynnwys e-bost) o wrthddrych digwyddiad. Er enghraifft, os yw'r dull SWYDD anfonir gwrthrych i'n swyddogaeth defnyddiwr gyda chae (eiddo) e-bost, gellir cael gwerth y maes hwn fel hyn:

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

Ac os yw'r cyfeiriad e-bost yn cael ei drosglwyddo i'r swyddogaeth gan ddefnyddio'r dull GET, er enghraifft: https://functions.yandexcloud.net/123abc?[email protected]
gwerth paramedr e-bost gallwch ei gael fel hyn:

const email = event.queryStringParameters.email;

Edrych ar beth yn union sydd wedi'i gynnwys mewn gwrthrych digwyddiad, gallwch chi greu'r symlaf Swyddogaeth Yandex a'i droelli ag ymholiadau:

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

Trafodir hyn yn fanylach (ond yn llai clir) yn y ddogfennaeth swyddogol yma.

Felly, creu cyfeiriadur prosiect (er enghraifft, postwyr), ewch ato, cychwyn y prosiect, gosod dibyniaethau:

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

Yma dim ond y pecyn sydd ei angen @sendgrid/mail. Bag plastig e-bost-ddilyswr yn gwirio dilysrwydd y cyfeiriad e-bost (sut na wnes i ddyfalu ar unwaith?), ond os ydym yn sicr ohono (mae eisoes wedi'i wirio ers amser maith hebom ni), nid oes rhaid i ni ei osod (ac, o wrth gwrs, nid oes rhaid i ni ei wirio yn y cod). Bag plastig dotenv wedi'i gynllunio i ddarllen cofnodion o ffeil .env fel newidynnau amser rhedeg. Ond yn Swyddogaethau Yandex Mae'n bosibl gosod y newidynnau hyn yn uniongyrchol i'r amgylchedd amser rhedeg. Sut? - Byddaf yn ei ddangos isod. Felly y pecyn dotenv ni allwch ei osod hefyd, a'r ffeil .env - peidiwch â chreu, ac ar yr un pryd mae'r cod yn y ffeil mynegai.js peidiwch â newid. Ond yma rydym wedi gosod y pecyn hwn, felly rydym yn creu ffeiliau mynegai.js и .env:

touch index.js
touch .env

Mewn ffeil mynegai.js ysgrifennwch 22 llinell o god a ddangosir yn y sgrinlun uchod (dim ond yn y llinell #8 newid eich e-bost), ac yn y ffeil .env - (heb unrhyw ddyfyniadau nac atalnodi) nodwch y pâr - enw/gwerth allweddol APIa gawsom yn ddiweddar yn y consol SendGrid:
SENDGRID_API_KEY=eich-allwedd-gyfrinachol iawn-sendgrid-api

Ac os ydych chi eisiau llai o waith, cloniwch yr ystorfa a gosodwch y pecynnau:

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

Mewn ffeil mynegai.js, mewn llinell #8 newid e-bost; creu ffeil yn y cyfeiriadur gwraidd .env, ac ynddo nodwch enw/gwerth yr allwedd API, fel y dangosir ychydig uchod.

3. Deploy

Mwy neu lai yn glir ac yn fanwl am Yandex.Cloud a sut i'w osod yno Swyddogaethau Yandex a ddisgrifir yn fy erthygl Alice yng ngwlad Bitrix - Rwy'n anfon y rhai sy'n anwybodus i'r wlad hon, ac at bawb arall (a'r rhai sydd wedi dychwelyd) - yna llyfr comic bach (h.y. cyfres o luniau a thestun).

Rydym yn creu zip-archive (gadewch i ni ei alw, er enghraifft, mailer.zip), yn yr hwn yr ydym yn cynnwys y cyfeiriadur nod_modiwlau a ffeiliau .env, mynegai.js - popeth o'n catalog prosiect:

Mae swyddogaethau Yandex yn anfon post

Rydym yn creu ffwythiant gyda'r enw... yn gywir - postwyr, yn y ddewislen llywio chwith rydym yn mynd i mewn Y golygydd, llenwch y meysydd gofynnol, a newidiwch i'r tab Archif ZIP lawrlwythwch ein harchif mailer.zip:

Mae swyddogaethau Yandex yn anfon post

A dyma'r opsiwn a grybwyllwyd yn flaenorol i'w lawrlwytho Allwedd API yn uniongyrchol yma, yn hytrach na chreu ffeil yn y prosiect .env, a pheidiwch â gosod y pecyn dotenv. Ond rydyn ni eisoes wedi gwneud hyn i gyd, felly rydw i'n ei ddangos er gwybodaeth yn unig. Hynny yw, nid oes angen dyblygu!

Mae swyddogaethau Yandex yn anfon post

Nawr yn y gornel dde uchaf cliciwch y botwm Creu Fersiwn, ac aros ychydig eiliadau. Pan fydd popeth yn barod, byddwn yn mynd i'r adran yn awtomatig Adolygu. Yma byddwn yn galluogi'r opsiwn swyddogaeth gyhoeddusfel y gallwch ryngweithio ag ef o'r byd y tu allan.

Mae swyddogaethau Yandex yn anfon post

Rydych chi'n gweld y ddolen las gyferbyn â'r arysgrif Dolen i'r alwad? Cliciwch arno. Bydd ffenestr bori wag yn agor... Ond arhoswch - derbyniais e-bost:

Mae swyddogaethau Yandex yn anfon post

Nawr gallwch chi ddychwelyd i'r consol SendGrid, a gwasgwch y botwm Dilysu Integreiddio. Bydd y system yn gwirio popeth trwy ei sianeli, ac o ganlyniad dylai ddychwelyd sgrin fel hyn:

Mae swyddogaethau Yandex yn anfon post

Dyna ni, bois (a merched, wrth gwrs) - mae popeth yn syml iawn ac yn gain! Bydd mwy o erthyglau. Os oes gan unrhyw un ddiddordeb mewn darllen rhywbeth fel hyn, tanysgrifiwch fel nad ydych chi'n colli allan.

4. Rhoddion

Mae swyddogaethau Yandex yn anfon post

Ffynhonnell: hab.com

Ychwanegu sylw