Yandex-toiminnot lähettävät sähköpostia

Yandex-toiminnot lähettävät sähköpostia

Tänään luomme ns. Yandex-toiminto (virallinen nimi Yandex Cloud Functions), joka teki yhteistyötä postituspalvelun kanssa SendGrid lähettää "saippuaa" rauhallisesti nukkuville käyttäjille (vitsailin vain - tiedän, että olemme kaikki roskapostia vastaan).

Olen myös perinteisten palvelimien vastustaja (mutta ilman fanaattista) ja ns. serverless (palvelimettomat) ratkaisut, koska en pidä (enkä todellakaan tiedä miten) hallita palvelimia, ja vielä enemmän, maksan ajasta, kun niitä ei ladata. Toinen asia on toiminnot. Joku palvelee heitä ilman minua, ja minä maksan vain puheluista. Lokakuun 2019 alussa Yandex esitteli sen Yandex Cloud Functions - näyttää olevan ensimmäinen Venäjän federaatiossa serverless. Ja mikä on erityisen mukavaa, on se, että Alicen taidoista ne ovat yleensä ilmaisia, joten ne ovat olleet perifeerisissä näkemissäni siitä lähtien. Mutta aloitetaan jo.

Kuvitellaanpa tämä skenaario. Hakemuksesi (esimerkiksi Alicen taidot Muista ja unohda joka muuten toimii myös Yandex-toiminnot) tarjoaa käyttäjälle mahdollisuuden ostaa esimerkiksi digitaalisen tuotteen lisävaihtoehtoja, ja käyttäjä suorittaa maksun. Jonkinlainen maksujärjestelmä (hämmentävästi samanlainen kuin Yandex) käsittelee maksun ja lähettää sen antamaasi osoitteeseen (ja meillä on linkki soittamiseen Yandex-toiminnot) HTTP-pyyntö, joka sisältää maksutiedot, kuten summan, maksajan koko nimen, puhelinnumeron ja sähköpostiosoitteen. Haluamme käsitellä näitä tietoja jollakin tavalla, esimerkiksi: tarkista määrä, tee tarvittavat merkinnät tietokantaan, lähetä käyttäjille SMS и Sähköposti maksun vastaanottamisesta ja lisäohjeista. Joten itsesi mikropalvelu.

Tietoja siitä, kuinka alkaen Yandex-toiminnot tehdä merkintöjä tietokantaan Pilvi Firestore katsoimme sen jo opetusohjelmassa Alice muistaa kaiken (ja tulevaisuudessa harkitsemme esimerkkiä toisesta tietokannasta - Yandex-tietokanta). Tietoja käyttäjille lähettämisestä SMS ja integroi sovelluksemme kanssa Yandex.Money – Selvitämme asian lähitulevaisuudessa. Nyt käsitellään vain kirjeiden lähettämistä.

1. Luo tili SendGridissä

HuomataSendGrid on vain minun valintani, jonka tein useista syistä, joista tärkein on, että heillä on valmis SDK Node.js:lle. Voit valita minkä tahansa muun postituspalvelun.

Ohitamme tilin rekisteröintisivulle ja täytä siellä oleva ilmoittautumislomake. Sitten mennään koontinäyttöön., valitse navigointipaneelista Sähköposti API -> Integrointiopas, ja pääpaneelissa - Web-sovellusliittymä ja paina painiketta Valita. Kaikki on kuten kuvassa:

Yandex-toiminnot lähettävät sähköpostia

Seuraavassa vaiheessa valitsemme Node.js:

Yandex-toiminnot lähettävät sähköpostia

Seuraavaksi keksimme omamme API-avaimen nimi (näkyy vain konsolissa avainluettelossa, eikä sillä ole mitään tekemistä tulevan koodimme kanssa; keksin katoamattoman demo-api-avain) ja paina -painiketta Luo avain:

Yandex-toiminnot lähettävät sähköpostia

Avain luodaan, kopioimme sen ja säilytämme sen syvimmässä luottamuksessa. Ja meillä on näyttö, jossa on painike Tarkista integraatio, kuten alla olevassa kuvassa, mutta emme vielä napsauta sitä, vaan siirrytään koodin kirjoittamiseen:

Yandex-toiminnot lähettävät sähköpostia

2. Koodin kirjoittaminen

Mutta itse koodi, kuten näet, on naurettavan pieni - 22 riviä!

Yandex-toiminnot lähettävät sähköpostia

Linjassa #8 Sähköpostini on kovakoodattu (ja siksi ujosti piilotettu) - ilmoita omasi. Tosielämässä saamme kaikki tiedot (mukaan lukien email) kohteesta tapahtumaa varten. Esimerkiksi jos menetelmä POST kohde lähetetään toimintoomme lähettämä pellolla (kiinteistö) email, tämän kentän arvo voidaan saada seuraavasti:

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

Ja jos sähköpostiosoite välitetään funktiolle menetelmällä SAA, esimerkiksi: https://functions.yandexcloud.net/123abc?[email protected]
parametrin arvo email saat sen näin:

