Yandex функцууд нь шуудан илгээдэг

Yandex функцууд нь шуудан илгээдэг

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

Би бас уламжлалт серверүүдийн өрсөлдөгч (гэхдээ фанатизмгүй) бөгөөд гэгдэхийг дэмжигч юм. serverless (сервергүй) шийдлүүд, учир нь би серверүүдийг удирдах дургүй (мөн яаж хийхээ мэдэхгүй байна), тэр ч байтугай ачааллаагүй хугацааны төлбөрийг төлдөг. Өөр нэг зүйл бол функцууд юм. Хэн нэгэн надгүйгээр тэдэнд үйлчилдэг, би зөвхөн дуудлагын төлбөрийг төлдөг. 2019 оны XNUMX-р сарын эхээр Yandex танилцууллаа Yandex Cloud функцууд - ОХУ-д анхдагч юм шиг байна serverless. Хамгийн сайхан нь Алисын ур чадварын хувьд тэд ерөнхийдөө үнэ төлбөргүй байдаг тул тэр цагаас хойш миний захын хараанд байсаар ирсэн. Гэхдээ аль хэдийн эхэлцгээе.

Энэ хувилбарыг төсөөлөөд үз дээ. Таны өргөдөл (жишээлбэл, Алисын ур чадвар Запомни и Забудь Энэ нь, дашрамд, дээр бас ажилладаг Yandex функцууд) предлагает пользователю купить цифровой товар, например, дополнительные опции, и пользователь делает оплату. Некая платежная система (схожая до степени смешения с Yandex.Money) төлбөрийг боловсруулж, таны заасан хаяг руу илгээдэг (мөн бид дуудлага хийх холбоостой болно Yandex функцууд) HTTP-төлбөр төлөгчийн овог нэр, утасны дугаар, цахим шуудан зэрэг төлбөрийн дэлгэрэнгүй мэдээллийг агуулсан хүсэлт. Бид энэ өгөгдлийг ямар нэгэн байдлаар боловсруулахыг хүсч байна, жишээлбэл: хэмжээг шалгах, мэдээллийн санд зохих оруулга хийх, хэрэглэгчдэд илгээх. SMS и И-мэйл төлбөр хүлээн авсан баталгаа болон цаашдын зааврын хамт. Тэгэхээр өөрөө бичил үйлчилгээ.

Хэрхэн ирсэн тухай Яндекс-функций мэдээллийн санд бичилт хийх Cloud Firestore Бид үүнийг зааварт аль хэдийн үзсэн Алис бүх зүйлийг санаж байна (мөн ирээдүйд бид өөр мэдээллийн сангийн жишээг авч үзэх болно гэж бодож байна - Yandex мэдээллийн сан). Хэрэглэгчдэд хэрхэн илгээх талаар SMS болон манай програмыг нэгтгэх Yandex.Money — разберём в недалёком будущем. Сейчас займёмся только отправкой писем.

1. SendGrid дээр бүртгэл үүсгэнэ

тайлбарSendGrid бол зүгээр л миний сонголт бөгөөд үүнийг би хэд хэдэн шалтгааны улмаас хийсэн бөгөөд гол нь тэд Node.js-д зориулсан бэлэн SDK-тэй болсон явдал юм. Та өөр ямар ч шуудангийн үйлчилгээг сонгож болно.

Миний переходим дансны бүртгэлийн хуудас руу и заполняем там регистрационную форму. Затем переходим в Самбар, навигацийн самбараас сонгоно уу Имэйл API -> Интеграцийн гарын авлага, а на главной панели — Вэб API болон товчийг дарна уу сонгоно уу. Бүх зүйл зураг дээрх шиг байна:

Yandex функцууд нь шуудан илгээдэг

Дараагийн алхамд бид сонгоно Node.js:

Yandex функцууд нь шуудан илгээдэг

Дараа нь бид өөрсдийнхөө талаар бодож байна API-түлхүүрийн нэр (түлхүүрүүдийн жагсаалтад зөвхөн консол дээр харагдах бөгөөд бидний ирээдүйн кодтой ямар ч холбоогүй болно; би зүгээр л үл муудах зүйлийг олж мэдэв. demo-api-түлхүүр) товчийг дарна уу Түлхүүр үүсгэх:

Yandex функцууд нь шуудан илгээдэг

Түлхүүр нь үүсгэгдэх болно, бид үүнийг хуулж, гүн гүнзгий нууцлалд хадгална. Мөн бид товчлуур бүхий дэлгэцтэй болно Интеграцийг баталгаажуулах, доорх зурган дээрх шиг, гэхдээ бид үүнийг хараахан товшихгүй, харин код бичих рүү шилжье:

