Yandex funksiyaları poçt göndərir

Yandex funksiyaları poçt göndərir

Bu gün biz sözdə yaradacağıq. Yandex funksiyası (rəsmi adı Yandex Bulud funksiyaları), poçt xidməti ilə sövdələşmə SendGrid dinc yatan istifadəçilərə "sabun" göndərəcək (zarafat - hamımız spama qarşı olduğumuzu bilirəm).

Mən həm də ənənəvi serverlərin rəqibiyəm (amma fanatizmsiz) və sözdə tərəfdarıyam. serversiz (serversiz) həllər, çünki serverləri idarə etməyi xoşlamıram (və həqiqətən bilmirəm) və daha çox yüklənmədiyi vaxt üçün pul ödəyirəm. Başqa bir şey funksiyalardır. Kimsə onlara mənsiz xidmət edir, mən isə ancaq zənglərə görə pul ödəyirəm. 2019-cu il oktyabrın əvvəlində Yandex öz təqdimatını təqdim etdi Yandex Bulud funksiyaları - deyəsən Rusiya Federasiyasında birincidir serversiz. Və xüsusilə gözəl olanı odur ki, Alicenin bacarıqları üçün onlar ümumiyyətlə pulsuzdurlar, ona görə də o vaxtdan bəri onlar mənim periferik baxışımdadırlar. Amma gəlin artıq başlayaq.

Bu ssenarini təsəvvür edək. Müraciətiniz (məsələn, Alisin bacarığı Unutma və Unutma yeri gəlmişkən, bu da işləyir Yandex funksiyaları) istifadəçini rəqəmsal məhsul, məsələn, əlavə seçimlər almağa dəvət edir və istifadəçi ödəniş edir. Bir növ ödəniş sistemi (çaşdırıcı dərəcədə oxşar Yandex.Money) ödənişi emal edir və göstərdiyiniz ünvana göndərir (və zəng etmək üçün əlaqəmiz olacaq Yandex funksiyaları) HTTP-ödəyicinin məbləği, tam adı, telefon nömrəsi və e-poçtu kimi ödəniş təfərrüatlarını ehtiva edən sorğu. Biz bu məlumatları bir şəkildə emal etmək istəyirik, məsələn: məbləği yoxlayın, verilənlər bazasında müvafiq qeydlər edin, istifadəçilərə göndərin SMS и mina ödənişin alınmasının təsdiqi və əlavə göstərişlərlə. Beləliklə, özünüz mikroservis.

Necədən haqqında Yandex funksiyaları verilənlər bazasına qeydlər etmək Cloud Firestore biz artıq dərslikdə buna baxdıq Alisa hər şeyi xatırlayır (və gələcəkdə, məncə, başqa bir verilənlər bazası üçün bir nümunə nəzərdən keçirəcəyik - Yandex verilənlər bazası). İstifadəçilərə necə göndəriləcəyi haqqında SMS və tətbiqimizi ilə inteqrasiya edin Yandex.Money - yaxın gələcəkdə həll edəcəyik. İndi gəlin yalnız məktubların göndərilməsi ilə məşğul olaq.

1. SendGrid-də hesab yaradın

QeydSendGrid sadəcə mənim seçimimdir, bunu bir neçə səbəbə görə etdim, əsas odur ki, onların Node.js üçün hazır SDK var. İstənilən digər poçt xidmətini seçə bilərsiniz.

Gəlin davam edək hesabın qeydiyyatı səhifəsinə keçin və orada qeydiyyat formasını doldurun. Sonra gedirik İdarə paneli , naviqasiya panelində seçin E-poçt API -> İnteqrasiya Bələdçisi, və əsas paneldə - Veb API i нажимаем кнопку Seçmək. Hər şey şəkildəki kimidir:

Yandex funksiyaları poçt göndərir

Növbəti mərhələdə biz seçirik Node.js:

Yandex funksiyaları poçt göndərir

Sonra bizim üçün gəlir API-açar adı (yalnız açarlar siyahısında konsolda göstəriləcək və gələcək kodumuzla heç bir əlaqəsi yoxdur; mən indicə köhnəlməz bir şey tapdım. demo-api açarı) və düyməni basın Açar yarat:

Yandex funksiyaları poçt göndərir

Açar yaradılacaq, biz onu kopyalayacağıq və ən dərin inamda saxlayacağıq. Və düyməsi olan ekranımız olacaq İnteqrasiyanı yoxlayın, aşağıdakı şəkildəki kimi, lakin biz hələ klikləməyəcəyik, amma kodu yazmağa davam edək:

Yandex funksiyaları poçt göndərir

2. Kodun yazılması

Ancaq kodun özü, gördüyünüz kimi, gülünc dərəcədə kiçikdir - 22 sətir!

Yandex funksiyaları poçt göndərir

Xətdə #8 Mənim e-poçtum kodlaşdırılıb (və buna görə də utancaq şəkildə gizlədilib) - lütfən, öz e-poçtunuzu qeyd edin. Real həyatda biz bütün məlumatları alacağıq (o cümlədən e-poçt) obyektdən hadisə. Məsələn, əgər üsul POST bir obyekt funksiyamıza göndərilir istifadəçi sahə ilə (əmlak) e-poçt, bu sahənin dəyəri belə əldə edilə bilər:

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

