教學課程:使用事件方格和 Logic Apps 來傳送 Azure IoT 中樞事件的相關電子郵件通知

Azure Event Grid 可讓您在下游商務應用程式中觸發動作,進而回應 IoT 中樞中的事件。

本文逐步解說使用 IoT 中樞與事件方格的範例組態。 結束時,您會將 Azure 邏輯應用程式設定為在每次裝置與 IoT 中樞連線或中斷連線時傳送通知電子郵件。 事件方格可用來取得重要裝置中斷連線的及時通知。 計量和診斷需要幾分鐘 (例如 20 分鐘或更久),才會顯示在記錄/警示中。 重要基礎結構可能無法接受較長的處理時間。

如果您沒有 Azure 訂閱,請在開始之前,先建立 Azure 免費帳戶

必要條件

  • Azure Logic Apps 支援的任何電子郵件提供者 (如 Office 365 Outlook 或 Outlook.com) 所提供的電子郵件帳戶。 這個電子郵件帳戶用來傳送事件通知。

建立 IoT 中樞

您可以使用入口網站中的 Azure Cloud Shell 終端,快速建立新的 IoT 中樞。

  1. 登入 Azure 入口網站

  2. 選取頁面右上方的 [Cloud Shell] 按鈕。

    Screenshot of how to open the Azure Cloud Shell from the Azure portal.

  3. 執行下列命令以建立新的資源群組:

    az group create --name {your resource group name} --location westus
    
  4. 執行以下命令來建立 IoT 中樞:

    az iot hub create --name {your iot hub name} --resource-group {your resource group name} --sku S1 
    
  5. 將 Cloud Shell 終端最小化。 您在本教學課程稍後會回到殼層。

建立邏輯應用程式

接下來,建立邏輯應用程式,並新增 HTTP 事件方格觸發程序來處理來自 IoT 中樞的要求。

建立邏輯應用程式資源

  1. Azure 入口網站中,選取 [建立資源],然後在搜尋方塊中鍵入「邏輯應用程式」並選取 Return。 從結果中選取 [邏輯應用程式]

    Screenshot of how to select the logic app from a list of resources.

  2. 在下一個畫面上,選取 [建立]

  3. 在訂用帳戶中為邏輯應用程式指定唯一的名稱,然後選取與您的 IoT 中樞相同的訂用帳戶、資源群組和位置。 選擇 [使用量] 方案類型。

    Screenshot of how to configure your logic app.

  4. 選取 [檢閱 + 建立]。

  5. 確認您的設定,然後選取 [建立]

  6. 建立資源之後,選取 [前往資源]

  7. 在 Logic Apps 設計工具中,向下捲動一頁以查看 [範本]。 選擇 [空白邏輯應用程式],以便從頭建置邏輯應用程式。

    Screenshot of the Logic App Designer templates.

選取觸發程序

觸發程序是啟動邏輯應用程式的特定事件。 在本教學課程中,啟動工作流程的觸發程序會透過 HTTP 接收要求。

  1. 在連接器和觸發程序搜尋列中,輸入 HTTP

  2. 瀏覽結果並且選取 [要求 - 收到 HTTP 要求時] 作為觸發程序。

    Select HTTP request trigger

  3. 選取使用範例承載產生結構描述

    Use sample payload

  4. 複製下方的 json,並且以您自己的值取代預留位置值 <>

  5. 將「裝置連線事件結構描述」JSON 貼入文字方塊中,然後選取 [完成]

      [{  
       "id": "f6bbf8f4-d365-520d-a878-17bf7238abd8",
       "topic": "/SUBSCRIPTIONS/<azure subscription ID>/RESOURCEGROUPS/<resource group name>/PROVIDERS/MICROSOFT.DEVICES/IOTHUBS/<hub name>",
       "subject": "devices/LogicAppTestDevice",
       "eventType": "Microsoft.Devices.DeviceConnected",
       "eventTime": "2018-06-02T19:17:44.4383997Z",
       "data": {
           "deviceConnectionStateEventInfo": {
             "sequenceNumber":
               "000000000000000001D4132452F67CE200000002000000000000000000000001"
           },
         "hubName": "<hub name>",
         "deviceId": "LogicAppTestDevice",
         "moduleId" : "DeviceModuleID"
       }, 
       "dataVersion": "1",
       "metadataVersion": "1"
     }]
    

    重要

    請務必將 JSON 程式碼片段貼到 [請使用範例承載產生結構描述] 連結提供的方塊中,而不是直接貼到 [要求本文 JSON 結構描述] 方塊中。 範例承載連結可讓您根據 JSON 程式碼片段產生 JSON 內容。 在要求本文中結束的最終 JSON 與 JSON 程式碼片段不同。

    此事件會在裝置連線至 IoT 中樞時發佈。

注意

您可能會收到快顯通知,指出請務必在您的要求中加入 Content-Type 標頭,並將其設為 application/json。您可以放心地忽略這項建議,並移至下一節。

建立動作

