Fungsi Yandex ngirim surat

Fungsi Yandex ngirim surat

Dinten ieu kami baris nyieun nu disebut. Fungsi Yandex (ngaran resmi Fungsi Awan Yandex), nu colluded jeung layanan milis SendGrid bakal ngirim "sabun" ka pamaké sare peacefully (ngan bercanda - Kuring nyaho yén urang sadayana ngalawan spam).

Kami ogé lawan (tapi tanpa fanatisme) tina server tradisional, sarta supporter nu disebut. serverless (serverless) solusi, sabab kuring teu resep (jeung kuring teu bener nyaho kumaha carana) administer server, komo leuwih ti kitu, mayar waktu nalika maranéhna teu dimuat. Hal séjén nyaéta fungsi. Aya anu ngalayanan aranjeunna tanpa kuring, sareng kuring ngan ukur mayar telepon. Dina awal Oktober 2019, Yandex nampilkeun na Fungsi Awan Yandex - sigana anu munggaran di Féderasi Rusia serverless. Sareng anu paling saé nyaéta pikeun kaahlian Alice aranjeunna umumna gratis, janten aranjeunna parantos aya dina visi periferal kuring ti saprak éta. Tapi hayu urang ngamimitian geus.

Hayu urang ngabayangkeun skenario ieu. Aplikasi anjeun (contona, kaahlian Alice Inget jeung Poho nu, saliwatan, ogé jalan dina Fungsi Yandex) Ujang pamaké pikeun meuli produk digital, contona, pilihan tambahan, sarta pamaké nyieun mayar a. Sababaraha jenis sistem pembayaran (ngabingungkeun sarupa Yandex) ngolah pamayaran sareng ngirimkeunana ka alamat anu anjeun bikeun (sareng kami bakal gaduh tautan pikeun nelepon Fungsi Yandex) HTTP-pamenta anu ngandung detil pamayaran, sapertos jumlah, nami lengkep, nomer telepon sareng email pamayaran. Kami hoyong ngolah data ieu ku sababaraha cara, contona: pariksa jumlahna, ngadamel éntri anu pas dina pangkalan data, kirimkeun ka pangguna SMS и surélék kalawan konfirmasi tina resi pembayaran jeung parentah salajengna. Jadi sorangan microservice.

Ngeunaan kumaha ti Fungsi Yandex nyieun éntri dina database Awan Firestore kami geus kasampak di eta dina tutorial Alice émut sadayana (sareng ka hareup, kuring pikir, urang bakal nganggap conto pikeun pangkalan data sanés - Pangkalan data Yandex). Ngeunaan kumaha ngirim ka pamaké SMS sareng ngahijikeun aplikasi kami sareng Yandex.Duit - urang bakal nyortir eta kaluar dina mangsa nu bakal datang. Ayeuna hayu urang nungkulan ngirim surat.

1. Jieun rekening di SendGrid

nyariosSendGrid mangrupikeun pilihan kuring, anu ku kuring dilakukeun ku sababaraha alesan, anu utama nyaéta aranjeunna gaduh SDK anu siap-siap pikeun Node.js. Anjeun tiasa milih jasa surat anu sanés.

Hayu urang ngaléngkah ka kaca pendaptaran akun sareng eusian formulir pendaptaran di dinya. Teras we ka dasbor, dina panel navigasi pilih Email API -> Pituduh Integrasi, sareng dina panel utama - API Wéb tur pencét tombol milih. Sadayana sapertos dina gambar:

Fungsi Yandex ngirim surat

Dina lengkah saterusna urang milih Node.js:

Fungsi Yandex ngirim surat

Satuluyna urang datang jeung pikeun urang API-ngaran konci (bakal ditampilkeun ngan dina konsol dina daptar konci, sarta teu boga nanaon ka teu jeung kode hareup urang; Kuring ngan datang nepi ka hiji imperishable demo-api-konci) sareng pencét tombol Jieun Key:

Fungsi Yandex ngirim surat

konci bakal dihasilkeun, urang bakal nyalin eta sarta tetep dina kapercayaan deepest. Sarta kami bakal boga layar kalawan tombol Pariksa Integrasi, Saperti dina gambar di handap ieu, tapi urang moal klik deui, tapi hayu urang neruskeun nulis kode:

Fungsi Yandex ngirim surat

2. Kodeu tulisan

Tapi kode sorangan, anjeun tiasa ningali, ridiculously leutik - 22 garis!

Fungsi Yandex ngirim surat

Baris #8 Surélék abdi hardcoded (ku kituna isin disumputkeun) - punten nunjukkeun milik anjeun. Dina kahirupan nyata, urang bakal nampi sadaya data (kaasup email) tina objék kajadian. Contona, upami metoda POST hiji obyék dikirim ka fungsi urang nu make kalawan sawah (properti) email, nilai widang ieu tiasa didapet kawas kieu:

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

Tur upami alamat surélék disalurkeun kana fungsi ngagunakeun métode meunangkeunContona: https://functions.yandexcloud.net/123abc?[email protected]
nilai parameter email anjeun tiasa kéngingkeun sapertos kieu:

