Yandex-funksies stuur e-pos

Yandex-funksies stuur e-pos

Vandag sal ons die sg. Yandex funksie (amptelike naam Yandex Wolk Funksies), wat met die posdiens saamgespan het SendGrid sal "seep" aan rustig slapende gebruikers stuur (net 'n grap - ek weet ons is almal teen strooipos).

Ek is ook 'n teenstander (maar sonder fanatisme) van tradisionele bedieners, en 'n voorstander van die sg. serverless (bedienerlose) oplossings, want ek hou nie van (en ek weet nie regtig hoe om) bedieners te administreer nie, en selfs meer nog, betaal vir die tyd wanneer hulle nie gelaai is nie. Nog iets is funksies. Iemand bedien hulle sonder my, en ek betaal net vir oproepe. Aan die begin van Oktober 2019 het Yandex sy Yandex Wolk Funksies - blyk die eerste in die Russiese Federasie te wees serverless. En wat veral lekker is, is dat vir Alice se vaardighede hulle oor die algemeen gratis is, so hulle is sedertdien in my perifere visie. Maar kom ons begin reeds.

Kom ons stel ons hierdie scenario voor. Jou toepassing (byvoorbeeld, Alice se vaardigheid Onthou en vergeet wat terloops ook op werk Yandex funksies) nooi die gebruiker om 'n digitale produk te koop, byvoorbeeld bykomende opsies, en die gebruiker maak 'n betaling. Een of ander betalingsstelsel (verwarrend soortgelyk aan Yandex) verwerk die betaling en stuur dit na die adres wat jy verskaf (en ons sal 'n skakel hê om te bel Yandex funksies) HTTP-'n versoek wat betalingsbesonderhede bevat, soos bedrag, volle naam, telefoonnommer en e-pos van die betaler. Ons wil hierdie data op een of ander manier verwerk, byvoorbeeld: kontroleer die bedrag, maak toepaslike inskrywings in die databasis, stuur aan gebruikers SMS и E-posadres met bevestiging van ontvangs van betaling en verdere instruksies. So jouself mikrodiens.

Oor hoe van Yandex funksies maak inskrywings in die databasis Wolk Firestore ons het reeds daarna in die tutoriaal gekyk Alice onthou alles (en in die toekoms, dink ek, sal ons 'n voorbeeld vir 'n ander databasis oorweeg - Yandex-databasis). Oor hoe om aan gebruikers te stuur SMS en integreer ons toepassing met Yandex.Money - ons sal dit in die nabye toekoms uitsorteer. Kom ons gaan nou net oor die stuur van briewe.

1. Skep 'n rekening in SendGrid

Let daaropSendGrid is net my keuse, wat ek om verskeie redes gemaak het, die belangrikste is dat hulle 'n klaargemaakte SDK vir Node.js het. Jy kan enige ander posdiens kies.

Kom ons gaan aan na die rekeningregistrasiebladsy en vul die registrasievorm daar in. Dan gaan ons na Dashboard, kies in die navigasiepaneel E-pos API -> Integrasiegids, en op die hoofpaneel - Web-API en нажимаем кнопку Kies. Alles is soos op die foto:

Yandex-funksies stuur e-pos

In die volgende stap kies ons Node.js:

Yandex-funksies stuur e-pos

Volgende kom ons met vir ons API-sleutelnaam (sal slegs in die konsole in die lys sleutels vertoon word, en het niks met ons toekomstige kode te doen nie; ek het pas met 'n onverganklike vorendag gekom demo-api-sleutel) en druk die knoppie Skep sleutel:

Yandex-funksies stuur e-pos

Die sleutel sal gegenereer word, ons sal dit kopieer en dit in die diepste vertroue hou. En ons sal 'n skerm met 'n knoppie hê Verifieer integrasie, soos in die prentjie hieronder, maar ons sal nog nie daarop klik nie, maar kom ons gaan voort om die kode te skryf:

Yandex-funksies stuur e-pos

2. Skryf kode

Maar die kode self, soos jy kan sien, is belaglik klein - 22 reëls!

Yandex-funksies stuur e-pos

In lyn #8 My e-pos is hardkodeer (en dus skaam weggesteek) - dui asseblief joune aan. In die werklike lewe sal ons al die data ontvang (insluitend e-pos) vanaf voorwerp gebeurtenis. Byvoorbeeld, as die metode POS 'n voorwerp word na ons funksie gestuur gebruiker met veld (eiendom) e-pos, kan die waarde van hierdie veld soos volg verkry word:

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

En as die e-posadres na die funksie oorgedra word met behulp van die metode KRY, byvoorbeeld: https://functions.yandexcloud.net/123abc?[email protected]
parameter waarde e-pos jy kan dit so kry:

const email = event.queryStringParameters.email;

Om te kyk na wat presies in 'n voorwerp vervat is gebeurtenis, kan jy die eenvoudigste skep Yandex funksie en draai dit met navrae:

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

Dit word in meer besonderhede (maar minder duidelik) in die amptelike dokumentasie bespreek hier.

Skep dus 'n projekgids (byvoorbeeld, posseerder), gaan daarna, inisialiseer die projek, installeer afhanklikhede:

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

Hier word slegs die pakket benodig @sendgrid/pos. Plastiese sak e-pos-valideerder kontroleer die e-posadres vir geldigheid (hoe het ek nie dadelik geraai nie?), maar as ons seker is daarvan (dit is al lankal sonder ons nagegaan), hoef ons dit nie te installeer nie (en, van ons hoef dit natuurlik nie in die kode na te gaan nie). Plastiese sak dotenv ontwerp om rekords van 'n lêer te lees .a V as looptydveranderlikes. Maar in Yandex funksies Dit is moontlik om hierdie veranderlikes direk in die runtime-omgewing te plaas. Hoe? - Ek sal dit hieronder wys. Daarom die pakket dotenv jy kan dit ook nie installeer nie, en die lêer .a V - moenie skep nie, en terselfdertyd is die kode in die lêer index.js Moenie verander nie. Maar hier het ons hierdie pakket geïnstalleer, so ons skep lêers index.js и .a V:

touch index.js
touch .env

In lêer index.js skryf 22 reëls kode wat in die skermkiekie hierbo gewys word (slegs in die reël #8 verander jou e-pos), en in die lêer .a V - (sonder enige aanhalingstekens of leestekens) spesifiseer die paar - sleutelnaam/waarde APIwat ons onlangs in die konsole ontvang het SendGrid:
SENDGRID_API_KEY=jou-baie-geheime-sendgrid-api-sleutel

En as jy minder werk wil hê, kloon die bewaarplek en installeer die pakkette:

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

In lêer index.js, in lyn #8 Verander e-pos; skep 'n lêer in die wortelgids .a V, en dui daarin die naam/waarde van die sleutel aan API, soos net hierbo getoon.

3. Ontplooi

Min of meer duidelik en in detail oor Yandex.Wolk en hoe om dit daar te plaas Yandex funksies beskryf in my artikel Alice in die land van Bitrix - Ek stuur die onkundiges na hierdie land, en vir almal anders (en diegene wat teruggekeer het) - dan 'n klein strokiesprentboek (m.a.w. 'n reeks prente en teks).

Ons skep ritssluiter-argief (kom ons noem dit, byvoorbeeld, mailer.zip), waarin ons die gids insluit node_modules en lêers .env, indeks.js - alles uit ons projekkatalogus:

Yandex-funksies stuur e-pos

Ons skep 'n funksie met die naam... korrek - posseerder, in die linker navigasie kieslys gaan ons in Die redakteur, vul die vereiste velde in en skakel oor na die oortjie zip argief laai ons argief af mailer.zip:

Yandex-funksies stuur e-pos

En hier is die voorheen genoemde opsie om af te laai API sleutel direk hierheen, eerder as om 'n lêer in die projek te skep .a V, en moenie die pakket installeer nie dotenv. Maar ons het dit al gedoen, so ek wys dit net vir inligting. Dit wil sê, dit is nie nodig om te dupliseer nie!

Yandex-funksies stuur e-pos

Klik nou op die knoppie in die regter boonste hoek Skep weergawe, en wag 'n paar sekondes. Wanneer alles gereed is, sal ons outomaties na die afdeling gaan Hersien. Daar sal ons die opsie aktiveer openbare funksiesodat jy van die buitewêreld daarmee kan omgaan.

Yandex-funksies stuur e-pos

Jy sien die blou skakel oorkant die inskripsie Skakel na oproep? Klik daarop. 'n Leë blaaiervenster sal oopmaak... Maar wag - ek het 'n e-pos ontvang:

Yandex-funksies stuur e-pos

Nou kan jy terugkeer na die konsole SendGrid, en druk die knoppie Verifieer integrasie. Die stelsel sal alles deur sy kanale nagaan, en gevolglik behoort dit 'n skerm soos hierdie terug te gee:

Yandex-funksies stuur e-pos

Dit is dit, ouens (en meisies, natuurlik) - alles is regtig baie eenvoudig en elegant! Daar sal meer artikels wees. As iemand belangstel om so iets te lees, teken in sodat jy nie uitmis nie.

4. Skenkings

Yandex-funksies stuur e-pos

Bron: will.com

Voeg 'n opmerking