Və e-poçt ünvanı metoddan istifadə edərək funksiyaya ötürülürsə GET, məsələn: https://functions.yandexcloud.net/123abc?[email protected]
parametr dəyəri e-poçt bunu belə əldə edə bilərsiniz:

const email = event.queryStringParameters.email;

Bir obyektdə tam olaraq nə olduğuna nəzər salmaq hadisə, ən sadəini yarada bilərsiniz Yandex funksiyası və onu sorğularla çevirin:

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

Bu, rəsmi sənədlərdə daha ətraflı (lakin daha az aydın) müzakirə olunur burada.

Beləliklə, bir layihə kataloqu yaradın (məsələn, poçtçu), ona gedin, layihəni işə salın, asılılıqları quraşdırın:

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

Burada yalnız paket tələb olunur @sendgrid/mail. Plastik torba e-poçt təsdiqləyicisi e-poçt ünvanının etibarlılığını yoxlayır (dərhal necə təxmin etmədim?), lakin buna əminiksə (bu, bizsiz uzun müddətdir yoxlanılıb), onu quraşdırmaq məcburiyyətində deyilik (və, əlbəttə, biz bunu kodda yoxlamaq məcburiyyətində deyilik). Plastik torba dotenv fayldan qeydləri oxumaq üçün nəzərdə tutulmuşdur .NS icra zamanı dəyişənləri kimi. Amma in Yandex funksiyaları Bu dəyişənləri birbaşa iş vaxtı mühitinə yerləşdirmək mümkündür. Necə? - Aşağıda göstərəcəyəm. Buna görə də paket dotenv siz də onu və faylı quraşdıra bilməzsiniz .NS - yaratmayın və eyni zamanda kod fayldadır indeks.js dəyişməyin. Amma burada biz bu paketi quraşdırmışıq, ona görə də fayllar yaradırıq indeks.js и .NS:

touch index.js
touch .env

Faylda indeks.js Yuxarıdakı ekran görüntüsündə göstərilən 22 sətir kodu yazın (yalnız sətirdə #8 e-poçtunuzu dəyişdirin) və faylda .NS - (heç bir dırnaq və durğu işarəsi olmadan) - açar adı/dəyəri cütünü göstərin APIbu yaxınlarda konsolda aldığımız SendGrid:
SENDGRID_API_KEY=sizin-çox-gizli-sendgrid-api-açariniz

Və daha az işləmək istəyirsinizsə, deponu klonlayın və paketləri quraşdırın:

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

Faylda indeks.js, xətdə #8 E-maili dəyişmək; kök qovluğunda bir fayl yaradın .NS, və orada açarın adını/dəyərini göstərin API, yuxarıda göstərildiyi kimi.

3. Yerləşdirin

Haqqında az-çox aydın və ətraflı Yandex.Cloud və onu orada necə yerləşdirmək olar Yandex funksiyaları məqaləmdə təsvir edilmişdir Alisa Bitrix ölkəsində - Mən cahilləri bu ölkəyə göndərirəm və hər kəs üçün (və qayıdanlar üçün) - sonra kiçik bir komik kitab (yəni bir sıra şəkillər və mətnlər).

Biz yaradırıq zip-arxiv (məsələn, deyək, mailler.zip), kataloqu daxil etdiyimiz düyün_ modulları və fayllar .env, index.js - layihə kataloqumuzdan hər şey:

Yandex funksiyaları poçt göndərir

Biz adı ilə funksiya yaradırıq... düzgün - poçtçu, sol naviqasiya menyusuna daxil oluruq Redaktoru, tələb olunan sahələri doldurun və nişana keçin ZIP arxivi arxivimizi yükləyin mailler.zip:

Yandex funksiyaları poçt göndərir

Və burada yükləmək üçün əvvəllər qeyd olunan seçimdir API açarı layihədə fayl yaratmaq əvəzinə birbaşa burada .NS, və paketi quraşdırmayın dotenv. Amma biz bütün bunları artıq etdik, ona görə də mən bunu yalnız məlumat üçün göstərirəm. Yəni dublikat etməyə ehtiyac yoxdur!

Yandex funksiyaları poçt göndərir

İndi yuxarı sağ küncdə düyməni basın Versiya yaradın, və bir neçə saniyə gözləyin. Hər şey hazır olduqda, biz avtomatik olaraq bölməyə keçəcəyik Review. Orada seçimi aktiv edəcəyik ictimai funksiyaxarici aləmdən onunla qarşılıqlı əlaqə qura bilməniz üçün.

Yandex funksiyaları poçt göndərir

Yazının qarşısındakı mavi linki görürsünüz Zəng etmək üçün keçid? Klikləyin. Boş brauzer pəncərəsi açılacaq... Amma gözləyin - e-məktub aldım:

Yandex funksiyaları poçt göndərir

İndi konsola qayıda bilərsiniz SendGrid, və düyməni basın İnteqrasiyanı yoxlayın. Sistem hər şeyi öz kanalları vasitəsilə yoxlayacaq və nəticədə belə bir ekranı qaytarmalıdır:

Yandex funksiyaları poçt göndərir

Budur, uşaqlar (və qızlar, əlbəttə ki) - hər şey həqiqətən çox sadə və zərifdir! Daha çox məqalə olacaq. Kimsə belə bir şey oxumaqda maraqlıdırsa, qaçırmamaq üçün abunə olun.

4. İanələr

Yandex funksiyaları poçt göndərir

Mənbə: www.habr.com

Добавить комментарий