Fungsi Yandex menghantar mel

Fungsi Yandex menghantar mel

Hari ini kita akan mencipta apa yang dipanggil. Fungsi Yandex (nama rasmi Fungsi Awan Yandex), yang bersekongkol dengan perkhidmatan mel SendGrid akan menghantar "sabun" kepada pengguna yang tidur dengan tenang (gurau sahaja - saya tahu bahawa kita semua menentang spam).

Saya juga seorang lawan (tetapi tanpa fanatik) pelayan tradisional, dan penyokong apa yang dipanggil. tanpa pelayan penyelesaian (tanpa pelayan), kerana saya tidak suka (dan saya tidak begitu tahu cara) mentadbir pelayan, dan lebih-lebih lagi, bayar untuk masa apabila ia tidak dimuatkan. Perkara lain ialah fungsi. Seseorang melayan mereka tanpa saya, dan saya hanya membayar untuk panggilan. Pada awal Oktober 2019, Yandex membentangkannya Fungsi Awan Yandex - nampaknya yang pertama di Persekutuan Rusia tanpa pelayan. Dan apa yang menariknya ialah untuk kemahiran Alice mereka secara amnya bebas, jadi mereka telah berada dalam penglihatan persisian saya sejak itu. Tetapi mari kita mulakan sudah.

Mari bayangkan senario ini. Aplikasi anda (contohnya, kemahiran Alice Ingat dan Lupakan yang, dengan cara itu, juga berfungsi Fungsi Yandex) menjemput pengguna untuk membeli produk digital, contohnya, pilihan tambahan, dan pengguna membuat pembayaran. Beberapa jenis sistem pembayaran (sama dengan yang mengelirukan Yandex.Money) memproses pembayaran dan menghantarnya ke alamat yang anda berikan (dan kami akan mempunyai pautan untuk membuat panggilan Fungsi Yandex) HTTP-permintaan yang mengandungi butiran pembayaran, seperti jumlah, nama penuh, nombor telefon dan e-mel pembayar. Kami ingin memproses data ini dalam beberapa cara, contohnya: semak jumlah, buat entri yang sesuai dalam pangkalan data, hantar kepada pengguna SMS ΠΈ E-mel dengan pengesahan penerimaan pembayaran dan arahan selanjutnya. Jadi diri sendiri perkhidmatan mikro.

Tentang bagaimana dari Fungsi Yandex membuat entri dalam pangkalan data Cloud Firestore kami sudah melihatnya dalam tutorial Alice ingat semuanya (dan pada masa hadapan, saya fikir, kami akan mempertimbangkan contoh untuk pangkalan data lain - Pangkalan Data Yandex). Mengenai cara menghantar kepada pengguna SMS dan menyepadukan aplikasi kami dengan Yandex.Money β€” kami akan menyelesaikannya dalam masa terdekat. Sekarang mari kita berurusan dengan menghantar surat.

1. Buat akaun dalam SendGrid

NotaSendGrid hanyalah pilihan saya, yang saya buat atas beberapa sebab, yang utama ialah mereka mempunyai SDK siap pakai untuk Node.js. Anda boleh memilih mana-mana perkhidmatan mel lain.

Jom teruskan ke halaman pendaftaran akaun dan isi borang pendaftaran di sana. Kemudian kita pergi ke Papan Pemuka, dalam panel navigasi pilih API E-mel -> Panduan Integrasi, dan pada panel utama - API Web dan tekan butang Pilih. Semuanya seperti dalam gambar:

Fungsi Yandex menghantar mel

Dalam langkah seterusnya kita pilih Node.js:

Fungsi Yandex menghantar mel

Seterusnya kami datang dengan untuk kami API-nama kunci (hanya akan dipaparkan dalam konsol dalam senarai kunci, dan tiada kaitan dengan kod masa depan kami; Saya baru sahaja menghasilkan kod yang tidak boleh rosak kunci-demo-api) dan tekan butang Cipta Kunci:

Fungsi Yandex menghantar mel

Kunci akan dijana, kami akan menyalinnya dan menyimpannya dalam keyakinan yang paling dalam. Dan kami akan mempunyai skrin dengan butang Sahkan Integrasi, seperti dalam gambar di bawah, tetapi kami tidak akan mengkliknya lagi, tetapi mari teruskan menulis kod:

Fungsi Yandex menghantar mel

2. Menulis kod

Tetapi kod itu sendiri, seperti yang anda lihat, adalah sangat kecil - 22 baris!

Fungsi Yandex menghantar mel

Dalam barisan #8 E-mel saya dikod keras (dan oleh itu disembunyikan dengan malu) - sila nyatakan e-mel anda. Dalam kehidupan sebenar, kami akan menerima semua data (termasuk e-mel) daripada objek kategori acara. Sebagai contoh, jika kaedah SELEPAS objek dihantar ke fungsi kita pengguna dengan bidang (harta benda) e-mel, nilai medan ini boleh diperolehi seperti ini:

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

