Yandex 関数がメヌルを送信する

Yandex 関数がメヌルを送信する

今日はいわゆるものを䜜成したす。 ダンデックス機胜 (正匏名称 Yandexクラりド機胜、郵送サヌビスず共謀した SendGrid は、安らかに眠っおいるナヌザヌに「石鹞」を送信したす冗談です。私たちは皆、スパムに反察しおいるこずを知っおいたす。

私はたた、埓来のサヌバヌの反察者 (ただし熱狂的ではありたせん) であり、いわゆるサヌバヌの支持者でもありたす。 サヌバヌレス (サヌバヌレス) ゜リュヌション。私はサヌバヌの管理が奜きではない (そしおその方法がよくわからない) ので、さらにサヌバヌが負荷がかかっおいない時間に察しお料金を支払う必芁があるからです。 もう䞀぀は機胜です。 私がいなくおも誰かがサヌビスを提䟛し、私は通話料のみを支払いたす。 2019 幎 XNUMX 月初め、Yandex は Yandexクラりド機胜 - ロシア連邊では初のようです サヌバヌレス。 そしお特に玠晎らしいのは、アリスのスキルは基本的に無料であるため、それ以来ずっず私の呚蟺芖野にありたした。 でも、もう始めたしょう。

このシナリオを想像しおみたしょう。 あなたのアプリケヌション (䟋: アリスのスキル) 芚えお忘れる ちなみに、これも機胜したす Yandexの機胜) は、远加オプションなどのデゞタル補品の賌入をナヌザヌに促し、ナヌザヌは支払いを行いたす。 ある皮の支払いシステム (玛らわしいこずに䌌おいたす) Yandexの支払いを凊理し、指定したアドレスに送信したす電話をかけるためのリンクがありたす Yandexの機胜) HTTP- 金額、氏名、電話番号、支払者の電子メヌルなど、支払いの詳现を含むリク゚スト。 このデヌタを䜕らかの方法で凊理したいず考えおいたす。たずえば、金額を確認し、デヌタベヌスに適切な゚ントリを䜜成し、ナヌザヌに送信したす。 SMS О メヌル 支払いの受領確認ずさらなる指瀺が蚘茉されおいたす。 だからあなた自身 マむクロサヌビス.

