教學課程:使用事件方格和 Logic Apps 來傳送 Azure IoT 中樞事件的相關電子郵件通知
Azure Event Grid 可讓您在下游商務應用程式中觸發動作,進而回應 IoT 中樞中的事件。
本文逐步解說使用 IoT 中樞與事件方格的範例組態。 結束時,您會將 Azure 邏輯應用程式設定為在每次裝置與 IoT 中樞連線或中斷連線時傳送通知電子郵件。 事件方格可用來取得重要裝置中斷連線的及時通知。 計量和診斷需要幾分鐘 (例如 20 分鐘或更久),才會顯示在記錄/警示中。 重要基礎結構可能無法接受較長的處理時間。
如果您沒有 Azure 訂閱,請在開始之前,先建立 Azure 免費帳戶。
必要條件
- Azure Logic Apps 支援的任何電子郵件提供者 (如 Office 365 Outlook 或 Outlook.com) 所提供的電子郵件帳戶。 這個電子郵件帳戶用來傳送事件通知。
在 Azure Cloud Shell 中使用 Bash 環境。 如需詳細資訊,請參閱 Azure Cloud Shell 中的 Bash 快速入門。
若要在本地執行 CLI 參考命令,請安裝 Azure CLI。 若您在 Windows 或 macOS 上執行,請考慮在 Docker 容器中執行 Azure CLI。 如需詳細資訊,請參閱〈如何在 Docker 容器中執行 Azure CLI〉。
如果您使用的是本機安裝,請使用 az login 命令,透過 Azure CLI 來登入。 請遵循您終端機上顯示的步驟,完成驗證程序。 如需其他登入選項,請參閱使用 Azure CLI 登入。
出現提示時,請在第一次使用時安裝 Azure CLI 延伸模組。 如需擴充功能詳細資訊,請參閱使用 Azure CLI 擴充功能。
執行 az version 以尋找已安裝的版本和相依程式庫。 若要升級至最新版本,請執行 az upgrade。
建立 IoT 中樞
您可以使用入口網站中的 Azure Cloud Shell 終端,快速建立新的 IoT 中樞。
登入 Azure 入口網站。
選取頁面右上方的 [Cloud Shell] 按鈕。
執行下列命令以建立新的資源群組:
az group create --name {your resource group name} --location westus
執行以下命令來建立 IoT 中樞:
az iot hub create --name {your iot hub name} --resource-group {your resource group name} --sku S1
將 Cloud Shell 終端最小化。 您在本教學課程稍後會回到殼層。
建立邏輯應用程式
接下來,建立邏輯應用程式,並新增 HTTP 事件方格觸發程序來處理來自 IoT 中樞的要求。
建立邏輯應用程式資源
在 Azure 入口網站中,選取 [建立資源],然後在搜尋方塊中鍵入「邏輯應用程式」並選取 Return。 從結果中選取 [邏輯應用程式]。
在下一個畫面上,選取 [建立]。
在訂用帳戶中為邏輯應用程式指定唯一的名稱,然後選取與您的 IoT 中樞相同的訂用帳戶、資源群組和位置。 選擇 [使用量] 方案類型。
選取 [檢閱 + 建立]。
確認您的設定,然後選取 [建立]。
建立資源之後,選取 [前往資源]。
在 Logic Apps 設計工具中,向下捲動一頁以查看 [範本]。 選擇 [空白邏輯應用程式],以便從頭建置邏輯應用程式。
選取觸發程序
觸發程序是啟動邏輯應用程式的特定事件。 在本教學課程中,啟動工作流程的觸發程序會透過 HTTP 接收要求。
在連接器和觸發程序搜尋列中,輸入 HTTP。
瀏覽結果並且選取 [要求 - 收到 HTTP 要求時] 作為觸發程序。
選取使用範例承載產生結構描述。
複製下方的
json
,並且以您自己的值取代預留位置值<>
。將「裝置連線事件結構描述」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。您可以放心地忽略這項建議,並移至下一節。
建立動作
動作是在觸發程序啟動邏輯應用程式工作流程之後發生的任何步驟。 在本教學課程中,從電子郵件提供者傳送電子郵件通知就是一個動作。
選取新步驟。 視窗隨即出現,提示您選擇動作。
搜尋 Outlook。
根據您的電子郵件提供者,尋找並選取相符的連接器。 本教學課程使用 Outlook.com。 其他電子郵件提供者的步驟很類似。 或者,使用 Office 365 Outlook 略過登入步驟。
選取傳送電子郵件 (V2)動作。
選取 [登入] 並登入您的電子郵件帳戶。 選取 [是] 讓應用程式存取您的資訊。
建置電子郵件範本。
收件者:輸入要收到通知電子郵件的電子郵件地址。 在此教學課程中,請使用您可以存取的電子郵件帳戶來進行測試。
主旨:填入用於主旨的文字。 當您按一下 [主旨] 文字方塊時,可以選取要納入的動態內容。 例如,本教學課程會使用
IoT Hub alert: {eventType}
。 如果您看不到動態內容,請選取 [新增動態內容] 超連結,以開啟或關閉 [動態內容] 檢視。
選取
eventType
之後,您會看到目前為止的電子郵件表單輸出。 選取 [傳送電子郵件 (V2)],以編輯電子郵件的本文。- 本文:撰寫電子郵件的文字。 從選取器工具選取 [JSON 屬性],以便根據事件資料納入動態內容。 如果您看不到動態內容,請選取 [本文] 文字方塊底下的 [新增動態內容] 超連結。 如果此超連結未顯示您想要的欄位,按一下 [動態內容] 畫面中的 [更多],以納入上一個動作中的欄位。
您的電子郵件範本可能類似此範例:
在 Logic Apps 設計工具中選取 [儲存]。
複製 HTTP URL
離開 Logic Apps 設計工具之前,為觸發程序複製邏輯應用程式正在接聽的 URL。 您可以使用此 URL 來設定 Event Grid。
按一下以展開 [收到 HTTP 要求時] 觸發程序設定方塊。
選取 [HTTP POST URL] 旁的複製按鈕來複製其值。
儲存這個 URL,以便在下一節參考它。
設定 IoT 中樞事件的訂用帳戶
在本節中,您可將 IoT 中樞設定為在事件發生時進行發佈。
在 Azure 入口網站中,瀏覽至您的 IoT 中樞。 您可以從 Azure 儀表板選取 [IoT 中樞],然後從資源清單中選取 IoT 中樞執行個體,以尋找您的 IoT 中樞。
選取事件。
選取 [事件訂用帳戶]。
使用下列值來建立事件訂用帳戶:
在 [事件訂用帳戶詳細資料] 區段中:
- 提供事件訂閱的名稱。
- 針對 [事件結構描述],選取 [事件方格結構描述]。
在 [主題詳細資料] 區段中:
- 確認 [主題類型] 已設為 [IoT 中樞]。
- 確認 IoT 中樞的名稱已設為 [來源資源] 欄位的值。
- 為要替您建立的系統主題輸入名稱。 若要了解系統主題,請參閱系統主題概觀。
在 [事件類型] 區段中:
選取 [篩選至事件類型] 下拉式清單。
取消選取 [建立的裝置] 和 [刪除的裝置] 核取方塊,只保留選取 [連線的裝置] 和 [中斷連線的裝置] 核取方塊。
在 [端點詳細資料] 區段中:
- 針對 [端點類型]選取 [Web Hook]。
- 按一下 [選取端點],貼上您從邏輯應用程式複製的 URL,然後確認選取。
當您完成時,窗格看起來應該如下列範例所示:
選取 建立。
模擬連線和傳送遙測的新裝置
藉由使用 Azure CLI 快速模擬裝置連線,來測試邏輯應用程式。
選取 [Cloud Shell] 按鈕以重新開啟您的終端。
執行下列命令以建立模擬的裝置身分識別:
az iot hub device-identity create --device-id simDevice --hub-name {YourIoTHubName}
處理可能需要一分鐘的時間。 一旦建立 JSON 列印成品,您會在主控台中看到。
執行下列命令以模擬將您的裝置連線到 IoT 中樞並且傳送遙測:
az iot device simulate -d simDevice -n {YourIoTHubName}
當模擬的裝置連線到 IoT 中樞時,您會收到一封電子郵件,通知您有「DeviceConnected」事件。
當模擬完成,您會收到一封電子郵件,通知您有「DeviceDisconnected」事件。
清除資源
本教學課程使用了會使您的 Azure 訂用帳戶產生費用的資源。 完成教學課程試用和結果測試時,請停用或刪除不想保留的資源。
若要刪除您在本教學課程中建立的所有資源,請刪除資源群組。
選取 [資源群組],然後選取您為此教學課程建立的資源群組。
在 [資源群組] 窗格中,選取 [刪除資源群組]。 系統會提示您輸入資源群組名稱,而後您可將其刪除。 其中包含的所有資源也會一併移除。
下一步
- 深入了解使用 Event Grid 來觸發動作以回應 IoT 中樞事件。
- 了解如何排序裝置連線和中斷連線事件
- 了解您可使用 Event Grid 執行哪些作業。
如需支援的完整邏輯應用程式連接器清單,請參閱