Le funzioni Yandex inviano posta

Le funzioni Yandex inviano posta

Oggi creeremo il cosiddetto. Funzione Yandex (nome ufficiale Funzioni cloud di Yandex), che era in collusione con il servizio postale SendGrid invierà "soap" agli utenti che dormono pacificamente (sto scherzando, so che siamo tutti contro lo spam).

Sono anche un avversario (ma senza fanatismo) dei server tradizionali, e un sostenitore dei cosiddetti. serverless soluzioni (serverless), perché non mi piace (e non so davvero come) amministrare i server e, a maggior ragione, pagare per il tempo in cui non vengono caricati. Un'altra cosa sono le funzioni. Qualcuno li assiste senza di me e pago solo le chiamate. All'inizio di ottobre 2019, Yandex ha presentato il suo Funzioni cloud di Yandex - sembra essere il primo nella Federazione Russa serverless. E la cosa particolarmente bella è che per le abilità di Alice sono generalmente gratuite, quindi da allora sono state nella mia visione periferica. Ma cominciamo già.

Immaginiamo questo scenario. La tua candidatura (ad esempio, la competenza di Alice Ricorda e dimentica su cui, tra l'altro, funziona anche Funzioni Yandex) invita l'utente ad acquistare un prodotto digitale, ad esempio opzioni aggiuntive, e l'utente effettua un pagamento. Una sorta di sistema di pagamento (confondibilmente simile a Yandex) elabora il pagamento e lo invia all'indirizzo da te fornito (e avremo un link per chiamare Funzioni Yandex) HTTP-una richiesta contenente i dettagli del pagamento, come importo, nome completo, numero di telefono ed e-mail del pagatore. Vogliamo elaborare questi dati in qualche modo, ad esempio: controllare l'importo, inserire le opportune voci nel database, inviarlo agli utenti sms и E-mail con conferma di ricezione del pagamento e ulteriori istruzioni. Quindi te stesso microservizio.

Informazioni su come da Funzioni Yandex inserire voci nel database CloudFirestore l'abbiamo già visto nel tutorial Alice ricorda tutto (e in futuro, penso, prenderemo in considerazione un esempio per un altro database - Banca dati Yandex). Informazioni su come inviare agli utenti sms e integrare la nostra applicazione con Yandex.Money - sistemeremo la cosa nel prossimo futuro. Ora occupiamoci solo dell'invio di lettere.

1. Crea un account in SendGrid

NotaSendGrid è solo una mia scelta, che ho fatto per diversi motivi, il principale è che hanno un SDK già pronto per Node.js. Puoi scegliere qualsiasi altro servizio di spedizione.

Andare avanti alla pagina di registrazione dell'account e compila il modulo di registrazione lì. Allora andiamo a Performance modelli/hostess, nel pannello di navigazione selezionare API e-mail -> Guida all'integrazionee sul pannello principale - API Web e premere il pulsante Scegli. Tutto è come nella foto:

Le funzioni Yandex inviano posta

Nel passaggio successivo selezioniamo Node.js:

Le funzioni Yandex inviano posta

Successivamente ci viene in mente il nostro API-nome della chiave (verrà visualizzato solo nella console nell'elenco delle chiavi e non ha nulla a che fare con il nostro codice futuro; mi è venuta in mente una parola imperitura chiave-api-demo) e premere il pulsante Crea chiave:

Le funzioni Yandex inviano posta

La chiave verrà generata, la copieremo e la conserveremo nella più profonda riservatezza. E avremo uno schermo con un pulsante Verifica l'integrazione, come nell'immagine qui sotto, ma non lo cliccheremo ancora, ma passiamo alla scrittura del codice:

Le funzioni Yandex inviano posta

2. Scrittura del codice

Ma il codice stesso, come puoi vedere, è ridicolmente piccolo: 22 righe!

Le funzioni Yandex inviano posta

In linea #8 La mia email è codificata (e quindi timidamente nascosta): indica la tua. Nella vita reale, riceveremo tutti i dati (compresi email) dall'oggetto evento. Ad esempio, se il metodo POST un oggetto viene inviato alla nostra funzione Utente con campo (proprietà) email, il valore di questo campo può essere ottenuto in questo modo:

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

E se l'indirizzo email viene passato alla funzione utilizzando il metodo GET, ad esempio: https://functions.yandexcloud.net/123abc?[email protected]
valore del parametro email puoi ottenerlo in questo modo:

const email = event.queryStringParameters.email;

Per dare un'occhiata a cosa è contenuto esattamente in un oggetto evento, puoi creare il più semplice Funzione Yandex e stravolgilo con le query:

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

Questo è discusso in modo più dettagliato (ma meno chiaramente) nella documentazione ufficiale qui.

Quindi, crea una directory di progetto (ad esempio, postale), vai lì, inizializza il progetto, installa le dipendenze:

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

Qui è richiesto solo il pacchetto @sendgrid/mail. Sacchetto di plastica validatore di posta elettronica controlla la validità dell'indirizzo email (come ho fatto a non indovinare subito?), ma se ne siamo sicuri (è già stato controllato a lungo senza di noi), non dobbiamo installarlo (e, naturalmente, ovviamente non dobbiamo controllarlo nel codice). Sacchetto di plastica dotenv progettato per leggere i record da un file .env come variabili di runtime. Ma in Funzioni Yandex È possibile inserire queste variabili direttamente nell'ambiente runtime. Come? - Lo mostrerò qui sotto. Quindi il pacchetto dotenv puoi anche non installarlo e il file .env - non creare e allo stesso tempo il codice è nel file index.js non cambiare. Ma qui abbiamo installato questo pacchetto, quindi creiamo file index.js и .env:

touch index.js
touch .env

In archivio index.js scrivi 22 righe di codice mostrato nello screenshot qui sopra (solo nella riga #8 cambia la tua email) e nel file .env - (senza virgolette o segni di punteggiatura) specificare la coppia - nome/valore della chiave APIche abbiamo recentemente ricevuto nella console SendGrid:
SENDGRID_API_KEY=la tua chiave API sendgrid molto segreta

E se vuoi meno lavoro, clona il repository e installa i pacchetti:

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

In archivio index.js, in linea #8 cambia email; creare un file nella directory principale .env, e in esso indicare il nome/valore della chiave API, come mostrato appena sopra.

3. Distribuire

Più o meno chiaramente e in dettaglio Yandex.Cloud e come posizionarlo lì Funzioni Yandex descritto nel mio articolo Alice nella terra di Bitrix - Mando agli ignoranti in questo Paese, e per tutti gli altri (e quelli che sono tornati) - poi un piccolo fumetto (cioè una serie di immagini e testo).

Noi creiamo chiusura-archivio (chiamiamolo, ad esempio, mailer.zip), in cui includiamo la directory nodi_moduli e file .env, indice.js - tutto dal nostro catalogo di progetti:

Le funzioni Yandex inviano posta

Creiamo una funzione con il nome... correttamente - postale, nel menu di navigazione a sinistra entriamo editore, compila i campi richiesti e passa alla scheda Archivio ZIP scarica il nostro archivio mailer.zip:

Le funzioni Yandex inviano posta

Ed ecco l'opzione di download menzionata in precedenza Chiave API direttamente qui, anziché creare un file nel progetto .enve non installare il pacchetto dotenv. Ma tutto questo lo abbiamo già fatto, quindi lo mostro solo a titolo informativo. Cioè, non è necessario duplicare!

Le funzioni Yandex inviano posta

Ora nell'angolo in alto a destra fai clic sul pulsante Crea versionee attendi un paio di secondi. Quando tutto sarà pronto, andremo automaticamente alla sezione panoramica. Lì abiliteremo l'opzione funzione pubblicain modo che tu possa interagire con esso dal mondo esterno.

Le funzioni Yandex inviano posta

Vedi il collegamento blu di fronte all'iscrizione Link alla chiamata? Cliccalo. Si aprirà una finestra del browser vuota... Ma aspetta: ho ricevuto un'e-mail:

Le funzioni Yandex inviano posta

Ora puoi tornare alla console SendGride premere il pulsante Verifica l'integrazione. Il sistema controllerà il tutto attraverso i suoi canali, e di conseguenza dovrebbe restituire una schermata come questa:

Le funzioni Yandex inviano posta

Questo è tutto, ragazzi (e ragazze, ovviamente): tutto è davvero molto semplice ed elegante! Ci saranno più articoli. Se qualcuno è interessato a leggere qualcosa del genere, iscriviti per non perderlo.

4. Donazioni

Le funzioni Yandex inviano posta

Fonte: habr.com

Aggiungi un commento