Les funcions de Yandex envien correu

Les funcions de Yandex envien correu

Avui crearem l'anomenat. Funció Yandex (nom oficial Funcions Yandex Cloud), que va col·lusionar amb el servei de correu SendGrid enviarà "sabó" als usuaris que dormen tranquil·lament (és broma, sé que tots estem en contra del correu brossa).

També sóc opositor (però sense fanatisme) dels servidors tradicionals, i partidari dels anomenats. sense servidor solucions (sense servidor), perquè no m'agrada (i no sé molt bé com) administrar servidors, i encara més, pagar pel temps que no es carreguen. Una altra cosa són les funcions. Algú els dóna servei sense jo i jo només pago les trucades. A principis d'octubre de 2019, Yandex va presentar el seu Funcions Yandex Cloud - sembla ser el primer a la Federació Russa sense servidor. I el que és especialment agradable és que per a les habilitats de l'Alice són generalment gratuïtes, de manera que han estat a la meva visió perifèrica des d'aleshores. Però comencem ja.

Imaginem aquest escenari. La vostra aplicació (per exemple, l'habilitat d'Alice Recorda i oblida que, per cert, també funciona Funcions Yandex) convida l'usuari a comprar un producte digital, per exemple, opcions addicionals, i l'usuari realitza un pagament. Algun tipus de sistema de pagament (confusament semblant a Yandex.Money) processa el pagament i l'envia a l'adreça que ens proporcioneu (i tindrem un enllaç per trucar Funcions Yandex) HTTP-una sol·licitud que conté les dades del pagament, com ara l'import, el nom complet, el número de telèfon i el correu electrònic del pagador. Volem processar aquestes dades d'alguna manera, per exemple: comprovar l'import, fer les entrades oportunes a la base de dades, enviar als usuaris SMS и Email amb confirmació de recepció del pagament i instruccions addicionals. Així que tu mateix microservei.

Sobre com a partir Funcions Yandex fer entrades a la base de dades Cloud Firestore ja ho hem mirat al tutorial L'Alícia ho recorda tot (i en el futur, crec, considerarem un exemple per a una altra base de dades - Base de dades Yandex). Sobre com enviar als usuaris SMS i integrar la nostra aplicació amb Yandex.Diners - Ho solucionarem en un futur proper. Ara només ens ocupem de l'enviament de cartes.

1. Creeu un compte a SendGrid

NotaSendGrid és només la meva elecció, que vaig fer per diversos motius, el principal és que tenen un SDK preparat per a Node.js. Podeu triar qualsevol altre servei de correu.

Posem-nos en marxa a la pàgina de registre del compte i allà ompliu el formulari d'inscripció. Després anem a Resum, al tauler de navegació, seleccioneu API de correu electrònic -> Guia d'integració, i al panell principal - API web i premeu el botó Escollir. Tot és com a la imatge:

Les funcions de Yandex envien correu

En el següent pas seleccionem NODE.JS:

Les funcions de Yandex envien correu

A continuació, ens presentem per al nostre API-nom de la clau (només es mostrarà a la consola a la llista de claus, i no té res a veure amb el nostre codi futur; acabo de trobar un imperible demo-api-key) i premeu el botó Crea clau:

Les funcions de Yandex envien correu

Es generarà la clau, la copiarem i la guardarem amb la màxima confiança. I tindrem una pantalla amb un botó Verifica la integració, com a la imatge següent, però encara no hi farem clic, però anem a escriure el codi:

Les funcions de Yandex envien correu

2. Escriptura del codi

Però el codi en si, com podeu veure, és ridículament petit: 22 línies!

Les funcions de Yandex envien correu

En linia #8 El meu correu electrònic està codificat (i, per tant, tímidament amagat); si us plau, indiqueu el vostre. A la vida real, rebrem totes les dades (inclòs correu electrònic) de l'objecte esdeveniment. Per exemple, si el mètode PAL s'envia un objecte a la nostra funció user amb camp (propietat) correu electrònic, el valor d'aquest camp es pot obtenir així:

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

I si l'adreça de correu electrònic es passa a la funció mitjançant el mètode GET, per exemple: https://functions.yandexcloud.net/123abc?[email protected]
valor del paràmetre correu electrònic pots aconseguir-ho així:

