Яндекс функциялары поштаны жіберу

Яндекс функциялары поштаны жіберу

Бүгін біз деп аталатын нәрсені жасаймыз. Яндекс функциясы (ресми атауы Яндекс бұлтты функциялары) пошталық қызметпен келісіп алған SendGrid тыныш ұйықтап жатқан пайдаланушыларға «сабын» жібереді (жай қалжыңдаймын - біз бәріміз спамға қарсы екенімізді білемін).

Мен сондай-ақ дәстүрлі серверлердің қарсыласымын (бірақ фанатизмсіз) және деп аталатындарды жақтаймын. серверсіз (серверсіз) шешімдер, өйткені мен серверлерді басқаруды ұнатпаймын (және мен шынымен де білмеймін) және одан да көп жүктелмеген уақыт үшін төлеймін. Тағы бір нәрсе - функциялар. Біреу оларға менсіз қызмет көрсетеді, мен тек қоңыраулар үшін төлеймін. 2019 жылдың қазан айының басында Яндекс өзінің таныстырылымын көрсетті Яндекс бұлтты функциялары – Ресей Федерациясында бірінші болып отырған сияқты серверсіз. Ең жақсысы, Алисаның дағдылары үшін олар әдетте тегін, сондықтан олар менің перифериялық көзқарасымда болды. Бірақ қазірдің өзінде бастайық.

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

Қалайдан бастап туралы Яндекс функциялары мәліметтер базасына жазбалар енгізу Cloud Firestore біз оны оқулықта қарастырдық Алиса барлығын есіне алады (және болашақта, менің ойымша, біз басқа дерекқорға мысал қарастырамыз - Яндекс дерекқоры). Пайдаланушыларға жіберу жолы туралы қысқаша хабар қызметі және біздің қолданбаны біріктіріңіз Yandex.Money – Жақын арада шешеміз. Енді тек хат жіберумен айналысайық.

1. SendGrid ішінде тіркелгі жасаңыз

ескертуSendGrid - бұл менің таңдауым, оны мен бірнеше себептерге байланысты жасадым, ең бастысы, оларда Node.js үшін дайын SDK бар. Сіз кез келген басқа пошта қызметін таңдай аласыз.

жалғастыру тіркелгіні тіркеу бетіне өтіңіз және сол жерде тіркеу формасын толтырыңыз. Сосын барамыз Dashboard, шарлау тақтасында таңдаңыз Email API -> Интеграциялық нұсқаулық, ал негізгі панельде - WebAPI және түймесін басыңыз таңдау. Барлығы суреттегідей:

Яндекс функциялары поштаны жіберу

Келесі қадамда біз таңдаймыз Node.js:

Яндекс функциялары поштаны жіберу

Әрі қарай біз өзімізді ойлап табамыз API-кілт атауы (кілттер тізімінде тек консольде көрсетіледі және біздің болашақ кодымызға ешқандай қатысы жоқ; мен жаңа ғана бұзылмайтын нәрсені ойлап таптым. demo-api кілті) және түймесін басыңыз Кілт жасау:

Яндекс функциялары поштаны жіберу

Кілт жасалады, біз оны көшіреміз және оны ең терең құпияда сақтаймыз. Ал бізде түймесі бар экран болады Интеграцияны тексеру, төмендегі суреттегідей, бірақ біз оны әлі баспаймыз, бірақ кодты жазуға көшейік:

Яндекс функциялары поштаны жіберу

2. Кодты жазу

Бірақ кодтың өзі, көріп отырғаныңыздай, күлкілі кішкентай - 22 жол!

Яндекс функциялары поштаны жіберу

Кезекте #8 Менің электрондық поштам қатты кодталған (және сондықтан ұялшақ жасырын) - өзіңізді көрсетіңіз. Нақты өмірде біз барлық деректерді аламыз (соның ішінде электрондық пошта) нысаннан оқиға. Мысалы, егер әдіс POST нысан біздің функциямызға жіберіледі пайдаланушы өріспен (меншік) электрондық пошта, бұл өрістің мәнін келесідей алуға болады:

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

Ал егер электрондық пошта мекенжайы әдіс арқылы функцияға берілсе GET, мысалы: 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=сіздің-өте-құпия-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 және оны қалай орналастыру керек Яндекс функциялары менің мақаламда сипатталған Алиса Битрикс елінде - Мен бұл елге надандарды жіберемін, ал қалғандары үшін (және оралғандар) - содан кейін шағын комикс (яғни, суреттер мен мәтіндер сериясы).

Жасау ZIP-мұрағат (оны атаймыз, мысалы, mailler.zip), оған біз каталогты қосамыз түйін_модульдері және файлдар .env, index.js - барлығы біздің жоба каталогынан:

Яндекс функциялары поштаны жіберу

Біз... атымен функцияны дұрыс жасаймыз - пошташы, сол жақ шарлау мәзірінде біз енгіземіз Редактор, қажетті өрістерді толтырып, қойындыға ауысыңыз ZIP мұрағаты біздің мұрағатты жүктеп алыңыз mailler.zip:

Яндекс функциялары поштаны жіберу

Міне, жүктеп алудың бұрын айтылған нұсқасы API кілті жобада файл жасаудың орнына тікелей осында .env, және буманы орнатпаңыз дотенв. Бірақ біз мұның бәрін жасадық, сондықтан мен оны тек ақпарат үшін көрсетіп отырмын. Яғни, қайталаудың қажеті жоқ!

Яндекс функциялары поштаны жіберу

Енді жоғарғы оң жақ бұрыштағы түймені басыңыз Нұсқа жасау, және бірнеше секунд күтіңіз. Барлығы дайын болғанда, біз автоматты түрде бөлімге өтеміз қайта қарау. Онда біз опцияны қосамыз Қоғамдық функциясыртқы әлемнен онымен әрекеттесе алатындай етіп.

Яндекс функциялары поштаны жіберу

Жазудың қарама-қарсы жағындағы көк сілтемені көресіз Қоңырау сілтемесі? Оны басыңыз. Бос шолғыш терезесі ашылады... Бірақ күте тұрыңыз - электрондық поштаны алдым:

Яндекс функциялары поштаны жіберу

Енді консольге оралуға болады SendGrid, және түймесін басыңыз Интеграцияны тексеру. Жүйе барлығын өз арналары арқылы тексереді, нәтижесінде ол келесідей экранды қайтаруы керек:

Яндекс функциялары поштаны жіберу

Міне, жігіттер (және қыздар, әрине) - бәрі шынымен де өте қарапайым және талғампаз! Тағы да мақалалар болады. Егер біреу осындай нәрсені оқығысы келсе, жіберіп алмау үшін жазылыңыз.

4. Қайырымдылық

Яндекс функциялары поштаны жіберу

Ақпарат көзі: www.habr.com

пікір қалдыру