const email = event.queryStringParameters.email;

Tarkastellaksesi, mitä esine tarkalleen sisältää tapahtumaa varten, voit luoda yksinkertaisimman Yandex-toiminto ja kierrä sitä kyselyillä:

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

Tätä käsitellään yksityiskohtaisemmin (mutta vähemmän selvästi) virallisessa dokumentaatiossa täällä.

Luo siis projektihakemisto (esim. Mailer), mene siihen, alusta projekti, asenna riippuvuudet:

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

Tässä tarvitaan vain paketti @sendgrid/mail. Muovipussi sähköpostin vahvistaja tarkistaa sähköpostiosoitteen oikeellisuuden (miten en heti arvannut?), mutta jos olemme siitä varmoja (se on jo tarkastettu pitkään ilman meitä), meidän ei tarvitse asentaa sitä (ja meidän ei tietenkään tarvitse tarkistaa sitä koodista). Muovipussi dotenv suunniteltu lukemaan tietueita tiedostosta .env ajonaikaisina muuttujina. Mutta sisään Yandex-toiminnot Nämä muuttujat on mahdollista sijoittaa suoraan ajonaikaiseen ympäristöön. Miten? - Näytän sen alla. Siksi paketti dotenv et myöskään voi asentaa sitä ja tiedostoa .env - älä luo, ja samalla koodi on tiedostossa index.js Älä vaihda. Mutta täällä olemme asentaneet tämän paketin, joten luomme tiedostoja index.js и .env:

touch index.js
touch .env

Tiedostossa index.js kirjoita 22 riviä koodia, jotka näkyvät yllä olevassa kuvakaappauksessa (vain riville #8 vaihda sähköpostiosoitteesi) ja tiedostossa .env - (ilman lainausmerkkejä tai välimerkkejä) määritä pari - avaimen nimi/arvo APIjonka saimme äskettäin konsoliin SendGrid:
SENDGRID_API_KEY=hyvin-salainen-sendgrid-api-avain

Ja jos haluat vähemmän työtä, kloonaa arkisto ja asenna paketit:

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

Tiedostossa index.js, linjassa #8 Vaihda sähköposti; luo tiedosto juurihakemistoon .env, ja osoita siinä avaimen nimi/arvo API, kuten yllä näkyy.

3. Ota käyttöön

Enemmän tai vähemmän selkeästi ja yksityiskohtaisesti aiheesta Yandex.Cloud ja kuinka se laitetaan sinne Yandex-toiminnot kuvattu artikkelissani Liisa Bitrixin maassa - Lähetän tietämättömät tähän maahan ja kaikille muille (ja palanneille) - sitten pienen sarjakuvan (eli sarjan kuvia ja tekstiä).

Luoda vetoketju-arkisto (kutsutaanko sitä esim. mailer.zip), johon sisällytämme hakemiston solmu_moduulit ja tiedostot .env, index.js - kaikki projektiluettelostamme:

Yandex-toiminnot lähettävät sähköpostia

Luomme funktion nimellä... oikein - Mailer, siirrymme vasemmanpuoleiseen navigointivalikkoon Toimittaja, täytä vaaditut kentät ja siirry välilehteen ZIP-arkisto lataa arkistomme mailer.zip:

Yandex-toiminnot lähettävät sähköpostia

Ja tässä on aiemmin mainittu latausvaihtoehto API-avain suoraan tänne tiedoston luomisen sijaan projektissa .env, äläkä asenna pakettia dotenv. Mutta olemme jo tehneet tämän kaiken, joten näytän sen vain tiedoksi. Eli ei ole tarvetta monistaa!

Yandex-toiminnot lähettävät sähköpostia

Napsauta nyt oikeassa yläkulmassa olevaa painiketta Luo versio, ja odota pari sekuntia. Kun kaikki on valmis, siirrymme automaattisesti osioon Arvostelu. Siellä otamme vaihtoehdon käyttöön julkinen tehtäväjotta voit olla vuorovaikutuksessa sen kanssa ulkomaailmasta.

Yandex-toiminnot lähettävät sähköpostia

Näet sinisen linkin kirjoitusta vastapäätä Linkki puheluun? Klikkaa sitä. Tyhjä selainikkuna avautuu... Mutta odota - sain sähköpostin:

Yandex-toiminnot lähettävät sähköpostia

Nyt voit palata konsoliin SendGrid, ja paina -painiketta Tarkista integraatio. Järjestelmä tarkistaa kaiken kanaviensa kautta, ja sen seurauksena sen pitäisi palauttaa seuraavanlainen näyttö:

Yandex-toiminnot lähettävät sähköpostia

Siinä kaikki, pojat (ja tytöt tietysti) - kaikki on todella yksinkertaista ja tyylikästä! Artikkeleita tulee lisää. Jos joku on kiinnostunut lukemaan jotain tällaista, niin tilaakaa, ettet jää paitsi.

4. Lahjoitukset

Yandex-toiminnot lähettävät sähköpostia

Lähde: will.com

Lisää kommentti