Yandex функцууд нь шуудан илгээдэг

2. Код бичих

Гэхдээ код нь өөрөө, таны харж байгаагаар инээдтэй жижиг юм - 22 мөр!

Yandex функцууд нь шуудан илгээдэг

Шугаманд #8 Миний имэйл хатуу кодлогдсон (тиймээс ичимхий нуугдсан) - өөрийнхөө имэйлийг зааж өгнө үү. Бодит амьдрал дээр бид бүх өгөгдлийг хүлээн авах болно (үүнд И-мэйл) объектоос үйл явдал. Жишээлбэл, хэрэв арга Шуудан объектыг манай функц руу илгээсэн хэрэглэгчийн талбайтай (өмч) И-мэйл, энэ талбарын утгыг дараах байдлаар авч болно.

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

Мөн и-мэйл хаягийг аргыг ашиглан функц руу дамжуулсан бол GETЖишээ нь: https://functions.yandexcloud.net/123abc?[email protected]
параметрийн утга И-мэйл Та үүнийг дараах байдлаар авч болно:

const email = event.queryStringParameters.email;

Чтобы взглянуть на то, что именно содержится в объекте үйл явдал, можно создать простейшую Yandex функц мөн асуултуудаар эргүүлээрэй:

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 ажиллах цагийн хувьсагч болгон. Гэхдээ дотор Yandex функцууд Эдгээр хувьсагчдыг ажиллах цагийн орчинд шууд байрлуулах боломжтой. Хэрхэн? - Би үүнийг доор харуулъя. Тиймээс багц дотенв та бас үүнийг суулгаж чадахгүй, мөн файл .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 и о том, как там размещать Yandex функцууд миний нийтлэлд тайлбарласан Алис Битриксийн нутагт - Би мунхаг хүмүүсийг энэ улс руу илгээж, бусад бүх хүмүүст (мөн буцаж ирсэн хүмүүст) - дараа нь жижиг комик ном (жишээлбэл, цуврал зураг, текст).

Би тохируулж байна зип-архив (үүнийг жишээ нь гэж нэрлэе. mailler.zip), бид лавлахыг багтаасан болно зангилаа_ модуль болон файлууд .env, index.js — все из каталога нашего проекта:

Yandex функцууд нь шуудан илгээдэг

Бид зөв нэртэй функцийг бүтээдэг... шуудан илгээгч, зүүн навигацийн цэсэнд бид ордог Редактор, шаардлагатай талбаруудыг бөглөж, таб руу шилжинэ үү ZIP архив загружаем наш архив mailler.zip:

Yandex функцууд нь шуудан илгээдэг

А вот и упомянутая ранее возможность загрузить API түлхүүр төсөлд файл үүсгэхийн оронд шууд энд .env, мөн багцыг бүү суулгаарай дотенв. Но мы всё это уже сделали, поэтому показываю просто для информации. То есть — дублировать не надо!

Yandex функцууд нь шуудан илгээдэг

Одоо баруун дээд буланд байгаа товчлуур дээр дарна уу Хувилбар үүсгэх, хэдэн секунд хүлээнэ үү. Бүх зүйл бэлэн болмогц бид автоматаар хэсэг рүү шилжих болно тойм. Там включим опцию Нийтийн чиг үүрэгИнгэснээр та гадаад ертөнцөөс түүнтэй харьцах боломжтой.

Yandex функцууд нь шуудан илгээдэг

Бичээсийн эсрэг талд байгаа цэнхэр холбоосыг харна уу Дуудлагын холбоос? Үүнийг товшино уу. Хөтчийн хоосон цонх нээгдэнэ... Гэхдээ түр хүлээнэ үү - Би имэйл хүлээн авлаа:

Yandex функцууд нь шуудан илгээдэг

Одоо та консол руу буцаж болно SendGrid, товчийг дарна уу Интеграцийг баталгаажуулах. Систем нь бүх зүйлийг өөрийн сувгаар шалгах бөгөөд үр дүнд нь дараах дэлгэцийг буцаана.

Yandex функцууд нь шуудан илгээдэг

Ингээд л залуусаа (мэдээж охид) - бүх зүйл үнэхээр энгийн бөгөөд дэгжин юм! Илүү олон нийтлэл байх болно. Хэрэв хэн нэгэн үүнтэй төстэй зүйлийг унших сонирхолтой байвал үүнийг алдахгүйн тулд бүртгүүлээрэй.

4. Хандив

Yandex функцууд нь шуудан илгээдэг

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх