Funkcje Yandex wysyłają pocztę

Funkcje Yandex wysyłają pocztę

Dziś stworzymy tzw. Funkcja Yandex (oficjalna nazwa Funkcje chmury Yandex), który współpracował z firmą pocztową SendGrid wyśle ​​„mydło” do spokojnie śpiących użytkowników (żartuję - wiem, że wszyscy jesteśmy przeciwni spamowi).

Ja też jestem przeciwnikiem (ale bez fanatyzmu) tradycyjnych serwerów, a zwolennikiem tzw. bezserwerowy rozwiązań (bezserwerowych), bo nie lubię (i nie bardzo umiem) administrować serwerami, a tym bardziej płacić za czas, kiedy nie są obciążone. Kolejna rzecz to funkcje. Ktoś ich obsługuje beze mnie, a ja płacę tylko za połączenia. Na początku października 2019 roku Yandex zaprezentował swoje Funkcje chmury Yandex - wydaje się być pierwszym w Federacji Rosyjskiej bezserwerowy. A szczególnie miłe jest to, że umiejętności Alice są na ogół bezpłatne, więc od tego czasu są w moim polu widzenia peryferyjnego. Ale zacznijmy już.

Wyobraźmy sobie taki scenariusz. Twoja aplikacja (na przykład umiejętność Alicji Zapamiętaj i zapomnij nad którym, nawiasem mówiąc, również działa Funkcje Yandexa) oferuje użytkownikowi zakup produktu cyfrowego, na przykład dodatkowe opcje, a użytkownik dokonuje płatności. Jakiś system płatności (łudząco podobny do Yandex) przetwarza płatność i wysyła ją na podany przez Ciebie adres (a my będziemy mieli link do połączenia). Funkcje Yandexa) HTTP- żądanie zawierające szczegóły płatności, takie jak kwota, imię i nazwisko, numer telefonu oraz adres e-mail płatnika. Chcemy te dane w jakiś sposób przetworzyć, np. sprawdzić kwotę, dokonać odpowiednich wpisów w bazie, wysłać do użytkowników SMS и E-mail z potwierdzeniem otrzymania płatności i dalszymi instrukcjami. Więc siebie mikroserwis.

O tym, jak od Funkcje Yandexa dokonać wpisów do bazy danych Chmura Firestore omówiliśmy to już w samouczku Alicja wszystko pamięta (i myślę, że w przyszłości rozważymy przykład dla innej bazy danych - Baza danych Yandex). O tym, jak wysłać do użytkowników SMS i zintegruj naszą aplikację z Yandex. Pieniądze – zajmiemy się tym w najbliższej przyszłości. Zajmijmy się teraz wysyłaniem listów.

1. Utwórz konto w SendGrid

OperacjaSendGrid to tylko mój wybór, którego dokonałem z kilku powodów, z których głównym jest to, że mają gotowe SDK dla Node.js. Możesz wybrać dowolną inną usługę wysyłkową.

Mijamy do strony rejestracji konta i wypełnij znajdujący się tam formularz rejestracyjny. Potem idziemy do Panel Użytkownika, w panelu nawigacyjnym wybierz Email API -> Przewodnik integracji, a na panelu głównym - Internetowy interfejs API i naciśnij przycisk Dodaj. Wszystko jest jak na zdjęciu:

Funkcje Yandex wysyłają pocztę

W kolejnym kroku wybieramy node.js:

Funkcje Yandex wysyłają pocztę

Następnie wymyślamy dla naszego API-key name (będzie wyświetlana tylko w konsoli na liście kluczy i nie ma nic wspólnego z naszym przyszłym kodem; właśnie wymyśliłem niezniszczalny klucz demo-api) i naciśnij przycisk Utwórz klucz:

Funkcje Yandex wysyłają pocztę

Klucz zostanie wygenerowany, my go skopiujemy i zachowamy w najgłębszej tajemnicy. I będziemy mieli ekran z przyciskiem Sprawdź integrację, jak na obrazku poniżej, ale nie będziemy go jeszcze klikać, ale przejdźmy do pisania kodu:

Funkcje Yandex wysyłają pocztę

2. Pisanie kodu

Ale sam kod, jak widać, jest śmiesznie mały - 22 linie!

Funkcje Yandex wysyłają pocztę

W kolejce #8 Mój e-mail jest zakodowany na stałe (i dlatego nieśmiało ukryty) - proszę podać swój. W prawdziwym życiu otrzymamy wszystkie dane (m.in E-mail) z obiektu wydarzenie. Na przykład, jeśli metoda POST do naszej funkcji wysyłany jest obiekt użytkownik z polem (właściwość) E-mail, wartość tego pola można uzyskać w następujący sposób:

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

A jeśli adres e-mail zostanie przekazany do funkcji za pomocą metody GETna przykład: https://functions.yandexcloud.net/123abc?[email protected]
wartość parametru E-mail możesz to uzyskać w ten sposób:

