Yandex funktsiyalari pochta jo'natish

Yandex funktsiyalari pochta jo'natish

Bugun biz deb atalmish yaratamiz. Yandex funktsiyasi (rasmiy nomi Yandex bulut funktsiyalari), pochta xizmati bilan til biriktirgan SendGrid tinch uxlayotgan foydalanuvchilarga "sovun" yuboradi (hazillashmoqda - biz hammamiz spamga qarshi ekanligimizni bilaman).

Men ham an'anaviy serverlarning raqibiman (lekin fanatizmsiz) va shunday deb atalmishlar tarafdoriman. serversiz (serversiz) echimlar, chunki men serverlarni boshqarishni yoqtirmayman (va men qanday qilishni bilmayman) va undan ham ko'proq, ular yuklanmagan vaqt uchun pul to'layman. Yana bir narsa - bu funktsiyalar. Kimdir ularga mensiz xizmat qiladi va men faqat qo'ng'iroqlar uchun to'layman. 2019 yil oktyabr oyi boshida Yandex o'zining taqdimotini o'tkazdi Yandex bulut funktsiyalari - Rossiya Federatsiyasida birinchi bo'lib tuyuladi serversiz. Va ayniqsa yoqimli tomoni shundaki, Elisning mahorati uchun ular umuman bepul, shuning uchun ular o'sha paytdan beri mening periferik ko'rishimda. Ammo keling, allaqachon boshlaylik.

Keling, ushbu stsenariyni tasavvur qilaylik. Sizning arizangiz (masalan, Elisning mahorati Eslab qoling va unuting Aytgancha, bu ham ishlaydi Yandex funktsiyalari) foydalanuvchini raqamli mahsulotni sotib olishga taklif qiladi, masalan, qo'shimcha variantlar va foydalanuvchi to'lovni amalga oshiradi. Qandaydir to'lov tizimi (chalkashlik bilan o'xshash Yandex.Money) toβ€˜lovni qayta ishlaydi va siz koβ€˜rsatgan manzilga yuboradi (va bizda qoβ€˜ngβ€˜iroq qilish uchun havola boβ€˜ladi Yandex funktsiyalari) HTTP- to'lovchining miqdori, to'liq ismi, telefon raqami va elektron pochtasi kabi to'lov tafsilotlarini o'z ichiga olgan so'rov. Biz ushbu ma'lumotlarni qandaydir tarzda qayta ishlashni xohlaymiz, masalan: miqdorni tekshiring, ma'lumotlar bazasiga tegishli yozuvlarni kiriting, foydalanuvchilarga yuboring SMS ΠΈ Email to'lovni qabul qilish tasdiqlanishi va qo'shimcha ko'rsatmalar bilan. Shunday qilib, o'zingiz mikroservis.

