Yandex-funktioner skickar e-post

Yandex-funktioner skickar e-post

Idag kommer vi att skapa den så kallade. Yandex funktion (officiellt namn Yandex molnfunktioner), som samarbetade med posttjänsten SendGrid kommer att skicka "tvål" till lugnt sovande användare (skämtar bara - jag vet att vi alla är emot spam).

Jag är också en motståndare (men utan fanatism) till traditionella servrar, och en anhängare av den sk. Server (serverlösa) lösningar, eftersom jag inte gillar (och jag vet inte riktigt hur man) administrerar servrar, och ännu mer, betalar för tiden när de inte är laddade. En annan sak är funktioner. Någon servar dem utan mig, och jag betalar bara för samtal. I början av oktober 2019 presenterade Yandex sin Yandex molnfunktioner - verkar vara den första i Ryska federationen Server. Och det som är särskilt trevligt är att för Alices färdigheter är de generellt fria, så de har varit i min perifera syn sedan dess. Men låt oss börja redan.

Låt oss föreställa oss detta scenario. Din ansökan (till exempel Alices skicklighet Kom ihåg och glöm som för övrigt också funkar på Yandex funktioner) uppmanar användaren att köpa en digital produkt, till exempel ytterligare alternativ, och användaren gör en betalning. Något slags betalningssystem (förvirrande likt Yandex) behandlar betalningen och skickar den till adressen du anger (och vi kommer att ha en länk att ringa Yandex funktioner) HTTP-en begäran som innehåller betalningsinformation, såsom belopp, fullständigt namn, telefonnummer och e-postadress för betalaren. Vi vill bearbeta dessa uppgifter på något sätt, till exempel: kontrollera beloppet, göra lämpliga poster i databasen, skicka till användare SMS и E-postadress med bekräftelse på mottagande av betalning och ytterligare instruktioner. Du själv alltså mikrotjänst.

Om hur från Yandex funktioner göra inlägg i databasen Cloud Firestore vi har redan tittat på det i handledningen Alice minns allt (och i framtiden, tror jag, kommer vi att överväga ett exempel för en annan databas - Yandex databas). Om hur man skickar till användare SMS och integrera vår applikation med Yandex.Money – Vi kommer att lösa det inom en snar framtid. Nu ska vi bara ta itu med att skicka brev.

1. Skapa ett konto i SendGrid

NoteraSendGrid är bara mitt val, som jag gjorde av flera anledningar, den främsta är att de har en färdig SDK för Node.js. Du kan välja vilken annan posttjänst som helst.

Låt oss gå vidare till kontoregistreringssidan och fyll i registreringsformuläret där. Sen går vi till Dashboard, välj i navigeringspanelen Email API -> Integrationsguide, och på huvudpanelen - Web API och tryck på knappen Välja. Allt är som på bilden:

Yandex-funktioner skickar e-post

I nästa steg väljer vi node.js:

Yandex-funktioner skickar e-post

Nästa kommer vi på för vår API-nyckelnamn (kommer bara att visas i konsolen i listan över nycklar, och har ingenting att göra med vår framtida kod; jag kom precis på en oförgänglig demo-api-nyckel) och tryck på knappen Skapa nyckel:

Yandex-funktioner skickar e-post

Nyckeln kommer att genereras, vi kommer att kopiera den och bevara den i djupaste förtroende. Och vi kommer att ha en skärm med en knapp Verifiera integrationen, som på bilden nedan, men vi kommer inte att klicka på den än, men låt oss gå vidare till att skriva koden:

Yandex-funktioner skickar e-post

2. Skriva kod

Men själva koden är, som du kan se, löjligt liten - 22 rader!

Yandex-funktioner skickar e-post

I kö #8 Min e-post är hårdkodad (och därför blygt dold) - ange din. I verkligheten kommer vi att få all data (inklusive e-mail) från objekt händelse. Till exempel om metoden POST ett objekt skickas till vår funktion användare med fält (fastighet) e-mail, kan värdet för detta fält erhållas så här:

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

Och om e-postadressen skickas till funktionen med metoden , till exempel: https://functions.yandexcloud.net/123abc?[email protected]
parametervärde e-mail du kan få det så här:

