チュートリアル:Logic Apps を使用して Azure IoT Hub イベントに関する電子メール通知を送信するTutorial: Send email notifications about Azure IoT Hub events using Logic Apps

Azure Event Grid を使うと、ダウンストリームのビジネス アプリケーションのアクションをトリガーすることによって、IoT Hub のイベントに対応することができます。Azure Event Grid enables you to react to events in IoT Hub by triggering actions in your downstream business applications.

この記事では、IoT Hub と Event Grid を使うサンプルを構成する手順について説明します。This article walks through a sample configuration that uses IoT Hub and Event grid. 最終的に、デバイスが IoT Hub に追加されるたびに通知メールを送信するように Azure Logic Apps が設定されます。By the end, you will have an Azure logic app set up to send a notification email every time a device is added to your IoT hub.

前提条件Prerequisites

  • Azure Logic Apps がサポートするメール プロバイダー (Office 365 Outlook、Outlook.com、Gmail など) のメール アカウント。An email account from any email provider that is supported by Azure Logic Apps, like Office 365 Outlook, Outlook.com, or Gmail. このメール アカウントは、イベント通知の送信に使われます。This email account is used to send the event notifications. サポートされている Logic App コネクタの完全な一覧については、「コネクタの概要」をご覧くださいFor a complete list of supported Logic App connectors, see the Connectors overview
  • アクティブな Azure アカウントアカウントがない場合、Azure 試用版にサインアップして、最大 10 件の無料 Mobile Apps を入手できます。An active Azure account. アカウントがない場合は、無料アカウントを作成することができます。If you don't have one, you can create a free account.
  • Azure の IoT Hub。An IoT Hub in Azure. まだ作成していない場合は、「IoT Hub の概要」のチュートリアルをご覧ください。If you haven't created one yet, see Get started with IoT Hub for a walkthrough.

ロジック アプリを作成しますCreate a logic app

最初にロジック アプリを作成し、仮想マシンのリソース グループを監視する Event Grid トリガーを追加します。First, create a logic app and add an Event grid trigger that monitors the resource group for your virtual machine.

ロジック アプリ リソースを作成するCreate a logic app resource

  1. Azure portal で、[リソースの作成] > [統合] > [Logic App] を選択します。In the Azure portal, select Create a resource > Integration > Logic App.

    ロジック アプリを作成する

  2. ロジック アプリにサブスクリプション内で一意の名前を指定し、IoT Hub と同じサブスクリプション、リソース グループ、場所を選びます。Give your logic app a name that's unique in your subscription, then select the same subscription, resource group, and location as your IoT hub.

  3. 作成を選択します。Select Create.

  4. リソースが作成されたら、ロジック アプリに移動します。Once the resource is created, navigate to your logic app.

  5. すばやく開始できるように、ロジック アプリ デザイナーで一般的なパターンのテンプレートが表示されます。The Logic Apps Designer shows you templates for common patterns so you can get started faster. ロジック アプリ デザイナーで、[テンプレート][空のロジック アプリ] を選ぶと、ロジック アプリを最初から作成できます。In the Logic App Designer under Templates, choose Blank Logic App so that you can build your logic app from scratch.

トリガーを選択するSelect a trigger

トリガーは、ロジック アプリを開始する特定のイベントです。A trigger is a specific event that starts your logic app. このチュートリアルでは、ワークフローを開始するトリガーは、HTTP 経由での要求の受信です。For this tutorial, the trigger that sets off the workflow is receiving a request over HTTP.

  1. コネクタとトリガーの検索バーに、「HTTP」と入力します。In the connectors and triggers search bar, type HTTP.

  2. トリガーとして [要求 - HTTP 要求の受信時] を選びます。Select Request - When an HTTP request is received as the trigger.

    HTTP 要求トリガーを選ぶ

  3. [サンプルのペイロードを使用してスキーマを生成する] を選びます。Select Use sample payload to generate schema.

    HTTP 要求トリガーを選ぶ

  4. 次のサンプル JSON コードをテキスト ボックスに貼り付けて、[完了] を選びます。Paste the following sample JSON code into the text box, then select Done:

    [{
      "id": "56afc886-767b-d359-d59e-0da7877166b2",
      "topic": "/SUBSCRIPTIONS/<subscription ID>/RESOURCEGROUPS/<resource group name>/PROVIDERS/MICROSOFT.DEVICES/IOTHUBS/<hub name>",
      "subject": "devices/LogicAppTestDevice",
      "eventType": "Microsoft.Devices.DeviceCreated",
      "eventTime": "2018-01-02T19:17:44.4383997Z",
      "data": {
        "twin": {
          "deviceId": "LogicAppTestDevice",
          "etag": "AAAAAAAAAAE=",
          "deviceEtag": "null",
          "status": "enabled",
          "statusUpdateTime": "0001-01-01T00:00:00",
          "connectionState": "Disconnected",
          "lastActivityTime": "0001-01-01T00:00:00",
          "cloudToDeviceMessageCount": 0,
          "authenticationType": "sas",
          "x509Thumbprint": {
            "primaryThumbprint": null,
            "secondaryThumbprint": null
          },
          "version": 2,
          "properties": {
            "desired": {
              "$metadata": {
                "$lastUpdated": "2018-01-02T19:17:44.4383997Z"
              },
              "$version": 1
            },
            "reported": {
              "$metadata": {
                "$lastUpdated": "2018-01-02T19:17:44.4383997Z"
              },
              "$version": 1
            }
          }
        },
        "hubName": "egtesthub1",
        "deviceId": "LogicAppTestDevice"
      },
      "dataVersion": "1",
      "metadataVersion": "1"
    }]
    
  5. "application/json に設定されている Content-Type ヘッダーを要求に忘れずに含めてください" というポップアップ通知を受け取る場合があります。You may receive a pop-up notification that says, Remember to include a Content-Type header set to application/json in your request. この指摘は無視しても安全なので、次のセクションに進みます。You can safely ignore this suggestion, and move on to the next section.

