Яндекс функциялары почта жөнөтүү

Яндекс функциялары почта жөнөтүү

Бүгүн биз аталган нерсени түзөбүз. Яндекс функциясы (расмий аты Yandex Cloud функциялары), почта кызматы менен сүйлөшүп алган SendGrid тынч уктап жаткан колдонуучуларга "самын" жөнөтөт (тамаша - мен баарыбыз спамга каршы экенибизди билем).

Мен ошондой эле салттуу серверлердин оппонентимин (бирок фанатизмсиз) жана аталган серверлердин жактоочусумун. serverless (серверсиз) чечимдер, анткени мен серверлерди башкарууну жактырбайм (жана мен чындыгында билбейм) жана андан да көп, алар жүктөлбөй турган убакыт үчүн төлөйм. Дагы бир нерсе - функциялар. Кимдир бирөө аларды менсиз тейлейт, мен чалуулар үчүн гана төлөйм. 2019-жылдын октябрынын башында Яндекс өзүнүн сунуштаган Yandex Cloud функциялары - Россия Федерациясында биринчи болуп жаткандай serverless. Ал эми өзгөчө жакшы нерсе, Алисанын жөндөмү үчүн алар жалпысынан эркин, ошондуктан алар менин перифериялык көз карашымда. Бирок азыртан эле баштайлы.

Келгиле, бул сценарийди элестетип көрөлү. Сиздин арызыңыз (мисалы, Алисанын чеберчилиги Эске жана унут бул, демек, ошондой эле иштейт Яндекс функциялары) колдонуучуну санарип продуктуну сатып алууга чакырат, мисалы, кошумча опциялар жана колдонуучу төлөм жүргүзөт. Төлөм системасынын кандайдыр бир түрү (чаташкандай окшош Яндекс) төлөмдү иштетип, сиз көрсөткөн дарекке жөнөтөт (жана бизде чалуу үчүн шилтеме болот Яндекс функциялары) HTTP- төлөөчүнүн суммасы, толук аты-жөнү, телефон номери жана электрондук почтасы сыяктуу төлөм реквизиттерин камтыган суроо-талап. Биз бул маалыматты кандайдыр бир жол менен иштеткибиз келет, мисалы: сумманы текшерүү, маалымат базасына тиешелүү жазууларды киргизүү, колдонуучуларга жөнөтүү SMS и электрондук почта төлөмдүн алынгандыгын тастыктоо жана андан аркы инструкциялар менен. Ошентип, өзүң микросервис.

Кантип жөнүндө Яндекс функциялары маалымат базасына жазууларды киргизүү Cloud Firestore биз буга чейин окуу куралында карадык Алиса баарын эстейт (жана келечекте, мен ойлойм, биз башка маалымат базасына мисал карап чыгабыз - Yandex маалымат базасы). Колдонуучуларга кантип жөнөтүү керектиги жөнүндө SMS менен биздин колдонмону бириктирүү Yandex.Money — Жакынкы арада чечебиз. Эми каттарды жөнөтүү менен гана алектенели.

1. SendGrid ичинде эсеп жазууну түзүңүз

пикирSendGrid бул менин тандоом, аны мен бир нече себептерден улам жасадым, эң негизгиси, аларда Node.js үчүн даяр SDK бар. Сиз каалаган башка почта кызматын тандай аласыз.

Келгиле, уланталы каттоо эсебин каттоо барагына жана ошол жерде каттоо формасын толтуруңуз. Андан кийин барабыз бөлмө, навигация панелинен тандаңыз Email API -> Integration Guide, жана негизги панелде - Веб API жана баскычты басыңыз тандап алуу. Баары сүрөттөгүдөй:

Яндекс функциялары почта жөнөтүү

Кийинки кадамда биз тандайбыз Node.js:

Яндекс функциялары почта жөнөтүү

Кийинки биз өзүбүздүн оюбузду ойлоп табабыз API-ачкычтын аты (ачкычтардын тизмесинде консолдо гана көрсөтүлөт жана биздин келечектеги кодубузга эч кандай тиешеси жок; мен жаңы эле бузулбас нерсени ойлоп таптым. demo-api-ачкычы) жана баскычты басыңыз ачкыч түзүү:

Яндекс функциялары почта жөнөтүү

Ачкыч түзүлөт, биз аны көчүрөбүз жана аны терең ишенимде сактайбыз. Ал эми бизде баскычы бар экран болот Интеграцияны текшерүү, төмөнкү сүрөттөгүдөй, бирок биз аны азырынча басбайбыз, бирок кодду жазууга өтөлү:

Яндекс функциялары почта жөнөтүү

2. Кодду жазуу

Бирок коддун өзү, сиз көрүп тургандай, күлкүлүү кичинекей - 22 сап!

Яндекс функциялары почта жөнөтүү

Кезекте #8 Менин электрондук почтам катуу коддолгон (ошондуктан уялчаак жашырылган) - сиздикин көрсөтүңүз. Чыныгы жашоодо биз бардык маалыматтарды алабыз (анын ичинде электрондук почта) объекттен окуя. Мисалы, эгерде метод POST объект биздин функцияга жөнөтүлөт колдонуучу талаа (мүлк) менен электрондук почта, бул талаанын маанисин төмөнкүдөй алууга болот:

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

Ал эми электрондук почта дареги ыкманы колдонуу менен функцияга өтүп кетсе ТААНЫШМисалы: https://functions.yandexcloud.net/123abc?[email protected]
параметр мааниси электрондук почта сиз муну төмөнкүдөй ала аласыз:

