Challenge Engineer Life !

エンジニア人生を楽しみたい!仕事や趣味で学んだ技術的なことを書いていくブログです。

Logic Apps+SendGridで作るメール購読フォームのバックエンド(後編)

前編でLogic Appsの処理フローを紹介しました。

kikutaro777.hatenablog.com

実際に作っていきます。

メール購読フォーム

最初にメール購読フォームの画面を用意します。

f:id:kikutaro777:20190719010713p:plain

HTMLはシンプルです。actionのURLには、この後Logic Appsが発行するHTTPのエンドポイントを設定します。

<form action="https://xxxxx.example.com" method="post">
  <div>
    <label for="email">メールアドレス</label>
    <input name="email" id="email" value="">
  </div>
  <div>
    <button>登録</button>
  </div>
</form>
</body>

f:id:kikutaro777:20190719005635p:plain

Logic Appsでフローを作成する

AzureのLogic Appsを選びます。

f:id:kikutaro777:20190718211234p:plain

フォームからのデータを受け取るエンドポイントを作成していきます。

f:id:kikutaro777:20190719010621p:plain

「HTTP要求の受信時」を選択します。

f:id:kikutaro777:20190718211327p:plain

ペイロードがJSON(Content-Typeがapplication/jsonのもの)の前提になっていて、ここで少しつまづきました。

f:id:kikutaro777:20190718211447p:plain

フォームが送信するデータのContent-Typeはapplication/jsonではなくapplication/x-www-url-formencodedのためです。調べたところ、公式ドキュメントに各種Content-Typeの扱い方が書いてありました。

docs.microsoft.com

このうち「他のコンテンツタイプ」にあるtriggerFormDataValue()を使いました。これでメールアドレスを取得してSendGridに登録します。

f:id:kikutaro777:20190719010812p:plain

次はSendGridのWeb APIを呼び出すために「HTTP」のアクションを選びます。

f:id:kikutaro777:20190719011046p:plain

設定した値は次のとおりです。

方法:POST
URI:https://api.sendgrid.com/v3/contractdb/recipients
ヘッダー:Enterキー「Content-Type 」値の入力「application/json」
本文:

[
  {
    "email": triggerFormDataValue('email')
  }
]

認証:未加工
値:Bearer SG.xxxxxxxxxxxxxx(SendGridのAPIキー)

f:id:kikutaro777:20190719002337p:plain

APIを呼び出した結果の状態コードで処理を分岐します。

f:id:kikutaro777:20190719010845p:plain

ここでは状態コードが201であるかどうかを条件にしました。

f:id:kikutaro777:20190719010412p:plain

続いて宛先データが正常に登録されたか確認します。

f:id:kikutaro777:20190719011729p:plain

登録する宛先が1件の場合でも結果は配列で返ってきます。recipeint_idを取得するためにデータ操作の「JSONの解析」アクションを挟みます。

f:id:kikutaro777:20190719010515p:plain

Web APIでrecipient_idを指定して宛先を取得します。

f:id:kikutaro777:20190719011413p:plain

宛先が正常に作成されていれば、宛先リストに登録する処理は遅延しても大きな問題はないため、この後の処理は並列化しました。

f:id:kikutaro777:20190719195728p:plain

f:id:kikutaro777:20190719195738p:plain

以上です。フロントエンドのHTML以外はノンコーディングでメールアドレスの登録処理が作れました。実際の運用ではダブルオプトインが必要なので、そこはまた検討したいと思います。

にほんブログ村 IT技術ブログへ
にほんブログ村 にほんブログ村 IT技術ブログ Javaへ
にほんブログ村