Yandex-Funktionen zum Senden von E-Mails

Yandex-Funktionen zum Senden von E-Mails

Heute erstellen wir das sogenannte. Yandex-Funktion (Offizieller Name Yandex Cloud-Funktionen), die mit dem Postdienst zusammengearbeitet hat SendGrid wird „Soap“ an friedlich schlafende Benutzer senden (nur ein Scherz – ich weiß, dass wir alle gegen Spam sind).

Ich bin auch ein Gegner (aber ohne Fanatismus) traditioneller Server und ein Befürworter der sogenannten. Serverlos (serverlose) Lösungen, weil ich es nicht mag (und nicht wirklich weiß, wie man Server verwaltet), und noch mehr, weil ich für die Zeit bezahle, in der sie nicht ausgelastet sind. Eine andere Sache sind Funktionen. Jemand bedient sie ohne mich und ich bezahle nur für Anrufe. Anfang Oktober 2019 stellte Yandex seine vor Yandex Cloud-Funktionen - scheint das erste in der Russischen Föderation zu sein Serverlos. Und was besonders schön ist, ist, dass sie für Alices Fähigkeiten grundsätzlich kostenlos sind und sich daher seitdem in meinem peripheren Blickfeld befinden. Aber fangen wir schon einmal an.

Stellen wir uns dieses Szenario vor. Ihre Bewerbung (zum Beispiel Alices Skill Erinnern und vergessen was übrigens auch funktioniert Yandex-Funktionen) lädt den Nutzer zum Kauf eines digitalen Produkts, beispielsweise Zusatzoptionen, ein und führt eine Zahlung durch. Eine Art Zahlungssystem (zum Verwechseln ähnlich wie Yandex) verarbeitet die Zahlung und sendet sie an die von Ihnen angegebene Adresse (und wir haben einen Link zum Anrufen). Yandex-Funktionen) HTTP-eine Anfrage mit Zahlungsdetails wie Betrag, vollständiger Name, Telefonnummer und E-Mail-Adresse des Zahlers. Wir wollen diese Daten auf irgendeine Weise verarbeiten, zum Beispiel: den Betrag prüfen, entsprechende Einträge in der Datenbank vornehmen, an Benutzer senden SMS и E-Mail mit Bestätigung des Zahlungseingangs und weiteren Anweisungen. Also du selbst Mikroservice.

Darüber, wie von Yandex-Funktionen Einträge in der Datenbank vornehmen Cloud-Firestore Wir haben es uns bereits im Tutorial angeschaut Alice erinnert sich an alles (und ich denke, wir werden in Zukunft ein Beispiel für eine andere Datenbank in Betracht ziehen – Yandex-Datenbank). Informationen zum Senden an Benutzer SMS und unsere Anwendung integrieren Yandex.Money – Wir werden es in naher Zukunft klären. Kommen wir nun zum Versenden von Briefen.

1. Erstellen Sie ein Konto in SendGrid

BeachtenSendGrid ist nur meine Wahl, die ich aus mehreren Gründen getroffen habe. Der wichtigste Grund ist, dass sie ein fertiges SDK für Node.js haben. Sie können jeden anderen Versanddienst wählen.

Mach weiter zur Kontoregistrierungsseite und füllen Sie dort das Anmeldeformular aus. Dann gehen wir zu Dashboard, im Navigationsbereich auswählen E-Mail-API -> Integrationshandbuch, und auf dem Hauptpanel - Web API und нажимаем кнопку Auswählen . Alles ist wie auf dem Bild:

Yandex-Funktionen zum Senden von E-Mails

Im nächsten Schritt wählen wir aus Node.js:

Yandex-Funktionen zum Senden von E-Mails

Als nächstes kommen wir mit für unsere API-Schlüsselname (wird nur in der Konsole in der Liste der Schlüssel angezeigt und hat nichts mit unserem zukünftigen Code zu tun; ich habe mir gerade einen unvergänglichen Code ausgedacht Demo-API-Schlüssel) und drücken Sie die Taste Schlüssel erstellen:

Yandex-Funktionen zum Senden von E-Mails

Der Schlüssel wird generiert, wir werden ihn kopieren und vertraulich behandeln. Und wir werden einen Bildschirm mit einer Schaltfläche haben Überprüfen Sie die Integration, wie im Bild unten, aber wir werden noch nicht darauf klicken, sondern mit dem Schreiben des Codes fortfahren:

Yandex-Funktionen zum Senden von E-Mails

2. Code schreiben

Aber der Code selbst ist, wie Sie sehen können, lächerlich klein – 22 Zeilen!

Yandex-Funktionen zum Senden von E-Mails

In der Reihe #8 Meine E-Mail-Adresse ist fest codiert (und daher schüchtern versteckt) – bitte geben Sie Ihre an. Im wirklichen Leben erhalten wir alle Daten (inkl E-Mail) vom Objekt Event. Wenn beispielsweise die Methode jetzt lesen Ein Objekt wird an unsere Funktion gesendet Benutzer mit Feld (Eigenschaft) E-Mail, der Wert dieses Feldes kann wie folgt ermittelt werden:

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

Und wenn die E-Mail-Adresse mithilfe der Methode an die Funktion übergeben wird BESTELLEzum Beispiel: https://functions.yandexcloud.net/123abc?[email protected]
Parameterwert E-Mail Du kannst es so bekommen:

const email = event.queryStringParameters.email;

Einen Blick darauf werfen, was genau in einem Objekt enthalten ist Event, können Sie am einfachsten erstellen Yandex-Funktion und verdrehen Sie es mit Abfragen:

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

Dies wird in der offiziellen Dokumentation ausführlicher (aber weniger klar) besprochen hier.

Erstellen Sie also ein Projektverzeichnis (z. B. Mailer), gehen Sie dorthin, initialisieren Sie das Projekt, installieren Sie Abhängigkeiten:

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

Hier wird lediglich das Paket benötigt @sendgrid/mail. Plastiktüte E-Mail-Validator prüft die E-Mail-Adresse auf Gültigkeit (wie konnte ich das nicht gleich erraten?), aber wenn wir uns dessen sicher sind (sie wurde schon lange ohne uns überprüft), müssen wir sie nicht installieren (und natürlich Natürlich müssen wir es nicht im Code überprüfen). Plastiktüte dotenv Entwickelt, um Datensätze aus einer Datei zu lesen .env als Laufzeitvariablen. Aber in Yandex-Funktionen Es ist möglich, diese Variablen direkt in der Laufzeitumgebung zu platzieren. Wie? - Ich zeige es unten. Daher das Paket dotenv Sie können es auch nicht installieren, und zwar die Datei .env - nicht erstellen, und gleichzeitig befindet sich der Code in der Datei index.js verändere dich nicht. Aber hier haben wir dieses Paket installiert, also erstellen wir Dateien index.js и .env:

touch index.js
touch .env

Im Ordner index.js Schreiben Sie 22 Zeilen Code, wie im Screenshot oben gezeigt (nur in der Zeile #8 Ändern Sie Ihre E-Mail-Adresse) und in der Datei .env - (ohne Anführungszeichen oder Satzzeichen) Geben Sie das Paar an – Schlüsselname/-wert APIdie wir kürzlich in der Konsole erhalten haben SendGrid:
SENDGRID_API_KEY=Ihr-sehr-geheimer-Sendgrid-API-Schlüssel

Und wenn Sie weniger Arbeit haben möchten, klonen Sie das Repository und installieren Sie die Pakete:

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

Im Ordner index.js, in der Reihe #8 Ändern Sie die E-Mail; Erstellen Sie eine Datei im Stammverzeichnis .env, und geben Sie darin den Namen/Wert des Schlüssels an API, wie oben gezeigt.

3. Bereitstellen

Mehr oder weniger klar und detailliert darüber Yandex.Cloud und wie man es dort platziert Yandex-Funktionen in meinem Artikel beschrieben Alice im Land Bitrix - Ich schicke die Unwissenden in dieses Land und für alle anderen (und diejenigen, die zurückgekehrt sind) - dann ein kleines Comic-Buch (d. h. eine Reihe von Bildern und Texten).

Schaffen Reißverschluss-archive (nennen wir es zum Beispiel mailer.zip), in die wir das Verzeichnis einbinden node_modules und Dateien .env, index.js - alles aus unserem Projektkatalog:

Yandex-Funktionen zum Senden von E-Mails

Wir erstellen eine Funktion mit dem Namen... richtig - Mailer, im linken Navigationsmenü geben wir ein Editor, füllen Sie die erforderlichen Felder aus und wechseln Sie zur Registerkarte ZIP-Archiv Laden Sie unser Archiv herunter mailer.zip:

Yandex-Funktionen zum Senden von E-Mails

Und hier ist die zuvor erwähnte Option zum Herunterladen API-Schlüssel direkt hier, anstatt eine Datei im Projekt zu erstellen .env, und installieren Sie das Paket nicht dotenv. Da wir das alles aber schon gemacht haben, zeige ich es nur zur Information. Das heißt, es besteht keine Notwendigkeit zum Duplizieren!

Yandex-Funktionen zum Senden von E-Mails

Klicken Sie nun in der oberen rechten Ecke auf die Schaltfläche Version erstellen, und warten Sie ein paar Sekunden. Wenn alles fertig ist, gehen wir automatisch zum Abschnitt Beschreibung. Dort werden wir die Option aktivieren öffentliche Funktiondamit Sie von außen mit ihm interagieren können.

Yandex-Funktionen zum Senden von E-Mails

Sie sehen den blauen Link gegenüber der Aufschrift Link zum Anruf? Klick es. Es öffnet sich ein leeres Browserfenster... Aber warten Sie – ich habe eine E-Mail erhalten:

Yandex-Funktionen zum Senden von E-Mails

Jetzt können Sie zur Konsole zurückkehren SendGrid, und drücken Sie die Taste Überprüfen Sie die Integration. Das System überprüft alles über seine Kanäle und sollte als Ergebnis einen Bildschirm wie diesen zurückgeben:

Yandex-Funktionen zum Senden von E-Mails

Das war’s, Jungs (und Mädels natürlich) – alles ist wirklich sehr schlicht und elegant! Es wird noch weitere Artikel geben. Wenn jemand daran interessiert ist, so etwas zu lesen, abonnieren Sie ihn, damit Sie nichts verpassen.

4. Spenden

Yandex-Funktionen zum Senden von E-Mails

Source: habr.com

Kommentar hinzufügen