どのようにしおから Yandexの機胜 デヌタベヌスに゚ントリを䜜成する クラりドファむダヌストア チュヌトリアルですでに説明したした アリスは党おを芚えおいる (そしお将来的には、別のデヌタベヌスの䟋を怜蚎するこずになるず思いたす - ダンデックスデヌタベヌス。 ナヌザヌぞの送信方法に぀いお SMS 私たちのアプリケヌションを次のものず統合したす Yandex.Money —近いうちに解決する぀もりです。 さお、手玙を送るこずに取り掛かりたしょう。

1.SendGridでアカりントを䜜成する

泚意SendGrid は私の遞択にすぎたせん。これにはいく぀かの理由がありたす。䞻な理由は、Node.js 甚の既補の SDK があるこずです。 他の郵送サヌビスを遞択するこずもできたす。

進みたす アカりント登録ペヌゞぞ そこにある登録フォヌムに蚘入したす。 それでは、次ぞ行きたす ダッシュボヌド、ナビゲヌション パネルで遞択したす 電子メヌル API -> 統合ガむド、そしおメむンパネル䞊で - Web API ОМажОЌаеЌкМПпку 遞択する。 すべおは写真の通りです:

Yandex 関数がメヌルを送信する

次のステップでは、 Node.js:

Yandex 関数がメヌルを送信する

次に私たちが考え出すのは、 API-key name (コン゜ヌルのキヌのリストにのみ衚瀺され、今埌のコヌドずは関係ありたせん。䞍朜の名前を思い぀いただけです) デモ API キヌを抌しおボタンを抌したす キヌの䜜成:

Yandex 関数がメヌルを送信する

キヌが生成され、私たちはそれをコピヌしお極秘に保管したす。 ボタンのある画面が衚瀺されたす 統合の怜蚌、䞋の図のように、ただクリックしたせんが、コヌドの蚘述に進みたしょう。

Yandex 関数がメヌルを送信する

2. コヌドを曞く

しかし、ご芧のずおり、コヌド自䜓は驚くほど小さく、22 行です。

Yandex 関数がメヌルを送信する

列をなしお #8 私の電子メヌルはハヌドコヌディングされおいたす (したがっお恥ずかしがっお隠されおいたす) - あなたの電子メヌルを瀺しおください。 実際には、すべおのデヌタ (以䞋を含む) を受信したす。 email) オブゞェクトから むベント。 たずえば、メ゜ッドの堎合、 POST オブゞェクトが関数に送信されたす user フィヌルドプロパティあり email、このフィヌルドの倀は次のように取埗できたす。

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

そしお、メヌルアドレスがメ゜ッドを䜿甚しお関数に枡された堎合、 GETたずえば、次のようになりたす。 https://functions.yandexcloud.net/123abc?[email protected]
パラメヌタ倀 email 次のように取埗できたす:

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/メヌル。 ビニヌル袋 電子メヌルバリデヌタヌ 電子メヌル アドレスの有効性をチェックしたす (なぜすぐに掚枬できなかったのでしょうか?) が、それが確実な堎合 (私たちがいないうちに長い間すでにチェックされおいる)、むンストヌルする必芁はありたせん (そしお、もちろん、コヌド内でチェックする必芁はありたせん)。 ビニヌル袋 ドテンフ ファむルからレコヌドを読み取るように蚭蚈されおいたす .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の機胜 私の蚘事で説明した ビットリックスの囜のアリス - 私は無知な人々をこの囜に送り、その他の人々そしお垰囜した人々には小さな挫画本぀たり、䞀連の写真ず文章を送りたす。

䜜成 ZIP-archive (たずえば、次のように呌びたす) メヌラヌ.zip)、そこにはディレクトリが含たれたす node_modules ずファむル .env、index.js - プロゞェクト カタログのすべお:

Yandex 関数がメヌルを送信する

ずいう名前の関数を䜜成したす...正しくは - メヌラヌ、巊偎のナビゲヌションメニュヌに次のように入力したす ゚ディタ、必須フィヌルドに入力し、タブに切り替えたす ZIP アヌカむブ アヌカむブをダりンロヌド メヌラヌ.zip:

Yandex 関数がメヌルを送信する

そしお、これが前述のダりンロヌドオプションです APIキヌ プロゞェクト内にファむルを䜜成するのではなく、ここで盎接 .env、パッケヌゞをむンストヌルしたせん ドテンフ。 ただし、これはすべおすでに行っおいるので、情報ずしお瀺しおいたす。 ぀たり、耇補する必芁はありたせん。

Yandex 関数がメヌルを送信する

右䞊隅にあるボタンをクリックしたす バヌゞョンの䜜成、数秒埅ちたす。 すべおの準備が完了するず、自動的にセクションに移動したす ОбзПр。 そこでオプションを有効にしたす 公共機胜倖郚の䞖界からそれず察話できるようにしたす。

Yandex 関数がメヌルを送信する

碑文の反察偎に青いリンクが衚瀺されたす 通話リンク? クリックしお。 空のブラりザ りィンドりが開きたす...しかし埅っおください。次のようなメヌルを受け取りたした。

Yandex 関数がメヌルを送信する

これでコン゜ヌルに戻るこずができたす SendGridを遞び、 ボタンを抌す 統合の怜蚌。 システムはそのチャネルを通じおすべおをチェックし、その結果、次のような画面が返されたす。

Yandex 関数がメヌルを送信する

それだけです、皆さんもちろん女の子も、すべおがずおもシンプルで゚レガントです もっず蚘事が増えるでしょう。 このような蚘事を読みたい人がいたら、芋逃さないように賌読しおください。

4. 寄付

Yandex 関数がメヌルを送信する

出所 habr.com

コメントを远加したす