const email = event.queryStringParameters.email;

Pikeun nempo naon kahayang anu dikandung dina hiji obyék kajadian, Anjeun bisa nyieun pangbasajanna Fungsi Yandex sareng pulas ku patarosan:

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

Ieu dibahas dina leuwih jéntré (tapi kirang jelas) dina dokuméntasi resmi di dieu.

Janten, jieun diréktori proyék (contona, mailer), lebet ka dinya, initialize proyék, pasang dependensi:

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

Di dieu ngan ukur pakét anu diperyogikeun @sendgrid/mail. Kantong plastik email-validator pariksa alamat surélék pikeun validitas (kumaha kuring teu nebak langsung?), Tapi lamun urang yakin eta (eta geus dipariksa pikeun lila tanpa kami), urang teu kudu install deui (jeung, tina tangtu, urang teu kudu pariksa deui dina kode). Kantong plastik dotenv dirancang pikeun maca rékaman tina file .env salaku variabel runtime. Tapi dina Fungsi Yandex Kasebut nyaéta dimungkinkeun pikeun nempatkeun variabel ieu langsung kana lingkungan runtime. Kumaha? - Kuring gé nunjukkeun eta di handap. Kituna paket dotenv anjeun ogé tiasa teu install deui, jeung file .env - ulah nyieun, sarta dina waktos anu sareng kode dina file indéks.js ulah robah. Tapi di dieu kami geus dipasang pakét ieu, jadi urang nyieun file indéks.js и .env:

touch index.js
touch .env

Dina file indéks.js nulis 22 garis kode ditémbongkeun dina screenshot di luhur (ngan dina garis #8 ngarobah email anjeun), sareng dina file .env - (tanpa tanda petik atawa tanda baca) tangtukeun pasangan - ngaran konci / nilai APInu nembe kami nampi dina konsol nu SendGrid:
SENDGRID_API_KEY=anjeun-pisan-rahasia-sendgrid-api-key

Sareng upami anjeun hoyong kirang damel, clone gudang sareng pasang bungkusan:

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

Dina file indéks.js, baris #8 ngarobah email; nyieun file dina diréktori root .env, sareng di jerona nunjukkeun nami / nilai konci API, sakumaha ditémbongkeun ngan di luhur.

3. Nyebarkeun

Leuwih atawa kurang jelas tur jéntré ngeunaan Yandex.Cloud sareng kumaha nempatkeunana di dinya Fungsi Yandex dijelaskeun dina artikel abdi Alice dina Land of Bitrix - Kuring ngirim jahiliah ka nagara ieu, jeung dulur sejenna (jeung jalma anu balik) - lajeng buku komik leutik (i.e. runtuyan gambar jeung téks).

Urang nyieun pos-arsip (hayu urang sebut wae, contona, mailer.zip), dimana urang kalebet diréktori simpul_modul jeung file .env, index.js - sadayana tina katalog proyék kami:

Fungsi Yandex ngirim surat

Urang nyieun hiji fungsi jeung ngaran ... bener - mailer, dina menu navigasi kénca kami asupkeun jelema nu nyunting, eusian widang nu diperlukeun, tur pindah ka tab arsip ZIP unduh arsip kami mailer.zip:

Fungsi Yandex ngirim surat

Sareng ieu mangrupikeun pilihan anu disebatkeun sateuacana pikeun diunduh konci API langsung di dieu, tinimbang nyieun file dina proyék .env, sarta ulah install pakét dotenv. Tapi kami parantos ngalaksanakeun sadayana ieu, janten kuring nunjukkeun éta ngan pikeun inpormasi. Hartina, teu perlu duplikat!

Fungsi Yandex ngirim surat

Ayeuna di pojok katuhu luhur klik tombol Jieun versi, sareng antosan sababaraha detik. Nalika sagalana geus siap, urang bakal otomatis buka bagian gambaran. Di dinya urang bakal ngaktipkeun pilihan Fungsi umumku kituna anjeun bisa berinteraksi sareng eta ti dunya luar.

Fungsi Yandex ngirim surat

Anjeun ningali link biru sabalikna prasasti Tumbu nelepon? Pencét éta. Jandéla pangotektak kosong bakal dibuka... Tapi antosan - Abdi nampi email:

Fungsi Yandex ngirim surat

Ayeuna anjeun tiasa uih deui ka konsol SendGrid, teras pencét tombol Pariksa Integrasi. Sistim bakal pariksa sagalana ngaliwatan saluran na, sarta salaku hasilna kudu balik layar kawas kieu:

Fungsi Yandex ngirim surat

Éta waé, lalaki (sareng awéwé, tangtosna) - sadayana saderhana pisan sareng elegan! Bakal aya deui artikel. Upami aya anu resep maca sapertos kieu, ngalanggan supados anjeun henteu sono.

4. Sumbangan

Fungsi Yandex ngirim surat

sumber: www.habr.com

Tambahkeun komentar