將 IoT 資料匯出至 Webhook
本文說明如何設定資料匯出,以將資料傳送至 Webhook。
使用此功能從 IoT Central 應用程式中連續匯出已篩選及擴充的 IoT 資料。 資料匯出會即時將變更推送至雲端解決方案的其他部分,以進行經常性路徑深入解析、分析和儲存體。
例如,您可以:
- 以 JSON 格式近乎即時匯出遙測、屬性變更、裝置連線、裝置生命週期、裝置範本生命週期和稽核記錄資料。
- 篩選資料流以匯出符合自訂條件的資料。
- 使用來自裝置的自訂值和屬性值來擴充資料流。
- 轉換資料流以修改其圖形和內容。
提示
在您開啟資料匯出時,只會取得該時刻之後的資料。 若要保留更多歷史資料,請儘早開啟資料匯出。 若要在關閉資料匯出時手動匯出資料,請參閱如何使用 IoT Central REST API 來查詢裝置 (部分機器翻譯)。
注意
在某些情況下,匯出訊息最多可能需要 60 秒的時間。 測量的時間範圍為:自 IoT Central 從基礎 IoT 中樞接收訊息,到將訊息傳遞至目的地端點。
必要條件
若要使用資料匯出功能,您必須具有資料匯出權限。
設定 Webhook 匯出目的地
針對 Webhook 目的地,IoT Central 會近乎即時地匯出資料。 訊息本文中的資料格式與事件中樞和服務匯流排的格式相同。
建立 Webhook 目的地
您可以將資料匯出至公開可用的 HTTP Webhook 端點。 您可以使用 RequestBin 建立測試 Webhook 端點。 達到要求限制時,RequestBin 會節流要求:
瀏覽至 RequestBin。
選取 [建立 RequestBin]。
使用其中一個可用方法登入。
複製 RequestBin 的 URL 當您測試資料匯出時,會使用此 URL。
若要在 [資料匯出] 頁面上的 IoT Central 中建立 Azure 資料總管目的地:
選取 [+ 新增目的地]。
選取 [Webhook] 作為目的地類型。
貼上 Webhook 端點的回撥 URL。 您可以選擇設定 Webhook 授權,並新增自訂標頭。
- 針對 OAuth2.0,僅支援用戶端認證授與流程。 當您儲存目的地時,IoT Central 會與您的 OAuth 提供者通訊以擷取授權權杖。 對於傳送至此目的地的每個訊息,此權杖會附加至
Authorization
標頭。 - 針對 [授權權杖],您可以對於傳送至此目的地的每個訊息指定直接附加至
Authorization
標頭的權杖值。
- 針對 OAuth2.0,僅支援用戶端認證授與流程。 當您儲存目的地時,IoT Central 會與您的 OAuth 提供者通訊以擷取授權權杖。 對於傳送至此目的地的每個訊息,此權杖會附加至
選取 [儲存]。
範例 OAuth 2.0 設定
此範例示範如何設定 Webhook 目的地,以使用受 Microsoft Entra 登入保護的 Azure 函數應用程式:
設定 | 範例 | 備註 |
---|---|---|
目的地類型 | Webhook | |
回撥 URL | https://myapp.azurewebsites.net/api/HttpExample |
函式 URL。 |
授權 | OAuth 2.0 | |
權杖 URL | https://login.microsoftonline.com/your-tenant-id/oauth2/v2.0/token |
用於擷取權杖的 URL。 您可以在函數應用程式中找到此值:驗證 > 您的 Microsoft 身分識別提供者 > 端點 > OAuth 2.0 權杖端點 (v2) |
Client ID | your-client-id |
函數應用程式的用戶端識別碼。 您可以在函數應用程式中找到此值:驗證 > 您的 Microsoft 身分識別提供者 > 應用程式 (用戶端) 識別碼 |
用戶端密碼 | your-client-secret |
函數應用程式的用戶端密碼。 您可以在函數應用程式中找到此值:驗證 > 您的 Microsoft 身分識別提供者 > 憑證和祕密 |
對象 | N/A | 如果您使用函數應用程式,則為空白。 |
範圍 | https://your-client-id/.default |
權杖的範圍。 針對函數應用程式,請使用用戶端識別碼值。** |
權杖要求內容類型 | Auto |
其他 Webhook 目的地可能需要這些設定的不同值。
設定資料匯出
現在您已擁有匯出資料的目的地,請在 IoT Central 應用程式中設定資料匯出:
登入您的 IoT Central 應用程式。
在左側窗格中,選取 [資料匯出]。
提示
如果您沒有在左窗格中看到 [資料匯出],則表示您沒有在應用程式中設定資料匯出的權限。 請連絡系統管理員來設定資料匯出。
選取 [+ 新增匯出]。
輸入新匯出的顯示名稱,並確定資料匯出為 [已啟用]。
選擇要匯出的資料類型。 下表列出支援的資料匯出類型:
資料類型 描述 資料格式 遙測 近乎即時地從裝置匯出遙測訊息。 每則匯出的訊息都包含原始裝置訊息的完整內容,且已標準化。 遙測訊息格式 屬性變更 近乎即時地將變更匯出至裝置和雲端屬性。 針對唯讀裝置屬性,會匯出報告值的變更內容。 針對讀寫屬性,會匯出報告和所需的值。 屬性變更訊息格式 裝置連線 匯出已連線和中斷連線的裝置事件。 裝置連線訊息格式 裝置生命週期 匯出註冊、刪除、佈建、啟用、停用、displayNameChanged 和 deviceTemplateChanged 事件的裝置。 裝置生命週期變更訊息格式 裝置範本生命週期 匯出已發佈的裝置範本變更,包括已建立、已更新和已刪除等變更。 裝置範本生命週期變更訊息格式 稽核記錄 應用程式內實體的使用者起始更新記錄。 若要深入了解,請參閱使用稽核記錄來追蹤 IoT Central 應用程式中的活動 稽核記錄訊息格式 或者,新增篩選條件以減少匯出的資料量。 每個資料匯出類型都有不同類型的篩選條件:
資料類型 可用的篩選條件 遙測 - 依裝置名稱、裝置識別碼、裝置範本,以及裝置是否為模擬進行篩選
- 篩選資料流,使篩選出的遙測皆符合篩選的條件
- 篩選資料流,使篩選出的遙測皆來自符合篩選條件屬性的裝置
- 篩選資料流,使篩選出的遙測皆具有符合篩選條件的「訊息屬性」。 訊息屬性 (也稱為應用程式屬性) 會在每則遙測訊息上以機碼值組包傳送。 若要建立訊息屬性篩選條件,請輸入您要尋找的訊息屬性索引鍵,並指定條件。 系統只會匯出具有符合指定篩選條件屬性的遙測訊息。 深入了解 IoT 中樞的應用程式屬性文件
屬性變更 - 依裝置名稱、裝置識別碼、裝置範本,以及裝置是否為模擬進行篩選
- 篩選資料流,使篩選出的屬性變更皆符合篩選的條件
裝置連線 - 依裝置名稱、裝置識別碼、裝置範本、組織,以及裝置是否為已模擬進行篩選
- 篩選資料流,使篩選出的變更皆來自符合篩選條件屬性的裝置
裝置生命週期 - 依裝置名稱、裝置識別碼、裝置範本,以及裝置是否為已佈建、已啟用或已模擬進行篩選
- 篩選資料流,使篩選出的變更皆來自符合篩選條件屬性的裝置
裝置範本生命週期 - 依裝置範本篩選
稽核記錄 N/A 或者,使用額外的機碼值組中繼資料來擴充匯出的訊息。 下列擴充適用於遙測、屬性變更、裝置連線能力,以及裝置生命週期資料匯出類型:
- 自訂字串:將自訂靜態字串新增至每則訊息。 輸入任何索引鍵,然後輸入任何字串值。
- 屬性,會新增至每則訊息中:
- 裝置中繼資料,例如裝置名稱、裝置範本名稱、已啟用、組織、已佈建和已模擬。
- 目前裝置對每則訊息的報告屬性或雲端屬性值。 如果匯出訊息來自沒有指定屬性的裝置,則匯出訊息不會獲得擴充。
設定匯出目的地:
選取 [+ 目的地] 以新增您已建立的目的地,或選取 [建立新目的地]。
若要在匯出資料之前轉換您的資料,請選取 [+ 轉換]。 若要深入了解,請參閱轉換 IoT Central 應用程式內的資料以進行匯出。
選取 [+ 目的地] 將最多五個目的地新增至單一匯出。
完成匯出設定後,請選取 [儲存]。 幾分鐘之後,您的資料就會出現在目的地中。
監視您的匯出
在 IoT Central 中,[資料匯出] 頁面可讓您檢查匯出的狀態。 您也可以使用 Azure 監視器來查看您要匯出的資料量,以及是否有任何匯出錯誤。 您可以使用 REST API、PowerShell 中的查詢,或 Azure CLI 存取 Azure 入口網站圖表中的匯出和裝置健康情況計量。 目前,您可以在 Azure 監視器中監視下列資料匯出計量:
- 套用篩選條件前,要匯出的訊息傳入數目。
- 通過篩選條件的訊息數目。
- 成功匯出至目的地的訊息數目。
- 找到的錯誤數目。
若要深入了解,請參閱監視應用程式健康情況。
資料格式
下列各節說明匯出資料的格式:
遙測格式
每則匯出的訊息都包含裝置在訊息本文中傳送的完整訊息,其標準化的形式。 訊息採用 JSON 格式,並編碼為 UTF-8。 每則訊息中的資訊包含:
applicationId
:IoT Central 應用程式的識別碼。messageSource
:訊息的來源 -telemetry
。deviceId
:傳送遙測訊息裝置的識別碼。schema
:承載結構的名稱和版本。templateId
:指派給裝置的裝置範本識別碼。enqueuedTime
:IoT Central 收到此訊息的時間。enrichments
:在匯出上設定的任何擴充。module
:傳送此訊息的 IoT Edge 模組。 只有在訊息來自 IoT Edge 模組時,才會顯示此欄位。component
:傳送此訊息的元件。 只有在訊息中傳送的功能已模型化為裝置範本中的元件時,才會顯示此欄位messageProperties
:裝置與訊息一起傳送的其他屬性。 這些屬性有時稱為應用程式屬性。 從 IoT 中樞文件深入了解。
訊息屬性
遙測訊息具有中繼資料的屬性,以及遙測承載。 上一個程式碼片段顯示系統訊息的範例,例如 deviceId
和 enqueuedTime
。 若要深入了解系統訊息屬性,請參閱裝置到雲端 IoT 中樞訊息的系統屬性。
如果您需要將自訂中繼資料新增至遙測訊息,則可以將屬性新增至遙測訊息。 例如,您需要在裝置建立訊息時,新增時間戳記。
下列程式碼片段示範在裝置上建立 iothub-creation-time-utc
屬性時,如何將屬性新增至訊息:
重要
此時間戳記的格式必須是不含時區資訊的 UTC。 例如,2021-04-21T11:30:16Z
為有效,而 2021-04-21T11:30:16-07:00
為無效。
async function sendTelemetry(deviceClient, index) {
console.log('Sending telemetry message %d...', index);
const msg = new Message(
JSON.stringify(
deviceTemperatureSensor.updateSensor().getCurrentTemperatureObject()
)
);
msg.properties.add("iothub-creation-time-utc", new Date().toISOString());
msg.contentType = 'application/json';
msg.contentEncoding = 'utf-8';
await deviceClient.sendEvent(msg);
}
屬性變更格式
每個訊息或記錄都代表裝置和雲端屬性的變更。 匯出訊息中的資訊包含:
applicationId
:IoT Central 應用程式的識別碼。messageSource
:訊息的來源 -properties
。messageType
:cloudPropertyChange
、devicePropertyDesiredChange
或devicePropertyReportedChange
任一項。deviceId
:傳送遙測訊息裝置的識別碼。schema
:承載結構的名稱和版本。enqueuedTime
:IoT Central 偵測到這項變更的時間。templateId
:指派給裝置的裝置範本識別碼。properties
:已變更的屬性陣列,包含已變更屬性和值的名稱。 如果屬性是在元件或 IoT Edge 模組內建立模型,則會包含元件和模組資訊。enrichments
:在匯出上設定的任何擴充。
裝置連線能力變更格式
每則訊息或記錄都代表來自單一裝置的連線事件。 匯出訊息中的資訊包含:
applicationId
:IoT Central 應用程式的識別碼。messageSource
:訊息的來源 -deviceConnectivity
。messageType
:connected
或disconnected
任一項。deviceId
:已變更裝置的識別碼。schema
:承載結構的名稱和版本。templateId
:指派給裝置的裝置範本識別碼。enqueuedTime
:IoT Central 發生這項變更的時間。enrichments
:在匯出上設定的任何擴充。
裝置生命週期變更格式
每則訊息或記錄都代表單一裝置的一項變更。 匯出訊息中的資訊包含:
applicationId
:IoT Central 應用程式的識別碼。messageSource
:訊息的來源 -deviceLifecycle
。messageType
:所發生變更的類型。 下列其中一項:registered
、deleted
、provisioned
、enabled
、disabled
、displayNameChanged
和deviceTemplateChanged
。deviceId
:已變更裝置的識別碼。schema
:承載結構的名稱和版本。templateId
:指派給裝置的裝置範本識別碼。enqueuedTime
:IoT Central 發生這項變更的時間。enrichments
:在匯出上設定的任何擴充。
裝置範本生命週期變更格式
每則訊息或記錄都代表單一已發佈裝置範本的一項變更。 匯出訊息中的資訊包含:
applicationId
:IoT Central 應用程式的識別碼。messageSource
:訊息的來源 -deviceTemplateLifecycle
。messageType
:created
、updated
或deleted
任一項。schema
:承載結構的名稱和版本。templateId
:指派給裝置的裝置範本識別碼。enqueuedTime
:IoT Central 發生這項變更的時間。enrichments
:在匯出上設定的任何擴充。
稽核記錄檔格式
每個稽核記錄訊息都代表 IoT Central 應用程式內可稽核實體的使用者起始變更。 匯出訊息中的資訊包含:
actor
:修改實體的使用者相關資訊。applicationId
:IoT Central 應用程式的識別碼。messageSource
:訊息的來源 -audit
。messageType
:所發生變更的類型。 下列其中一項:updated
、created
或deleted
。updated
:只有在messageType
是updated
時才存在。 提供有關更新的詳細資料。resource
:已修改實體的詳細資料。schema
:承載結構的名稱和版本。deviceId
:已變更裝置的識別碼。enqueuedTime
:IoT Central 發生這項變更的時間。enrichments
:在匯出上設定的任何擴充。
下一步
既然您已了解如何匯出至服務匯流排,建議採取的下一個步驟就是了解如何匯出至事件中樞。