A Yandex funkciók leveleket küldenek

A Yandex funkciók leveleket küldenek

Ma megalkotjuk az ún. Yandex funkció (hivatalos név Yandex Cloud Functions), amely összejátszott a levelezési szolgáltatással SendGrid „szappant” küld a békésen alvó felhasználóknak (csak viccelek – tudom, hogy mindannyian a spam ellen vagyunk).

Én is a hagyományos szerverek ellenfele vagyok (de fanatizmus nélkül), és híve az ún. vagy szerver (szerver nélküli) megoldásokat, mert nem szeretem (és nem is nagyon tudom, hogyan kell) adminisztrálni a szervereket, és még inkább fizetni a be nem töltött időért. A másik dolog a funkciók. Valaki kiszolgálja őket nélkülem, és én csak a hívásokért fizetek. 2019. október elején a Yandex bemutatta a Yandex Cloud Functions - úgy tűnik, az első az Orosz Föderációban vagy szerver. És ami különösen jó, hogy Alice képességei számára általában ingyenesek, így azóta is a perifériás látásomban vannak. De kezdjük már el.

Képzeljük el ezt a forgatókönyvet. Az Ön alkalmazása (például Alice készsége Emlékezz és felejts amelyen egyébként szintén működik Yandex funkciók) felkéri a felhasználót, hogy vásároljon digitális terméket, például további opciókat, és a felhasználó fizet. Valamilyen fizetési rendszer (megtévesztően hasonló a Yandex) feldolgozza a fizetést, és elküldi az Ön által megadott címre (és lesz egy linkünk a híváshoz Yandex funkciók) HTTP- fizetési adatokat tartalmazó kérelem, mint például az összeg, a fizető teljes neve, telefonszáma és e-mail címe. Ezeket az adatokat valamilyen módon szeretnénk feldolgozni, például: ellenőrizzük az összeget, végezzünk megfelelő bejegyzéseket az adatbázisban, küldjük el a felhasználóknak SMS и E-mail a fizetés kézhezvételének visszaigazolásával és további utasításokkal. Tehát magad mikroszolgáltatás.

Arról, hogy honnan Yandex funkciók bejegyzéseket készíteni az adatbázisban Cloud Firestore már megnéztük az oktatóanyagban Alice mindenre emlékszik (és a jövőben, azt hiszem, fontolóra veszünk egy példát egy másik adatbázishoz - Yandex adatbázis). Arról, hogyan kell elküldeni a felhasználóknak SMS és integráljuk az alkalmazásunkat Yandex.Money - a közeljövőben megoldjuk. Most foglalkozzunk csak a levélküldéssel.

1. Hozzon létre egy fiókot a SendGridben

MegjegyzésA SendGrid csak az én választásom, amit több okból is választottam, a legfontosabb az, hogy van egy kész SDK-juk a Node.js-hez. Bármilyen más levelezési szolgáltatást választhat.

Menjünk tovább a fiók regisztrációs oldalára és ott töltse ki a regisztrációs űrlapot. Aztán megyünk a Műszerfal, a navigációs panelen válassza a lehetőséget Email API -> Integrációs útmutató, és a fő panelen - WebAPI és nyomja meg a gombot A pop-art design, négy időzóna kijelzése egyszerre és méretének arányai azok az érvek, amelyek a NeXtime Time Zones-t kiváló választássá teszik. Válassza a. Minden olyan, mint a képen:

A Yandex funkciók leveleket küldenek

A következő lépésben kiválasztjuk node.js:

A Yandex funkciók leveleket küldenek

Következő kitaláljuk magunknak API-kulcsnév (csak a konzolban jelenik meg a kulcsok listájában, és semmi köze a jövőbeli kódunkhoz; most találtam egy romlandó demo-api-key) és nyomja meg a gombot Kulcs létrehozása:

A Yandex funkciók leveleket küldenek

A kulcs létrejön, lemásoljuk és a legmélyebb bizalmasan megőrizzük. És lesz egy gombos képernyőnk Integráció ellenőrzése, mint az alábbi képen, de még nem kattintunk rá, hanem térjünk rá a kód írására:

A Yandex funkciók leveleket küldenek

2. Kód írása

De maga a kód, amint láthatja, nevetségesen kicsi - 22 sor!

A Yandex funkciók leveleket küldenek

Sorban #8 Az e-mail-címem kódolt (és ezért félénken el van rejtve) - kérjük, jelezze a sajátját. A való életben minden adatot megkapunk (beleértve email) tárgyból esemény. Például, ha a módszer POST egy objektumot küldünk a függvényünkhöz használó mezővel (ingatlan) email, ennek a mezőnek az értéke a következőképpen kapható meg:

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