const email = event.queryStringParameters.email;

Объектте так эмне бар экенин карап чыгуу окуя, сиз эң жөнөкөй түзө аласыз Яндекс функциясы жана аны суроолор менен буруңуз:

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

Бул расмий документтерде кененирээк (бирок анча так эмес) талкууланат бул жерде.

Ошентип, долбоордун каталогун түзүү (мисалы, почтачы), ага өтүңүз, долбоорду инициализациялаңыз, көз карандылыкты орнотуңуз:

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

Бул жерде пакет гана талап кылынат @sendgrid/mail. Пластик баштык электрондук почта текшерүүчүсү электрондук почтанын дарегинин жарактуулугун текшерет (кандайча мен дароо ойлогон жокмун?), бирок биз ага ишенсек (ал бизсиз эле көптөн бери текшерилип келген), аны орнотуунун кереги жок (жана, Албетте, биз аны коддон текшеришибиз керек эмес). Пластик баштык дотенв файлдан жазууларды окуу үчүн иштелип чыккан .env иштөө убактысынын өзгөрмөлөрү катары. Бирок ичинде Яндекс функциялары Бул өзгөрмөлөрдү түз иштөө чөйрөсүнө жайгаштырууга болот. Кантип? - Төмөндө көрсөтөм. Ошондуктан пакет дотенв сиз аны жана файлды орното албайсыз .env - түзбөңүз, ошол эле учурда код файлда болот index.js өзгөрбө. Бирок бул жерде биз бул пакетти орноттук, ошондуктан биз файлдарды түзөбүз index.js и .env:

touch index.js
touch .env

Файлда index.js Жогорудагы скриншотто көрсөтүлгөн 22 сап кодду жазыңыз (сапта гана #8 электрондук почтаңызды өзгөртүү) жана файлда .env - (эч кандай тырмакча же тыныш белгилери жок) - ачкычтын аталышын/маанисин көрсөтүңүз APIбиз жакында консолдо алганбыз SendGrid:
SENDGRID_API_KEY=your-ver-secret-sendgrid-api-ачкыч

Эгер азыраак иштөөнү кааласаңыз, репозиторийди клондоңуз жана пакеттерди орнотуңуз:

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

Файлда index.js, сапта #8 электрондук почтаны өзгөртүү; тамыр каталогунда файлды түзүү .env, жана анда ачкычтын атын/маанисин көрсөтүңүз API, жогоруда көрсөтүлгөндөй.

3. Жайгаштыруу

жөнүндө аздыр-көптүр так жана майда-чүйдөсүнө чейин Yandex.Cloud жана аны кантип жайгаштыруу керек Яндекс функциялары менин макаламда сүрөттөлгөн Алиса Битрикс жеринде - Мен бул өлкөгө сабатсыздарды жиберем, ал эми калгандары үчүн (жана кайтып келгендер үчүн) - анда кичинекей комикс (б.а. бир катар сүрөттөр жана тексттер).

Түзүү индекс-архив (мисалы, аны атайлы, mailler.zip), ага биз каталогду киргизебиз node_modules жана файлдар .env, index.js - биздин долбоордун каталогунан баары:

Яндекс функциялары почта жөнөтүү

Функцияны аты менен түзөбүз... туура - почтачы, сол багыттоо менюсуна биз киребиз редактор, талап кылынган талааларды толтуруп, өтмөккө өтүңүз ZIP архив биздин архивди жүктөп алыңыз mailler.zip:

Яндекс функциялары почта жөнөтүү

Жана бул жерде жүктөө үчүн мурда айтылган вариант API ачкычы долбоордо файлды түзүүнүн ордуна, түздөн-түз бул жерде .env, жана пакетти орнотпоңуз дотенв. Бирок биз мунун баарын жасаганбыз, ошондуктан мен аны маалымат үчүн гана көрсөтүп жатам. Башкача айтканда, кайталоонун кереги жок!

Яндекс функциялары почта жөнөтүү

Эми жогорку оң бурчтагы баскычты чыкылдатыңыз Версияны түзүү, жана бир-эки секунд күтө туруңуз. Баары даяр болгондо, биз автоматтык түрдө бөлүмгө өтөбүз жалпы көрүнүш. Ал жерден биз опцияны иштетебиз Коомдук функциятышкы дүйнөдөн аны менен өз ара аракеттенүү үчүн.

Яндекс функциялары почта жөнөтүү

Сиз жазуунун карама-каршы көк шилтемени көрөсүз Чалуу шилтемеси? Аны басыңыз. Бош браузер терезеси ачылат... Бирок күтө туруңуз - мен электрондук кат алдым:

Яндекс функциялары почта жөнөтүү

Эми сиз консолго кайтып келе аласыз SendGrid, жана баскычты басыңыз Интеграцияны текшерүү. Система баарын өз каналдары аркылуу текшерет, натыйжада ал төмөнкүдөй экранды кайтарышы керек:

Яндекс функциялары почта жөнөтүү

Болду, балдар (жана кыздар, албетте) - баары чындыгында абдан жөнөкөй жана жарашыктуу! Дагы макалалар болот. Эгер кимдир бирөө ушул сыяктуу нерсени окууга кызыкдар болсо, өткөрүп жибербөө үчүн жазылыңыз.

4. Кайрымдуулук

Яндекс функциялары почта жөнөтүү

Source: www.habr.com

Комментарий кошуу