アクションを作成するCreate an action

アクションは、トリガーがロジック アプリのワークフローを開始した後に発生する手順です。Actions are any steps that occur after the trigger starts the logic app workflow. このチュートリアルのアクションは、メール プロバイダーからのメール通知の送信です。For this tutorial, the action is to send an email notification from your email provider.

  1. [新しいステップ] を選択します。Select New step. [アクションの選択] ウィンドウが開きます。This will open a window to Choose an action.

  2. [電子メール] を検索します。Search for Email.

  3. 電子メール プロバイダーに基づいて、一致するコネクタを検索して選択します。Based on your email provider, find and select the matching connector. このチュートリアルでは、Office 365 Outlook を使います。This tutorial uses Office 365 Outlook. 他のメール プロバイダーの手順も同様です。The steps for other email providers are similar.

    メール プロバイダーのコネクタを選ぶ

  4. [電子メールの送信] アクションを選びます。Select the Send an email action.

  5. メッセージに従ってメール アカウントにサインインします。If prompted, sign in to your email account.

  6. メール テンプレートを作成します。Build your email template.

    • [宛先]:通知メールを受信するメール アドレスを入力します。To: Enter the email address to receive the notification emails. このチュートリアルでは、テスト用にアクセスできるメール アカウントを使います。For this tutorial, use an email account that you can access for testing.
    • [件名][本文]:メールのテキストを記述します。Subject and Body: Write the text for your email. イベント データに基づく動的なコンテンツを含めるには、選択ツールから JSON プロパティを選びます。Select JSON properties from the selector tool to include dynamic content based on event data.

    メール テンプレートは次の例のようになります。Your email template may look like this example:

    メールの情報を入力する

  7. ロジック アプリを保存し、Save your logic app.

HTTP の URL をコピーするCopy the HTTP URL

Logic Apps デザイナーを終了する前に、ロジック アプリがトリガーをリッスンする URL をコピーします。Before you leave the Logic Apps Designer, copy the URL that your logic apps is listening to for a trigger. この URL を使って、Event Grid を構成します。You use this URL to configure Event Grid.

  1. [HTTP 要求の受信時] トリガー構成ボックスをクリックして展開します。Expand the When a HTTP request is received trigger configuration box by clicking on it.

  2. [HTTP POST の URL] の横にあるコピー ボタンを選んで値をコピーします。Copy the value of HTTP POST URL by selecting the copy button next to it.

    HTTP POST の URL をコピーする

  3. 次のセクションで参照できるように、この URL を保存します。Save this URL so that you can refer to it in the next section.

IoT Hub イベント用のサブスクリプションを構成するConfigure subscription for IoT Hub events