動作是在觸發程序啟動邏輯應用程式工作流程之後發生的任何步驟。 在本教學課程中,從電子郵件提供者傳送電子郵件通知就是一個動作。

  1. 選取新步驟。 視窗隨即出現,提示您選擇動作

  2. 搜尋 Outlook

  3. 根據您的電子郵件提供者,尋找並選取相符的連接器。 本教學課程使用 Outlook.com。 其他電子郵件提供者的步驟很類似。 或者,使用 Office 365 Outlook 略過登入步驟。

    Select email provider connector

  4. 選取傳送電子郵件 (V2)動作。

  5. 選取 [登入] 並登入您的電子郵件帳戶。 選取 [是] 讓應用程式存取您的資訊。

  6. 建置電子郵件範本。

    • 收件者:輸入要收到通知電子郵件的電子郵件地址。 在此教學課程中,請使用您可以存取的電子郵件帳戶來進行測試。

    • 主旨:填入用於主旨的文字。 當您按一下 [主旨] 文字方塊時,可以選取要納入的動態內容。 例如,本教學課程會使用 IoT Hub alert: {eventType}。 如果您看不到動態內容,請選取 [新增動態內容] 超連結,以開啟或關閉 [動態內容] 檢視。

    選取 eventType 之後,您會看到目前為止的電子郵件表單輸出。 選取 [傳送電子郵件 (V2)],以編輯電子郵件的本文。

    Screenshot of the condensed body output form.

    • 本文:撰寫電子郵件的文字。 從選取器工具選取 [JSON 屬性],以便根據事件資料納入動態內容。 如果您看不到動態內容,請選取 [本文] 文字方塊底下的 [新增動態內容] 超連結。 如果此超連結未顯示您想要的欄位,按一下 [動態內容] 畫面中的 [更多],以納入上一個動作中的欄位。

    您的電子郵件範本可能類似此範例:

    Screenshot of how to create an event email in the template.

  7. 在 Logic Apps 設計工具中選取 [儲存]

複製 HTTP URL

離開 Logic Apps 設計工具之前,為觸發程序複製邏輯應用程式正在接聽的 URL。 您可以使用此 URL 來設定 Event Grid。

  1. 按一下以展開 [收到 HTTP 要求時] 觸發程序設定方塊。

  2. 選取 [HTTP POST URL] 旁的複製按鈕來複製其值。

    Copy the HTTP POST URL

  3. 儲存這個 URL,以便在下一節參考它。

設定 IoT 中樞事件的訂用帳戶

在本節中,您可將 IoT 中樞設定為在事件發生時進行發佈。

  1. 在 Azure 入口網站中,瀏覽至您的 IoT 中樞。 您可以從 Azure 儀表板選取 [IoT 中樞],然後從資源清單中選取 IoT 中樞執行個體,以尋找您的 IoT 中樞。

  2. 選取事件

    Open the Event Grid details

  3. 選取 [事件訂用帳戶]

    Create new event subscription

  4. 使用下列值來建立事件訂用帳戶:

    1. 在 [事件訂用帳戶詳細資料] 區段中:

      1. 提供事件訂閱的名稱
      2. 針對 [事件結構描述],選取 [事件方格結構描述]
    2. 在 [主題詳細資料] 區段中:

      1. 確認 [主題類型] 已設為 [IoT 中樞]
      2. 確認 IoT 中樞的名稱已設為 [來源資源] 欄位的值。
      3. 為要替您建立的系統主題輸入名稱。 若要了解系統主題,請參閱系統主題概觀
    3. 在 [事件類型] 區段中:

      1. 選取 [篩選至事件類型] 下拉式清單。

      2. 取消選取 [建立的裝置] 和 [刪除的裝置] 核取方塊,只保留選取 [連線的裝置] 和 [中斷連線的裝置] 核取方塊。

        select subscription event types

    4. 在 [端點詳細資料] 區段中:

      1. 針對 [端點類型]選取 [Web Hook]
      2. 按一下 [選取端點],貼上您從邏輯應用程式複製的 URL,然後確認選取。

      select endpoint url

      當您完成時,窗格看起來應該如下列範例所示:

      Screenshot of your 'Create Event Subscription' page in the Azure portal.

  5. 選取 建立

模擬連線和傳送遙測的新裝置

藉由使用 Azure CLI 快速模擬裝置連線,來測試邏輯應用程式。

  1. 選取 [Cloud Shell] 按鈕以重新開啟您的終端。

  2. 執行下列命令以建立模擬的裝置身分識別:

    az iot hub device-identity create --device-id simDevice --hub-name {YourIoTHubName}
    

    處理可能需要一分鐘的時間。 一旦建立 JSON 列印成品,您會在主控台中看到。

  3. 執行下列命令以模擬將您的裝置連線到 IoT 中樞並且傳送遙測:

    az iot device simulate -d simDevice -n {YourIoTHubName}
    
  4. 當模擬的裝置連線到 IoT 中樞時,您會收到一封電子郵件,通知您有「DeviceConnected」事件。

  5. 當模擬完成,您會收到一封電子郵件,通知您有「DeviceDisconnected」事件。

    Screenshot of the email you should receive.

清除資源

本教學課程使用了會使您的 Azure 訂用帳戶產生費用的資源。 完成教學課程試用和結果測試時,請停用或刪除不想保留的資源。

若要刪除您在本教學課程中建立的所有資源,請刪除資源群組。

  1. 選取 [資源群組],然後選取您為此教學課程建立的資源群組。

  2. 在 [資源群組] 窗格中,選取 [刪除資源群組]。 系統會提示您輸入資源群組名稱,而後您可將其刪除。 其中包含的所有資源也會一併移除。

下一步

如需支援的完整邏輯應用程式連接器清單,請參閱