const email = event.queryStringParameters.email;

Per fer una ullada a què hi ha exactament en un objecte esdeveniment, pots crear el més senzill Funció Yandex i gira-ho amb consultes:

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

Això es parla amb més detall (però amb menys claredat) a la documentació oficial aquí.

Per tant, creeu un directori de projecte (per exemple, correu), aneu-hi, inicialitzeu el projecte, instal·leu dependències:

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

Aquí només cal el paquet @sendgrid/mail. Bossa de plàstic validador de correu electrònic comprova la validesa de l'adreça de correu electrònic (com no ho vaig endevinar de seguida?), però si n'estem segurs (ja fa temps que està comprovat sense nosaltres), no l'hem d'instal·lar (i, de per descomptat, no hem de comprovar-ho al codi). Bossa de plàstic dotenv dissenyat per llegir registres d'un fitxer .NS com a variables d'execució. Però en Funcions Yandex És possible col·locar aquestes variables directament a l'entorn d'execució. Com? - Ho ensenyaré a continuació. Per tant el paquet dotenv tampoc podeu instal·lar-lo, i el fitxer .NS - no creeu, i al mateix temps el codi està al fitxer index.js no canviis. Però aquí hem instal·lat aquest paquet, així que creem fitxers index.js и .NS:

touch index.js
touch .env

A l'arxiu index.js escriviu 22 línies de codi que es mostren a la captura de pantalla anterior (només a la línia #8 canvieu el vostre correu electrònic) i al fitxer .NS - (sense cometes ni signes de puntuació) especifiqueu la parella - nom/valor de la clau APIque hem rebut recentment a la consola SendGrid:
SENDGRID_API_KEY=la teva-clau-api-sendgrid-molt-secreta

I si voleu menys feina, cloneu el repositori i instal·leu els paquets:

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

A l'arxiu index.js, en linia #8 Canviar e-mail; crear un fitxer al directori arrel .NS, i en ell indiqueu el nom/valor de la clau API, com es mostra just a dalt.

3. Desplega

De manera més o menys clara i detallada sobre Yandex.Cloud i com posar-lo allà Funcions Yandex descrit al meu article Alícia a la terra de Bitrix - Envio els ignorants a aquest país, i per a tots els altres (i els que han tornat) - després un petit còmic (és a dir, una sèrie d'imatges i text).

Creem cremallera-arxiu (anomenarem-lo, per exemple, mailer.zip), en què incloem el directori mòduls_node i fitxers .env, index.js - tot del nostre catàleg de projectes:

Les funcions de Yandex envien correu

Creem una funció amb el nom... correctament - correu, al menú de navegació esquerre entrem L'editor, ompliu els camps obligatoris i canvieu a la pestanya Arxiu ZIP descarregar el nostre arxiu mailer.zip:

Les funcions de Yandex envien correu

I aquí teniu l'opció esmentada anteriorment per descarregar Clau de l'API directament aquí, en lloc de crear un fitxer al projecte .NS, i no instal·leu el paquet dotenv. Però tot això ja ho hem fet, així que ho mostro només per informació. És a dir, no cal duplicar!

Les funcions de Yandex envien correu

Ara, a la cantonada superior dreta, feu clic al botó Crea una versió, i espera un parell de segons. Quan tot estigui llest, automàticament anirem a la secció visió de conjunt. Allà habilitarem l'opció funció públicaperquè pugueu interactuar amb ell des del món exterior.

Les funcions de Yandex envien correu

Veu l'enllaç blau davant de la inscripció Enllaç per trucar? Feu-hi clic. S'obrirà una finestra buida del navegador... Però espera, he rebut un correu electrònic:

Les funcions de Yandex envien correu

Ara podeu tornar a la consola SendGrid, i premeu el botó Verifica la integració. El sistema ho comprovarà tot a través dels seus canals i, com a resultat, hauria de tornar una pantalla com aquesta:

Les funcions de Yandex envien correu

Això és tot, nois (i noies, és clar) - tot és realment molt senzill i elegant! Hi haurà més articles. Si algú està interessat en llegir alguna cosa com aquesta, subscriviu-vos perquè no us ho perdeu.

4. Donacions

Les funcions de Yandex envien correu

Font: www.habr.com

Afegeix comentari