const email = event.queryStringParameters.email;

För att ta en titt på exakt vad som finns i ett objekt händelse, kan du skapa den enklaste Yandex funktion och vrid det med frågor:

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

Detta diskuteras mer detaljerat (men mindre tydligt) i den officiella dokumentationen här.

Så skapa en projektkatalog (till exempel, mailare), gå till det, initiera projektet, installera beroenden:

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

Här krävs bara paketet @sendgrid/mail. Plastpåse e-postvalidator kontrollerar e-postadressen för giltighet (hur gissade jag inte direkt?), men om vi är säkra på det (den har redan kontrollerats länge utan oss) behöver vi inte installera den (och av vi behöver naturligtvis inte kontrollera det i koden). Plastpåse dotenv utformad för att läsa poster från en fil .env som körtidsvariabler. Men i Yandex funktioner Det är möjligt att placera dessa variabler direkt i runtime-miljön. Hur? - Jag visar det nedan. Därför paketet dotenv du kan inte heller installera den och filen .env - skapa inte, och samtidigt finns koden i filen index.js ändra inte. Men här har vi installerat det här paketet, så vi skapar filer index.js и .env:

touch index.js
touch .env

I fil index.js skriv 22 rader kod som visas i skärmdumpen ovan (endast på raden #8 ändra din e-post) och i filen .env - (utan citattecken eller skiljetecken) ange paret - nyckelnamn/värde APIsom vi nyligen fick i konsolen SendGrid:
SENDGRID_API_KEY=din-mycket-hemliga-sendgrid-api-nyckel

Och om du vill ha mindre arbete, klona förvaret och installera paketen:

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

I fil index.js, i kö #8 byta e-mail; skapa en fil i rotkatalogen .env, och ange nyckelns namn/värde i den API, som visas precis ovan.

3. Installera

Mer eller mindre tydligt och detaljerat om Yandex.Cloud och hur man placerar den där Yandex funktioner beskrivs i min artikel Alice i landet Bitrix – Jag skickar de okunniga till det här landet, och för alla andra (och de som återvänt) – sedan en liten serietidning (d.v.s. en serie bilder och text).

Skapa zip-arkiv (låt oss kalla det, till exempel, mailer.zip), där vi inkluderar katalogen node_modules och filer .env, index.js - allt från vår projektkatalog:

Yandex-funktioner skickar e-post

Vi skapar en funktion med namnet... korrekt - mailare, i den vänstra navigeringsmenyn går vi in Redaktören, fyll i de obligatoriska fälten och växla till fliken ZIP-arkiv ladda ner vårt arkiv mailer.zip:

Yandex-funktioner skickar e-post

Och här är det tidigare nämnda alternativet att ladda ner API-nyckel direkt här, istället för att skapa en fil i projektet .env, och installera inte paketet dotenv. Men vi har redan gjort allt detta, så jag visar det bara för information. Det vill säga, det finns ingen anledning att duplicera!

Yandex-funktioner skickar e-post

Klicka nu på knappen i det övre högra hörnet Skapa versionoch vänta ett par sekunder. När allt är klart går vi automatiskt till avsnittet Обзор. Där kommer vi att aktivera alternativet Offentlig funktionså att du kan interagera med den från omvärlden.

Yandex-funktioner skickar e-post

Du ser den blå länken mittemot inskriptionen Ring länk? Klicka på det. Ett tomt webbläsarfönster öppnas... Men vänta - jag fick ett e-postmeddelande:

Yandex-funktioner skickar e-post

Nu kan du återgå till konsolen SendGrid, och tryck på knappen Verifiera integrationen. Systemet kommer att kontrollera allt genom sina kanaler, och som ett resultat bör det returnera en skärm så här:

Yandex-funktioner skickar e-post

Det är det, killar (och tjejer, förstås) - allt är verkligen väldigt enkelt och elegant! Det kommer fler artiklar. Om någon är intresserad av att läsa något liknande, prenumerera så att du inte missar något.

4. Donationer

Yandex-funktioner skickar e-post

Källa: will.com

Lägg en kommentar