És ha az e-mail címet a metódus segítségével adjuk át a függvénynek GET, például: https://functions.yandexcloud.net/123abc?[email protected]
paraméter értéke email így kaphatod meg:

const email = event.queryStringParameters.email;

Megnézni, hogy pontosan mit is tartalmaz egy objektum esemény, létrehozhatja a legegyszerűbbet Yandex funkció és csavard le lekérdezésekkel:

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

Ezt részletesebben (de kevésbé világosan) tárgyalja a hivatalos dokumentáció itt.

Tehát hozzon létre egy projektkönyvtárat (pl. postázó), lépjen rá, inicializálja a projektet, telepítse a függőségeket:

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

Itt csak a csomag szükséges @sendgrid/mail. Nejlonzacskó email-ellenőrző ellenőrzi az e-mail cím érvényességét (hogy nem tippeltem rögtön?), de ha biztosak vagyunk benne (már régen leellenőrizték nélkülünk), akkor nem kell telepítenünk (és pl. természetesen nem kell ellenőriznünk a kódban). Nejlonzacskó dotenv úgy tervezték, hogy rekordokat olvasson egy fájlból .NS mint futásidejű változók. De Yandex funkciók Ezeket a változókat közvetlenül a futási környezetbe lehet helyezni. Hogyan? - Lent megmutatom. Ezért a csomag dotenv akkor sem telepítheti, és a fájlt .NS - ne hozzon létre, és ugyanakkor a kód benne van a fájlban index.js ne változz. De itt telepítettük ezt a csomagot, így fájlokat hozunk létre index.js и .NS:

touch index.js
touch .env

Fájlban index.js írjon 22 sornyi kódot, amely a fenti képernyőképen látható (csak a sorban #8 módosítsa az e-mail címét), és a fájlban .NS - (idézőjelek és írásjelek nélkül) adja meg a pár - kulcs nevét/értékét APIamit nemrég kaptunk a konzolban SendGrid:
SENDGRID_API_KEY=a-nagyon-titkos-sendgrid-api-kulcs

És ha kevesebb munkát szeretne, klónozza a tárolót, és telepítse a csomagokat:

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

Fájlban index.js, Sorban #8 e-mailt változtatni; hozzon létre egy fájlt a gyökérkönyvtárban .NS, és ebben tüntesse fel a kulcs nevét/értékét API, ahogy fentebb látható.

3. Telepítés

Többé-kevésbé világosan és részletesen kb Yandex.Cloud és hogyan kell oda helyezni Yandex funkciók cikkemben leírtam Alice Bitrix földjén - Küldöm ebbe az országba a tudatlanokat, meg mindenki másnak (és a visszatérőknek) - majd egy kis képregényt (azaz kép- és szövegsort).

Teremt postai irányítószám-archívum (nevezzük pl. levelező.zip), amelybe belefoglaljuk a könyvtárat csomópont_modulok és fájlokat .env, index.js - mindent a projektkatalógusunkból:

A Yandex funkciók leveleket küldenek

Létrehozunk egy függvényt a névvel... helyesen - postázó, a bal oldali navigációs menübe lépünk be A szerkesztő, töltse ki a kötelező mezőket, és váltson a lapra ZIP archívum töltse le archívumunkat levelező.zip:

A Yandex funkciók leveleket küldenek

És itt van a korábban említett letöltési lehetőség API kulcs közvetlenül itt, ahelyett, hogy fájlt hozna létre a projektben .NS, és ne telepítse a csomagot dotenv. De mindezt már megtettük, ezért csak tájékoztatásul mutatom meg. Vagyis nem kell sokszorosítani!

A Yandex funkciók leveleket küldenek

Most a jobb felső sarokban kattintson a gombra Verzió létrehozása, és várjon néhány másodpercet. Ha minden készen van, automatikusan a szekcióba lépünk Értékelés. Ott engedélyezzük az opciót Nyilvános funkcióhogy kapcsolatba léphessen vele a külvilágból.

A Yandex funkciók leveleket küldenek

Látod a kék linket a felirattal szemben Hívás link? Kattints rá. Megnyílik egy üres böngészőablak... De várj - kaptam egy e-mailt:

A Yandex funkciók leveleket küldenek

Most visszatérhet a konzolhoz SendGrid, majd nyomja meg a gombot Integráció ellenőrzése. A rendszer mindent ellenőriz a csatornáin keresztül, és ennek eredményeként a következő képernyőt kell visszaadnia:

A Yandex funkciók leveleket küldenek

Ennyi, srácok (és persze lányok) – tényleg minden nagyon egyszerű és elegáns! Lesznek még cikkek. Ha valakit érdekel ilyesmi, iratkozzon fel, nehogy lemaradjon.

4. Adományok

A Yandex funkciók leveleket küldenek

Forrás: will.com

Hozzászólás