Les fonctions Yandex envoient du courrier

Les fonctions Yandex envoient du courrier

Aujourd'hui, nous allons créer ce qu'on appelle. Fonction Yandex (nom officiel Fonctions cloud Yandex), qui était de connivence avec le service de messagerie SendGrid enverra du « savon » aux utilisateurs qui dorment paisiblement (je plaisante - je sais que nous sommes tous contre le spam).

Je suis aussi un adversaire (mais sans fanatisme) des serveurs traditionnels, et un partisan de ce qu'on appelle. sans serveur (sans serveur), car je n'aime pas (et je ne sais pas trop comment) administrer les serveurs, et encore plus payer le temps où ils ne sont pas chargés. Une autre chose, ce sont les fonctions. Quelqu'un les dessert sans moi et je ne paie que les appels. Début octobre 2019, Yandex a présenté son Fonctions cloud Yandex - semble être le premier en Fédération de Russie sans serveur. Et ce qui est particulièrement appréciable, c’est que les compétences d’Alice sont généralement gratuites, donc elles sont depuis dans ma vision périphérique. Mais commençons déjà.

Imaginons ce scénario. Votre candidature (par exemple, la compétence d'Alice Rappelez-vous et oubliez qui, d'ailleurs, fonctionne également sur Fonctions Yandex) invite l'utilisateur à acheter un produit numérique, par exemple des options supplémentaires, et l'utilisateur effectue un paiement. Une sorte de système de paiement (semblable à confusion à Yandex) traite le paiement et l'envoie à l'adresse que vous fournissez (et nous aurons un lien pour appeler Fonctions Yandex) HTTP-une demande contenant les détails du paiement, tels que le montant, le nom complet, le numéro de téléphone et l'e-mail du payeur. Nous souhaitons traiter ces données d'une manière ou d'une autre, par exemple : vérifier le montant, effectuer les entrées appropriées dans la base de données, envoyer aux utilisateurs SMS и Email avec confirmation de la réception du paiement et instructions supplémentaires. Alors toi-même microservice.

À propos de comment depuis Fonctions Yandex faire des entrées dans la base de données Cloud Firestore nous l'avons déjà regardé dans le tutoriel Alice se souvient de tout (et à l'avenir, je pense, nous considérerons un exemple pour une autre base de données - Base de données Yandex). À propos de la façon d'envoyer aux utilisateurs SMS et intégrez notre application avec Yandex.Argent - nous réglerons ce problème dans un avenir proche. Parlons maintenant de l'envoi de lettres.

1. Créez un compte dans SendGrid

NoterSendGrid n'est que mon choix, que j'ai fait pour plusieurs raisons, la principale étant qu'ils disposent d'un SDK prêt à l'emploi pour Node.js. Vous pouvez choisir n’importe quel autre service de messagerie.

Nous passons vers la page d'enregistrement du compte et remplissez-y le formulaire d’inscription. Puis nous allons à Tableau de bord, dans le panneau de navigation, sélectionnez API de messagerie -> Guide d'intégration, et sur le panneau principal - API Web и нажимаем нопку Selectionnez. Tout est comme sur la photo :

Les fonctions Yandex envoient du courrier

À l'étape suivante, nous sélectionnons Node.js:

Les fonctions Yandex envoient du courrier

Ensuite, nous proposons pour notre API-nom de la clé (sera affiché uniquement dans la console dans la liste des clés, et n'a rien à voir avec notre futur code ; j'ai trouvé un impérissable clé de démonstration API) et appuyez sur le bouton Créer une clé:

Les fonctions Yandex envoient du courrier

La clé sera générée, nous la copierons et la conserverons dans la plus profonde confidentialité. Et nous aurons un écran avec un bouton Vérifier l'intégration, comme dans l'image ci-dessous, mais nous ne cliquerons pas encore dessus, mais passons à l'écriture du code :

Les fonctions Yandex envoient du courrier

2. Écrire du code

Mais le code lui-même, comme vous pouvez le voir, est ridiculement petit : 22 lignes !

Les fonctions Yandex envoient du courrier

En ligne #8 Mon email est codé en dur (et donc timidement caché) - merci d'indiquer le vôtre. Dans la vraie vie, nous recevrons toutes les données (y compris email) à partir de l'objet un événement. Par exemple, si la méthode POSTEZ un objet est envoyé à notre fonction utilisateur avec champ (propriété) email, la valeur de ce champ peut être obtenue comme ceci :

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