const email = event.queryStringParameters.email;

Aby rzucić okiem na to, co dokładnie znajduje się w obiekcie wydarzenie, możesz stworzyć najprostsze Funkcja Yandex i przekręć go za pomocą zapytań:

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

Jest to omówione bardziej szczegółowo (ale mniej wyraźnie) w oficjalnej dokumentacji tutaj.

Utwórz więc katalog projektu (na przykład poczta), przejdź do niego, zainicjuj projekt, zainstaluj zależności:

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

Tutaj wymagany jest tylko pakiet @sendgrid/poczta. Plastikowa torba walidator e-mail sprawdza poprawność adresu e-mail (jak mogłem od razu zgadnąć?), ale jeśli jesteśmy tego pewni (było to już dawno sprawdzane bez nas), to nie musimy go instalować (a co za tym idzie oczywiście nie musimy tego sprawdzać w kodzie). Plastikowa torba dotenw przeznaczony do odczytu rekordów z pliku .env jako zmienne wykonawcze. Ale w Funkcje Yandexa Możliwe jest umieszczenie tych zmiennych bezpośrednio w środowisku wykonawczym. Jak? - Pokażę to poniżej. Dlatego pakiet dotenw nie można go również zainstalować, a plik .env - nie twórz, a jednocześnie kod jest w pliku indeks.js nie zmieniaj. Ale tutaj zainstalowaliśmy ten pakiet, więc tworzymy pliki indeks.js и .env:

touch index.js
touch .env

W pliku indeks.js napisz 22 linie kodu pokazane na powyższym zrzucie ekranu (tylko w linii #8 zmień adres e-mail) oraz w pliku .env - (bez cudzysłowów i znaków interpunkcyjnych) określ parę - nazwa/wartość klucza APIktóry niedawno otrzymaliśmy w konsoli SendGrid:
SENDGRID_API_KEY=twój-bardzo-tajny-klucz-sendgrid-api

A jeśli chcesz mniej pracy, sklonuj repozytorium i zainstaluj pakiety:

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

W pliku indeks.js, w kolejce #8 Zmień adres e-mail; utwórz plik w katalogu głównym .env, a w nim podaj nazwę/wartość klucza API, jak pokazano tuż powyżej.

3. Wdróż

Mniej więcej wyraźnie i szczegółowo o Yandex.Cloud i jak go tam umieścić Funkcje Yandexa opisane w moim artykule Alicja w krainie Bitrix - Ignorantów wysyłam do tego kraju, a dla wszystkich pozostałych (i tych, którzy wrócili) - potem mały komiks (czyli serię obrazków i tekstu).

Tworzyć zamek błyskawiczny-archiwum (nazwijmy to np. mailer.zip), w którym umieszczamy katalog node_modules i pliki .env, indeks.js - wszystko z naszego katalogu projektów:

Funkcje Yandex wysyłają pocztę

Tworzymy funkcję o nazwie... poprawnie - poczta, w lewym menu nawigacyjnym wchodzimy Redaktor, wypełnij wymagane pola i przejdź do zakładki Archiwum ZIP pobierz nasze archiwum mailer.zip:

Funkcje Yandex wysyłają pocztę

A oto wspomniana wcześniej opcja pobrania Klucz API bezpośrednio tutaj, zamiast tworzyć plik w projekcie .envi nie instaluj pakietu dotenw. Ale to wszystko już zrobiliśmy, więc pokazuję to tylko w celach informacyjnych. Oznacza to, że nie ma potrzeby duplikowania!

Funkcje Yandex wysyłają pocztę

Teraz w prawym górnym rogu kliknij przycisk Utwórz wersjęi poczekaj kilka sekund. Gdy wszystko będzie gotowe, automatycznie przejdziemy do sekcji Przegląd. Tam włączymy tę opcję funkcja publicznaabyś mógł z nim współdziałać ze świata zewnętrznego.

Funkcje Yandex wysyłają pocztę

Widzisz niebieski link naprzeciwko napisu Link do połączenia? Kliknij to. Otworzy się puste okno przeglądarki... Ale czekaj - otrzymałem e-mail:

Funkcje Yandex wysyłają pocztę

Teraz możesz wrócić do konsoli SendGridi naciśnij przycisk Sprawdź integrację. System sprawdzi wszystko swoimi kanałami i w efekcie powinien zwrócić taki ekran:

Funkcje Yandex wysyłają pocztę

To wszystko, chłopaki (i oczywiście dziewczyny) - wszystko jest naprawdę bardzo proste i eleganckie! Będzie więcej artykułów. Jeśli ktoś jest zainteresowany przeczytaniem czegoś takiego, niech zasubskrybuje, aby nie przegapić.

4. Darowizny

Funkcje Yandex wysyłają pocztę

Źródło: www.habr.com

Dodaj komentarz