Dan jika alamat e-mel dihantar ke fungsi menggunakan kaedah GET, sebagai contoh: https://functions.yandexcloud.net/123abc?[email protected]
nilai parameter e-mel anda boleh mendapatkannya seperti ini:

const email = event.queryStringParameters.email;

Untuk melihat apa sebenarnya yang terkandung dalam objek kategori acara, anda boleh membuat yang paling mudah Fungsi Yandex dan putarkannya dengan pertanyaan:

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

Ini dibincangkan dengan lebih terperinci (tetapi kurang jelas) dalam dokumentasi rasmi di sini.

Jadi, buat direktori projek (contohnya, pengirim surat), pergi ke sana, mulakan projek, pasang dependencies:

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

Di sini hanya pakej yang diperlukan @sendgrid/mel. Beg plastik pengesah e-mel menyemak alamat e-mel untuk kesahihan (bagaimana saya tidak meneka dengan segera?), tetapi jika kami pasti (ia telah disemak untuk masa yang lama tanpa kami), kami tidak perlu memasangnya (dan, daripada sudah tentu, kami tidak perlu menyemaknya dalam kod). Beg plastik dotenv direka untuk membaca rekod daripada fail .env sebagai pembolehubah masa jalan. Tetapi dalam Fungsi Yandex Adalah mungkin untuk meletakkan pembolehubah ini terus ke dalam persekitaran masa jalan. Bagaimana? - Saya akan tunjukkan di bawah. Oleh itu pakej dotenv anda juga tidak boleh memasangnya, dan fail .env - jangan buat, dan pada masa yang sama kod berada dalam fail indeks.js jangan berubah. Tetapi di sini kami telah memasang pakej ini, jadi kami mencipta fail indeks.js ΠΈ .env:

touch index.js
touch .env

Dalam fail indeks.js tulis 22 baris kod yang ditunjukkan dalam tangkapan skrin di atas (hanya dalam baris #8 tukar e-mel anda), dan dalam fail .env - (tanpa sebarang petikan atau tanda baca) nyatakan pasangan - nama/nilai kunci APIyang baru-baru ini kami terima dalam konsol SendGrid:
SENDGRID_API_KEY=kunci-sendgrid-api-anda-sangat-rahsia

Dan jika anda mahu kurang kerja, klon repositori dan pasang pakej:

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

Dalam fail indeks.js, dalam barisan #8 tukar emel; buat fail dalam direktori root .env, dan di dalamnya menunjukkan nama/nilai kunci API, seperti yang ditunjukkan di atas.

3. Sebarkan

Lebih kurang jelas dan terperinci tentang Yandex.Cloud dan bagaimana untuk meletakkannya di sana Fungsi Yandex diterangkan dalam artikel saya Alice di bumi Bitrix - Saya menghantar orang jahil ke negara ini, dan untuk semua orang (dan mereka yang kembali) - kemudian sebuah buku komik kecil (iaitu satu siri gambar dan teks).

Kami cipta zip-archive (mari kita panggil, sebagai contoh, mailer.zip), di mana kami memasukkan direktori simpul_modul dan fail .env, index.js - segala-galanya daripada katalog projek kami:

Fungsi Yandex menghantar mel

Kami mencipta fungsi dengan nama... dengan betul - pengirim surat, dalam menu navigasi kiri kita masukkan Penyuntingnya, isikan medan yang diperlukan dan tukar ke tab ZIP arkib muat turun arkib kami mailer.zip:

Fungsi Yandex menghantar mel

Dan inilah pilihan yang disebutkan sebelum ini untuk memuat turun kunci API terus di sini, dan bukannya mencipta fail dalam projek .env, dan jangan pasang pakej dotenv. Tetapi kami telah melakukan semua ini, jadi saya menunjukkannya hanya untuk maklumat. Maksudnya, tak perlu buat pendua!

Fungsi Yandex menghantar mel

Sekarang di penjuru kanan sebelah atas klik butang Cipta Versi, dan tunggu beberapa saat. Apabila semuanya sudah siap, secara automatik kami akan pergi ke bahagian Mengkaji. Di sana kami akan membolehkan pilihan fungsi awamsupaya anda boleh berinteraksi dengannya dari dunia luar.

Fungsi Yandex menghantar mel

Anda melihat pautan biru bertentangan dengan tulisan itu Pautan ke panggilan? Klik ia. Tetingkap penyemak imbas kosong akan dibuka... Tetapi tunggu - saya menerima e-mel:

Fungsi Yandex menghantar mel

Kini anda boleh kembali ke konsol SendGrid, dan tekan butang Sahkan Integrasi. Sistem akan menyemak segala-galanya melalui salurannya, dan akibatnya ia akan mengembalikan skrin seperti ini:

Fungsi Yandex menghantar mel

Itu sahaja, lelaki (dan perempuan, sudah tentu) - semuanya sangat mudah dan elegan! Akan ada lebih banyak artikel. Jika ada yang berminat untuk membaca sesuatu seperti ini, langganlah supaya anda tidak ketinggalan.

4. Derma

Fungsi Yandex menghantar mel

Sumber: www.habr.com

Tambah komen