Et si l'adresse email est transmise à la fonction en utilisant la méthode ÉCONOMISEZ, Par exemple: https://functions.yandexcloud.net/123abc?[email protected]
valeur du paramètre email vous pouvez l'obtenir comme ceci :

const email = event.queryStringParameters.email;

Pour voir ce que contient exactement un objet un événement, vous pouvez créer le plus simple Fonction Yandex et tournez-le avec des requêtes :

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

Ceci est discuté plus en détail (mais moins clairement) dans la documentation officielle ici.

Créez donc un répertoire de projet (par exemple, courrier), allez-y, initialisez le projet, installez les dépendances :

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

Ici seul le package est requis @sendgrid/mail. Sac plastique validateur d'e-mail vérifie la validité de l'adresse email (comment n'ai-je pas deviné tout de suite ?), mais si nous en sommes sûrs (elle a déjà été vérifiée depuis longtemps sans nous), nous n'avons pas besoin de l'installer (et, bien sûr, bien sûr, nous n'avons pas besoin de le vérifier dans le code). Sac plastique dotenv conçu pour lire les enregistrements d'un fichier .env comme variables d'exécution. Mais en Fonctions Yandex Il est possible de placer ces variables directement dans l'environnement d'exécution. Comment? - Je vais le montrer ci-dessous. Donc le paquet dotenv vous ne pouvez pas non plus l'installer, et le fichier .env - ne créez pas, et en même temps le code est dans le fichier index.js ne changez pas. Mais ici nous avons installé ce package, nous créons donc des fichiers index.js и .env:

touch index.js
touch .env

En fichier index.js écrivez 22 lignes de code montrées dans la capture d'écran ci-dessus (uniquement dans la ligne #8 changez votre email), et dans le fichier .env - (sans guillemets ni ponctuation) précisez la paire - nom/valeur de la clé APIque nous avons récemment reçu dans la console SendGrid:
SENDGRID_API_KEY=votre-clé-très-secret-sendgrid-api

Et si vous voulez moins de travail, clonez le référentiel et installez les packages :

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

En fichier index.js, en ligne #8 Changer l'e-mail; créer un fichier dans le répertoire racine .env, et indiquez-y le nom/valeur de la clé API, comme indiqué juste au-dessus.

3. Déployer

Plus ou moins clairement et en détail sur Yandex.Cloud et comment le placer là Fonctions Yandex décrit dans mon article Alice au pays de Bitrix - J'envoie les ignorants dans ce pays, et pour tous les autres (et ceux qui sont revenus) - puis une petite bande dessinée (c'est-à-dire une série d'images et de textes).

Créer Zip *: français-archive (appelons-le, par exemple, mailer.zip), dans lequel nous incluons le répertoire node_modules et des fichiers .env, index.js - tout de notre catalogue de projets :

Les fonctions Yandex envoient du courrier

Nous créons une fonction avec le nom... correctement - courrier, dans le menu de navigation de gauche, nous entrons éditeur, remplissez les champs obligatoires et passez à l'onglet Archive ZIP téléchargez nos archives mailer.zip:

Les fonctions Yandex envoient du courrier

Et voici l'option de téléchargement mentionnée précédemment Clé API directement ici, plutôt que de créer un fichier dans le projet .env, et n'installez pas le package dotenv. Mais nous avons déjà fait tout cela, donc je le montre juste à titre d’information. Autrement dit, il n'est pas nécessaire de dupliquer !

Les fonctions Yandex envoient du courrier

Maintenant, dans le coin supérieur droit, cliquez sur le bouton Créer une version, et attendez quelques secondes. Quand tout sera prêt, nous irons automatiquement à la section vue d'ensemble. Là, nous activerons l'option fonction publiqueafin que vous puissiez interagir avec lui depuis le monde extérieur.

Les fonctions Yandex envoient du courrier

Vous voyez le lien bleu en face de l'inscription Lien pour appeler? Cliquez dessus. Une fenêtre de navigateur vide s'ouvrira... Mais attendez, j'ai reçu un e-mail :

Les fonctions Yandex envoient du courrier

Vous pouvez maintenant revenir à la console SendGrid, et appuyez sur le bouton Vérifier l'intégration. Le système vérifiera tout via ses canaux et, par conséquent, il devrait renvoyer un écran comme celui-ci :

Les fonctions Yandex envoient du courrier

Ça y est, les gars (et les filles, bien sûr) - tout est vraiment très simple et élégant ! Il y aura plus d'articles. Si quelqu’un souhaite lire quelque chose comme ça, abonnez-vous pour ne rien manquer.

4. Dons

Les fonctions Yandex envoient du courrier

Source: habr.com

Ajouter un commentaire