Il-funzjonijiet Yandex jibagħtu posta

Il-funzjonijiet Yandex jibagħtu posta

Illum se noħolqu l-hekk imsejħa. Funzjoni Yandex (isem uffiċjali Funzjonijiet ta' Yandex Cloud), li ikkonfliġġew mas-servizz tal-posta SendGrid se tibgħat "sapun" lill-utenti li jorqdu b'mod paċifiku (jiċċajta - naf li aħna lkoll kontra l-ispam).

Jien ukoll avversarju (iżda mingħajr fanatiżmu) tas-servers tradizzjonali, u sostenitur tal-hekk imsejħa. serverless soluzzjonijiet (mingħajr server), għax ma nħobbx (u ma tantx naf kif) namministra servers, u aktar u aktar, inħallas għall-ħin meta ma jkunux mgħobbija. Ħaġa oħra hija l-funzjonijiet. Xi ħadd jagħtihom servizz mingħajri, u jien inħallas biss għal telefonati. Fil-bidu ta 'Ottubru 2019, Yandex ippreżenta tiegħu Funzjonijiet ta' Yandex Cloud - jidher li huwa l-ewwel fil-Federazzjoni Russa serverless. U dak li hu speċjalment sabiħ huwa li għall-ħiliet ta 'Alice huma ġeneralment ħielsa, għalhekk ilhom fil-viżjoni periferali tiegħi minn dakinhar. Imma ejja nibdew diġà.

Ejja nimmaġinaw dan ix-xenarju. L-applikazzjoni tiegħek (per eżempju, il-ħila ta' Alice Ftakar u Tinsa li, mill-mod, jaħdem ukoll fuq funzjonijiet Yandex) jistieden lill-utent biex jixtri prodott diġitali, pereżempju, għażliet addizzjonali, u l-utent jagħmel ħlas. Xi tip ta’ sistema ta’ ħlas (b’mod konfuż simili għal Yandex.Money) tipproċessa l-ħlas u tibgħatha fl-indirizz li tipprovdi (u se jkollna link biex inċemplu funzjonijiet Yandex) HTTP-talba li jkun fiha d-dettalji tal-ħlas, bħall-ammont, l-isem sħiħ, in-numru tat-telefon u l-email ta’ min iħallas. Irridu nipproċessaw din id-dejta b'xi mod, pereżempju: iċċekkja l-ammont, tagħmel daħliet xierqa fid-database, ibgħat lill-utenti SMS и email b'konferma tal-wasla tal-ħlas u struzzjonijiet ulterjuri. Allura lilek innifsek mikroservizz.

Dwar kif minn funzjonijiet Yandex tagħmel daħliet fid-database Cloud Firestore diġà ħares lejha fit-tutorja Alice tiftakar kollox (u fil-futur, naħseb, ser nikkunsidraw eżempju għal database oħra - Database Yandex). Dwar kif tibgħat lill-utenti SMS u jintegraw l-applikazzjoni tagħna ma Yandex.Flus — aħna ser issolviha fil-futur qarib. Issa ejja nittrattaw biss li tibgħat ittri.

1. Oħloq kont f'SendGrid

InnotaSendGrid huwa biss l-għażla tiegħi, li għamilt għal diversi raġunijiet, il-waħda ewlenija hija li għandhom SDK lesti għal Node.js. Tista' tagħżel kwalunkwe servizz ta' posta ieħor.

Perekhodim tiegħi għall-paġna tar-reġistrazzjoni tal-kont u imla l-formola ta' reġistrazzjoni hemmhekk. Imbagħad immorru dashboard, fil-pannell tan-navigazzjoni agħżel Email API -> Gwida għall-Integrazzjoni, u fuq il-pannell prinċipali - WebAPI u agħfas il-buttuna Agħżel. Kollox huwa bħal fl-istampa:

Il-funzjonijiet Yandex jibagħtu posta

Fil-pass li jmiss nagħżlu Node.js:

Il-funzjonijiet Yandex jibagħtu posta

Sussegwentement noħorġu għal tagħna API-isem taċ-ċavetta (se jintwera biss fil-console fil-lista ta 'ċwievet, u m'għandu x'taqsam xejn mal-kodiċi futur tagħna; I biss ħarġet bi imperishable demo-api-key) u agħfas il-buttuna Oħloq Ċavetta:

Il-funzjonijiet Yandex jibagħtu posta

Iċ-ċavetta tiġi ġġenerata, aħna nikkopjaha u nżommuha fl-aktar kunfidenza profonda. U se jkollna skrin b'buttuna Ivverifika l-Integrazzjoni, bħal fl-istampa hawn taħt, iżda għadna mhux se nikklikkjawha, imma ejja nkomplu biex niktbu l-kodiċi:

Il-funzjonijiet Yandex jibagħtu posta

2. Kodiċi tal-kitba

Iżda l-kodiċi innifsu, kif tistgħu taraw, huwa żgħir b'mod redikoli - 22 linja!

Il-funzjonijiet Yandex jibagħtu posta

F'konformità #8 L-email tiegħi huwa hardcoded (u għalhekk mistħi) - jekk jogħġbok indika tiegħek. Fil-ħajja reali, aħna se nirċievu d-dejta kollha (inkluż email) minn oġġett avveniment. Per eżempju, jekk il-metodu POST oġġett jintbagħat lill-funzjoni tagħna utent b'għalqa (proprjetà) email, il-valur ta' dan il-qasam jista' jinkiseb bħal dan:

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

U jekk l-indirizz tal-email jiġi mgħoddi lill-funzjoni bl-użu tal-metodu IKOLLOKper eżempju: https://functions.yandexcloud.net/123abc?email=user@example.com
parametru znachenie email tista 'tikseb hekk:

const email = event.queryStringParameters.email;

Biex tagħti ħarsa lejn x'inhu eżattament f'oġġett avveniment, tista 'toħloq l-aktar sempliċi Funzjoni Yandex u dawwarha b'mistoqsijiet:

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

Dan huwa diskuss f'aktar dettall (iżda b'mod inqas ċar) fid-dokumentazzjoni uffiċjali hawn.

Allura, oħloq direttorju tal-proġett (per eżempju, mailer), mur lejha, ​​inizjalizza l-proġett, installa dipendenzi:

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

Hawnhekk huwa meħtieġ il-pakkett biss @sendgrid/posta. Borża tal-plastik email-validator jiċċekkja l-indirizz tal-email għall-validità (kif ma bdejtx mill-ewwel?), imma jekk aħna ċerti minnu (diġà ġie ċċekkjat għal żmien twil mingħajrna), m’għandniex għalfejn ninstallawh (u, ta’ naturalment, m'għandniex għalfejn niċċekkjawha fil-kodiċi). Borża tal-plastik dotenv iddisinjat biex jaqra rekords minn fajl .a V bħala varjabbli runtime. Imma fi funzjonijiet Yandex Huwa possibbli li dawn il-varjabbli jitqiegħdu direttament fl-ambjent tar-runtime. Kif? - Ser nuriha hawn taħt. Għalhekk il-pakkett dotenv inti tista wkoll ma tinstallah, u l-fajl .a V - toħloqx, u fl-istess ħin il-kodiċi jinsab fil-fajl index.js tbiddilx. Imma hawnhekk installajna dan il-pakkett, għalhekk noħolqu fajls index.js и .a V:

touch index.js
touch .env

Fil-fajl index.js ikteb 22 linja ta 'kodiċi murija fil-screenshot ta' hawn fuq (biss fil-linja #8 ibdel l-email tiegħek), u fil-fajl .a V - (mingħajr kwotazzjonijiet jew punteġġjatura) speċifika l-par - isem/valur taċ-ċavetta APIli reċentement irċevejna fil-console SendGrid:
SENDGRID_API_KEY=sendgrid-api-key-sigriet-ħafna tiegħek

U jekk trid inqas xogħol, kklona r-repożitorju u installa l-pakketti:

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

Fil-fajl index.js, f'konformità #8 ibdel l-email; toħloq fajl fid-direttorju tal-għeruq .a V, u fiha indika l-isem/valur taċ-ċavetta API, kif muri eżatt fuq.

3. Skjerament

Xi ftit jew wisq ċar u fid-dettall dwar Yandex.Cloud u kif tpoġġiha hemm funzjonijiet Yandex deskritt fl-artiklu tiegħi Alice fl-Art ta’ Bitrix - Nibgħat lill-injorant f'dan il-pajjiż, u għal kulħadd (u dawk li rritornaw) - imbagħad ktieb tal-komiks żgħir (jiġifieri sensiela ta 'stampi u test).

Qed nistabbilixxi zip-arkivju (ejja nsejħulha, pereżempju, mailer.zip), li fih ninkludu d-direttorju node_modules u fajls .env, index.js - kollox mill-katalgu tal-proġett tagħna:

Il-funzjonijiet Yandex jibagħtu posta

Noħolqu funzjoni bl-isem... b'mod korrett - mailer, fil-menu tan-navigazzjoni tax-xellug aħna nidħlu L-editur, imla l-oqsma meħtieġa, u aqleb għat-tab Arkivju ZIP niżżel l-arkivju tagħna mailer.zip:

Il-funzjonijiet Yandex jibagħtu posta

U hawn hija l-għażla msemmija qabel biex tniżżel Ċavetta API direttament hawn, aktar milli toħloq fajl fil-proġett .a V, u tinstallax il-pakkett dotenv. Imma diġà għamilna dan kollu, għalhekk qed nurih biss għall-informazzjoni. Jiġifieri m'hemmx għalfejn tidduplika!

Il-funzjonijiet Yandex jibagħtu posta

Issa fil-kantuniera ta 'fuq tal-lemin ikklikkja l-buttuna Oħloq verżjoni, u stenna ftit sekondi. Meta kollox ikun lest, awtomatikament immorru fis-sezzjoni Reviżjoni. Hemmhekk se nippermettu l-għażla Funzjoni pubblikasabiex tkun tista’ tinteraġixxi magħha mid-dinja ta’ barra.

Il-funzjonijiet Yandex jibagħtu posta

Tara l-link blu biswit l-iskrizzjoni Sejħa link? Ikklikkjaha. Tiftaħ tieqa tal-browser vojta... Imma stenna - irċevejt email:

Il-funzjonijiet Yandex jibagħtu posta

Issa tista 'terġa' lura għall-console SendGrid, u agħfas il-buttuna Ivverifika l-Integrazzjoni. Is-sistema se tiċċekkja kollox permezz tal-kanali tagħha, u bħala riżultat għandha tirritorna skrin bħal dan:

Il-funzjonijiet Yandex jibagħtu posta

Dak hu, guys (u bniet, ovvjament) - kollox huwa verament sempliċi ħafna u eleganti! Se jkun hemm aktar artikli. Jekk xi ħadd hu interessat li jaqra xi ħaġa bħal din, abbona sabiex ma titlifx.

4. Donazzjonijiet

Il-funzjonijiet Yandex jibagħtu posta

Sors: www.habr.com

Żid kumment