Qanday qilib kelganligi haqida Yandex funktsiyalari ma'lumotlar bazasiga yozuvlar kiriting Bulutli Firestore Biz buni allaqachon o'quv qo'llanmasida ko'rib chiqdik Elis hamma narsani eslaydi (va kelajakda, menimcha, biz boshqa ma'lumotlar bazasi uchun misolni ko'rib chiqamiz - Yandex ma'lumotlar bazasi). Foydalanuvchilarga qanday yuborish haqida SMS va ilovamiz bilan integratsiya Yandex.Money - Yaqin kunlarda hal qilamiz. Endi maktublarni yuborish bilan shug'ullanamiz.

1. SendGrid-da hisob yarating

notaSendGrid - bu mening tanlovim, men buni bir necha sabablarga ko'ra qildim, asosiysi, ularda Node.js uchun tayyor SDK mavjud. Siz istalgan boshqa pochta xizmatini tanlashingiz mumkin.

Keling, davom etaylik hisobni ro'yxatdan o'tkazish sahifasiga va u erda ro'yxatdan o'tish shaklini to'ldiring. Keyin biz boramiz Dashboard, navigatsiya panelida tanlang Email API -> Integratsiya qo'llanmasi, va asosiy panelda - Veb API va kppku tanlang. Hammasi rasmdagidek:

Yandex funktsiyalari pochta jo'natish

Keyingi bosqichda biz tanlaymiz Node.js:

Yandex funktsiyalari pochta jo'natish

Keyinchalik biz o'zimiz uchun o'ylab topamiz API-kalit nomi (faqat kalitlar ro'yxatidagi konsolda ko'rsatiladi va bizning kelajakdagi kodimizga hech qanday aloqasi yo'q; men hozirgina chirimaydigan narsani o'ylab topdim. demo-api-kalit) va tugmani bosing Kalit yaratish:

Yandex funktsiyalari pochta jo'natish

Kalit yaratiladi, biz uni nusxalaymiz va uni chuqur ishonch bilan saqlaymiz. Va bizda tugmachali ekran bo'ladi Integratsiyani tekshiring, quyidagi rasmda bo'lgani kabi, lekin biz uni hali bosmaymiz, lekin kodni yozishga o'tamiz:

Yandex funktsiyalari pochta jo'natish

2. Kodni yozish

Ammo kodning o'zi, ko'rib turganingizdek, kulgili darajada kichik - 22 qator!

Yandex funktsiyalari pochta jo'natish

Mos ravishda #8 Mening elektron pochtam qattiq kodlangan (va shuning uchun uyatchan tarzda yashirilgan) - iltimos siznikini ko'rsating. Haqiqiy hayotda biz barcha ma'lumotlarni olamiz (shu jumladan elektron pochta) ob'ektdan hodisa. Misol uchun, agar usul POST ob'ekt bizning funktsiyamizga yuboriladi foydalanuvchi maydon (mulk) bilan elektron pochta, bu maydonning qiymatini quyidagicha olish mumkin:

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

Va agar elektron pochta manzili usul yordamida funksiyaga uzatilsa OLING, masalan: https://functions.yandexcloud.net/123abc?[email protected]
parametr qiymati elektron pochta siz buni shunday olishingiz mumkin:

const email = event.queryStringParameters.email;

Ob'ektda aniq nima borligini ko'rib chiqish hodisa, eng oddiyini yaratishingiz mumkin Yandex funktsiyasi va uni so'rovlar bilan aylantiring:

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

Bu rasmiy hujjatlarda batafsilroq (lekin kamroq aniq) muhokama qilinadi shu yerda.

Shunday qilib, loyiha katalogini yarating (masalan, pochtachi), unga o'ting, loyihani ishga tushiring, bog'liqliklarni o'rnating:

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

Bu erda faqat paket kerak bo'ladi @sendgrid/mail. Plastik sumka elektron pochta tekshiruvi elektron pochta manzilining haqiqiyligini tekshiradi (qanday qilib men darhol taxmin qilmadim?), lekin agar bunga ishonchimiz komil bo'lsa (u bizsiz uzoq vaqtdan beri tekshirilgan), biz uni o'rnatishimiz shart emas (va, Albatta, biz buni kodda tekshirishimiz shart emas). Plastik sumka dotenv fayldan yozuvlarni o'qish uchun mo'ljallangan .NS ish vaqti o'zgaruvchilari sifatida. Lekin ichida Yandex funktsiyalari Bu o'zgaruvchilarni bevosita ish vaqti muhitiga joylashtirish mumkin. Qanaqasiga? - Quyida ko'rsataman. Shuning uchun paket dotenv siz ham uni o'rnatolmaysiz va fayl .NS - yaratmang va shu bilan birga kod faylda indeks.js o'zgartirmang. Lekin bu erda biz ushbu paketni o'rnatdik, shuning uchun biz fayllarni yaratamiz indeks.js ΠΈ .NS:

touch index.js
touch .env

Fayl ichida indeks.js Yuqoridagi skrinshotda ko'rsatilgan 22 qator kodni yozing (faqat qatorda #8 elektron pochtangizni o'zgartiring) va faylda .NS - (qo'shtirnoq yoki tinish belgilarisiz) juftlikni belgilang - kalit nomi/qiymati APIBiz yaqinda konsolda oldik SendGrid:
SENDGRID_API_KEY=juda-sirli-sendgrid-api-kalitingiz

Va agar siz kamroq ishlashni istasangiz, omborni klonlang va paketlarni o'rnating:

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

Fayl ichida indeks.js, mos ravishda #8 elektron pochtani o'zgartirish; ildiz katalogida fayl yarating .NS, va unda kalitning nomi/qiymatini ko'rsating API, yuqorida ko'rsatilganidek.

3. Joylashtirish

Haqida ko'proq yoki kamroq aniq va batafsil Yandex.Cloud va uni qanday joylashtirish kerak Yandex funktsiyalari mening maqolamda tasvirlangan Elis Bitrix mamlakatida - Men johillarni bu mamlakatga yuboraman, va hamma uchun (va qaytib kelganlar) - keyin kichik komikslar (ya'ni, rasmlar va matnlar seriyasi).

Yaratmoq zip-arxiv (masalan, uni chaqiraylik, mailler.zip), biz katalogni o'z ichiga olamiz tugun_modullari va fayllar .env, index.js - hamma narsa bizning loyiha katalogimizdan:

Yandex funktsiyalari pochta jo'natish

Biz nom bilan funksiya yaratamiz... to'g'ri - pochtachi, chap navigatsiya menyusida biz kiritamiz Tahrirlovchisi, kerakli maydonlarni to'ldiring va yorliqga o'ting ZIP arxiv arxivimizni yuklab oling mailler.zip:

Yandex funktsiyalari pochta jo'natish

Va bu erda yuklab olish uchun avval aytib o'tilgan variant API kaliti loyihada fayl yaratish o'rniga, to'g'ridan-to'g'ri bu erda .NS, va paketni o'rnatmang dotenv. Ammo biz bularning barchasini allaqachon qildik, shuning uchun men buni faqat ma'lumot uchun ko'rsataman. Ya'ni, dublikat qilishning hojati yo'q!

Yandex funktsiyalari pochta jo'natish

Endi yuqori o'ng burchakdagi tugmani bosing Versiya yaratish, va bir necha soniya kuting. Har bir narsa tayyor bo'lgach, biz avtomatik ravishda bo'limga o'tamiz haqida umumiy ma'lumot. U erda biz variantni yoqamiz Jamoat funktsiyasitashqi dunyodan u bilan o'zaro aloqada bo'lishingiz uchun.

Yandex funktsiyalari pochta jo'natish

Siz yozuvning qarshisida ko'k havolani ko'rasiz Qo'ng'iroq havolasi? Uni bosing. Bo'sh brauzer oynasi ochiladi ... Lekin kuting - men elektron pochta xabarini oldim:

Yandex funktsiyalari pochta jo'natish

Endi siz konsolga qaytishingiz mumkin SendGrid, va tugmasini bosing Integratsiyani tekshiring. Tizim o'z kanallari orqali hamma narsani tekshiradi va natijada u quyidagi kabi ekranni qaytarishi kerak:

Yandex funktsiyalari pochta jo'natish

Mana, yigitlar (va qizlar, albatta) - hamma narsa juda oddiy va oqlangan! Ko'proq maqolalar bo'ladi. Agar kimdir shunga o'xshash narsalarni o'qishga qiziqsa, o'tkazib yubormaslik uchun obuna bo'ling.

4. Xayriyalar

Yandex funktsiyalari pochta jo'natish

Manba: www.habr.com

a Izoh qo'shish