このセクションでは、発生したらイベントを発行するように IoT Hub を構成します。In this section, you configure your IoT Hub to publish events as they occur.

  1. Azure Portal で、お使いの IoT ハブに移動します。In the Azure portal, navigate to your IoT hub.

  2. イベントを選択します。Select Events.

    Event Grid の詳細を表示する

  3. [イベント サブスクリプション] を選びます。Select Event subscription.

    新しいイベント サブスクリプションを作成する

  4. 次の値でイベント サブスクリプションを作成します。Create the event subscription with the following values:

    • [イベントの種類]:[すべてのイベントの種類を購読します] をオフにして、メニューから [デバイスの作成完了] を選択します。Event Type: Uncheck Subscribe to all event types and select Device Created from the menu.

    • [エンドポイントの詳細]:[エンドポイントのタイプ] として [Web Hook] を選択し、[エンドポイントの選択] をクリックして、ロジック アプリからコピーした URL を貼り付けて選択を確認します。Endpoint Details: Select Endpoint Type as Web Hook and click on select endpoint and paste the URL that you copied from your logic app and confirm selection.

      エンドポイントの URL を選択する

    • [イベント サブスクリプションの詳細]:わかりやすい名前を指定し、[イベント グリッド スキーマ] を選択しますEvent Subscription Details: Provide a descriptive name and select Event Grid Schema

    終了すると、フォームは次の例のようになります。When you're done, the form should look like the following example:

    サンプルのイベント サブスクリプション フォーム

  5. 以上でイベント サブスクリプションを保存すると、IoT hub でデバイスが作成されるたびに通知を受け取るようになります。You could save the event subscription here, and receive notifications for every device that is created in your IoT hub. しかし、このチュートリアルでは、特定のデバイスでフィルター処理をするためにオプションのフィールドを追加します。For this tutorial, though, let's use the optional fields to filter for specific devices. フォームの上部にある [追加機能] を選択します。Select Additional Features at the top of the form.

  6. 次のフィルターを作成します。Create the following filters:

    • 次で始まるサブジェクト:ビル 1 でのデバイス イベントでフィルター処理するため、「devices/Building1_」と入力します。Subject Begins With: Enter devices/Building1_ to filter for device events in building 1.
    • 次で終わるサブジェクト:温度に関するデバイス イベントでフィルター処理するため、「_Temperature」と入力します。Subject Ends With: Enter _Temperature to filter for device events related to temperature.
  7. [作成] を選び、イベント サブスクリプションを保存します。Select Create to save the event subscription.

新しいデバイスを作成するCreate a new device

新しいデバイスを作成してイベント通知メールをトリガーすることで、ロジック アプリをテストします。Test your logic app by creating a new device to trigger an event notification email.

  1. IoT Hub から、[IoT Devices](IoT デバイス) を選びます。From your IoT hub, select IoT Devices.
  2. [追加] を選択します。Select Add.
  3. [デバイス ID] に「Building1_Floor1_Room1_Temperature」と入力します。For Device ID, enter Building1_Floor1_Room1_Temperature.
  4. [保存] を選択します。Select Save.
  5. 異なるデバイス ID で複数のデバイスを追加し、イベント サブスクリプション フィルターをテストできます。You can add multiple devices with different device IDs to test the event subscription filters. 次の例を試してください。Try these examples:
    • Building1_Floor1_Room1_LightBuilding1_Floor1_Room1_Light
    • Building1_Floor2_Room2_TemperatureBuilding1_Floor2_Room2_Temperature
    • Building2_Floor1_Room1_TemperatureBuilding2_Floor1_Room1_Temperature
    • Building2_Floor1_Room1_LightBuilding2_Floor1_Room1_Light

IoT Hub にデバイスをいくつか追加した後、ロジック アプリをトリガーしたものをメールで確認します。Once you've added a few devices to your IoT hub, check your email to see which ones triggered the logic app.

Azure CLI の使用Use the Azure CLI

Azure Portal を使う代わりに、Azure CLI を使って IoT Hub の手順を行うことができます。Instead of using the Azure portal, you can accomplish the IoT Hub steps using the Azure CLI. 詳しくは、イベント サブスクリプションの作成IoT デバイスの作成に関する Azure CLI のページをご覧くださいFor details, see the Azure CLI pages for creating an event subscription and creating an IoT device

リソースのクリーンアップClean up resources

このチュートリアルでは、Azure サブスクリプションで料金が発生するリソースを使いました。This tutorial used resources that incur charges on your Azure subscription. チュートリアルを試してテストを完了したら、残しておきたくないリソースを無効にするか削除します。When you're done trying out the tutorial and testing your results, disable or delete resources that you don't want to keep.

アプリ ロジックでの作業を失いたくない場合は、削除ではなく無効にします。If you don't want to lose the work on your logic app, disable it instead of deleting it.

  1. ロジック アプリに移動します。Navigate to your logic app.
  2. [概要] ブレードで、[削除] または [無効] を選びます。On the Overview blade select Delete or Disable.

各サブスクリプションで使うことができる無料 IoT Hub は 1 つです。Each subscription can have one free IoT hub. このチュートリアル用に無料のハブを作成した場合は、課金されないように削除する必要はありません。If you created a free hub for this tutorial, then you don't need to delete it to prevent charges.

  1. IoT Hub に移動します。Navigate to your IoT hub.
  2. [概要] ブレードで [削除] を選びます。On the Overview blade select Delete.

IoT Hub を残しておく場合でも、作成したイベント サブスクリプションを削除できます。Even if you keep your IoT hub, you may want to delete the event subscription that you created.

  1. IoT Hub で [イベント グリッド] を選びます。In your IoT hub, select Event Grid.
  2. 削除するイベント サブスクリプションを選びます。Select the event subscription that you want to remove.
  3. [削除] を選択します。Select Delete.

次の手順Next steps