このチュートリアルでは、App Service アプリを各種ビジネス プロセスと統合する方法について説明します。 これは、次のような Web アプリのシナリオと共通です。
- トランザクションの確認メールを送信する
- Facebook グループにユーザーを追加する
- SAP や Salesforce などのサードパーティ製システムに接続する
- 標準的な B2B メッセージを交換する
このチュートリアルでは、Azure Logic Apps を使用して、App Service アプリから Gmail でメールを送信します。 Web アプリからメールを送信する方法は他にもあります。たとえば、言語フレームワークによって提供される SMTP 構成などです。 ただし、Azure Logic Apps を使用すると、コードを複雑にすることなく、App Service アプリをもっと強化できます。 Azure Logic Apps には、最も一般的なビジネス統合用の単純な構成インターフェイスが用意されており、アプリから HTTP 要求を使用していつでも呼び出すことができます。
前提条件
任意の言語フレームワークを使用してアプリを App Service にデプロイします。 チュートリアルに従ってサンプル アプリをデプロイするには、以下を参照してください。
ロジック アプリの作成
「従量課金ワークフローの例を作成する」の手順に従い、Azure portal で、従量課金ロジック アプリ リソースを作成します。 一般的なトリガーとテンプレート ギャラリーが表示されたページが開いたら、このチュートリアルに戻ります。
[一般的なトリガーで開始する] セクションの下で、[HTTP 要求の受信時] という名前のトリガーを選びます。
トリガー情報ボックスで [サンプルのペイロードを使用してスキーマを生成する] を選択します。
次のサンプル JSON をテキスト ボックスにコピーして、 [完了] を選択します。
{ "task": "<description>", "due": "<date>", "email": "<email-address>" }
これで、必要な要求データに対するスキーマが生成されます。 実際には、アプリケーション コードによって生成される実際の要求データをキャプチャするだけで、Azure によって JSON スキーマが自動的に生成されます。
ワークフロー デザイナーで、[保存] を選択します。
HTTP 要求トリガーの URL が表示されるようになりました。 コピー アイコンを選択して、後で使用できるようにコピーしておきます。
この HTTP 要求定義は、Gmail であるかそれ以外の何かであるかにかかわらず、このロジック アプリ ワークフローで実行するすべての処理のトリガーです。 後で、App Service アプリでこの URL を呼び出します。 要求トリガーの詳細については、HTTP 要求と応答のリファレンスを参照してください。
トリガーで、 [新しいステップ] を選択します。 [操作を選択してください] の検索ボックスで、 [すべて] を選択します。
検索ボックスに「Gmail」と入力します。 [メールの送信 (V2)] という名前のアクションを見つけて選択します。
ヒント
SendGrid、MailChimp、Microsoft 365、SalesForce など、他の種類の統合を検索することができます。 詳細については、Azure Logic Apps のマネージド コネクタに関するページを参照してください。
[Gmail] アクションで、[サインイン] を選択し、メールの送信に使用する Gmail アカウントへのアクセスを認証します。
サインインした後、[対象] ボックス内を選択すると、動的なコンテンツの一覧が自動的に開きます。 このリストで、[HTTP 要求の受信時] アクションの横の [もっと見る] を選択します。
これで、前に使用したサンプル JSON データの 3 つのプロパティが表示されます。 この手順では、HTTP 要求のこれらのプロパティを使用して、メールを作成します。
[対象] フィールドの値で、[メール] を選択します。 必要に応じて、[動的なコンテンツの追加] を選択して 動的なコンテンツの一覧を閉じます。
[新しいパラメーターの追加] 一覧で [件名] と [本文] を選択します。
[件名] ボックス内を選択し、同様に [タスク] を選択します。 [件名] ボックスにカーソルがある状態で、「created」と入力します。
[本文] ボックス内を選択し、同様に [期限] を選択します。 [期限] の左側にカーソルを移動し、「This work item is due on」と入力します。
ヒント
メールの本文で HTML コンテンツを直接編集する場合は、デザイナー ツール バーの [コード ビュー] を選択します。 動的なコンテンツ コード (たとえば、
@{triggerBody()?['due']}
) が保持されていることを確認します次に、HTTP トリガーに非同期 HTTP 応答を追加します。 HTTP トリガーと Gmail アクションの間の + 記号をクリックし、[並列分岐の追加] を選択します。
検索ボックスで応答を検索して、応答アクションを選択します。
既定では、応答アクションは HTTP 200 を送信します。 このチュートリアルでは、それで十分です。 詳細については、HTTP 要求と応答のリファレンスを参照してください。
デザイナーのツール バーで、[保存] をもう一度選択します。
アプリに HTTP 要求コードを追加する
前の手順で HTTP 要求トリガーの URL をコピーしてあることを確認します。 機密情報が含まれているため、コードに直接記述しないことをお勧めします。 代わりに、App Service ではアプリ設定を使用して、環境変数として参照できます。
Cloud Shell で次のコマンドを使用して、アプリ設定を作成します (<app-name>、<resource-group-name>、および <logic-app-url> を置き換えます)。
az webapp config appsettings set --name <app-name> --resource-group <resource-group-name> --settings LOGIC_APP_URL="<your-logic-app-url>"
コードで、言語フレームワークで使用できる任意の HTTP クライアント言語を使用し、次の構成で URL に標準の HTTP Post を行います。
要求本文には、ロジック アプリに指定したものと同じ JSON 形式が含まれています。
{ "task": "<description>", "due": "<date>", "email": "<email-address>" }
要求には、ヘッダー
Content-Type: application/json
が含まれています。パフォーマンスを最適化するには、可能であれば要求を非同期的に送信します。
例を表示するには、下の該当する言語またはフレームワークのタブを選択してください。
ASP.NET では、System.Net.Http.HttpClient クラスを使用して HTTP Post を送信できます。 次に例を示します。
// requires using System.Net.Http;
var client = new HttpClient();
// requires using System.Text.Json;
var jsonData = JsonSerializer.Serialize(new
{
email = "a-valid@emailaddress.com",
due = "4/1/2020",
task = "My new task!"
});
HttpResponseMessage result = await client.PostAsync(
// requires using System.Configuration;
ConfigurationManager.AppSettings["LOGIC_APP_URL"],
new StringContent(jsonData, Encoding.UTF8, "application/json"));
var statusCode = result.StatusCode.ToString();
このコードを「チュートリアル: SQL Database を使用して Azure に ASP.NET アプリを作成する」のサンプル アプリでテストしている場合は、そのアプリを使用して、Create アクションで、Todo
項目の追加後に確認メールを送信できます。 上の非同期コードを使用するには、Create アクションを非同期に変換します。