使用事件格線回應 Azure 地圖服務事件
「Azure 地圖服務」能與「Azure 事件格線」整合,讓使用者能夠將事件通知傳送給其他服務並觸發下游程序。 本文的目的是要協助您設定商務應用程式來接聽 Azure 地圖服務事件。 這可讓使用者以可靠、可調整且安全的方式回應重要事件。 例如,使用者可以建置應用程式,在每次裝置進入地理柵欄時更新資料庫、建立票證,以及傳遞電子郵件通知。
Azure 事件方格是一個完全受控的事件路由服務,使用發佈-訂閱模型。 事件方格內建 Azure 服務的支援,例如 Azure Functions 和 Azure Logic Apps。 可以使用 Webhook 將事件警示傳遞至非 Azure 服務。 如需事件方格所支援的事件處理常式完整清單,請參閱 Azure 事件方格簡介。
Azure 地圖服務事件類型
事件方格會使用事件訂閱路由傳送事件訊息至訂閱者。 Azure 地圖服務帳戶會發出下列事件類型:
事件類型 | 描述 |
---|---|
Microsoft.Maps.GeofenceEntered | 在接收到的座標已從指定的地理柵欄外移至柵欄內時引發 |
Microsoft.Maps.GeofenceExited | 在接收到的座標已從指定的地理柵欄內移至柵欄外時引發 |
Microsoft.Maps.GeofenceResult | 會在每次地理柵欄查詢傳回結果時引發,無論狀態為何 |
結構描述
下列範例顯示 GeofenceResult 的結構描述:
{
"id":"451675de-a67d-4929-876c-5c2bf0b2c000",
"topic":"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Maps/accounts/{accountName}",
"subject":"/spatial/geofence/udid/{udid}/id/{eventId}",
"data":{
"geometries":[
{
"deviceId":"device_1",
"udId":"1a13b444-4acf-32ab-ce4e-9ca4af20b169",
"geometryId":"1",
"distance":999.0,
"nearestLat":47.609833,
"nearestLon":-122.148274
}
],
"expiredGeofenceGeometryId":[
],
"invalidPeriodGeofenceGeometryId":[
]
},
"eventType":"Microsoft.Maps.GeofenceResult",
"eventTime":"2018-11-08T00:52:08.0954283Z",
"metadataVersion":"1",
"dataVersion":"1.0"
}
取用事件的秘訣
處理 Azure 地圖服務地理柵欄事件的應用程式應該遵循幾個建議做法:
- 將多個訂用帳戶設定為將事件路由到相同的事件處理常式。 請務必不要假設事件是來自特定來源。 請一律檢查訊息主題,以確保訊息來自您預期的來源。
- 請使用回應標頭中的
X-Correlation-id
欄位來了解物件的相關資訊是否為最新狀態。 訊息可能會不按順序抵達或在延遲之後抵達。 - 在模式參數設定為
EnterAndExit
的情況下,在地理柵欄 API 中呼叫 Get 和 POST 時,系統會針對其狀態自上一個地理柵欄 API 呼叫以來已變更的地理柵欄,為其中每個幾何產生 Enter 或 Exit 事件。
下一步
如需 Azure 地圖服務和結構描述支援的所有事件相關詳細資訊,請參閱 Azure 地圖服務即事件方格來源。
若要深入了解如何使用地理柵欄來控制工地的作業,請參閱: