使用事件格線回應 Azure 地圖服務事件

「Azure 地圖服務」能與「Azure 事件格線」整合,讓使用者能夠將事件通知傳送給其他服務並觸發下游程序。 本文的目的是要協助您設定商務應用程式來接聽 Azure 地圖服務事件。 這可讓使用者以可靠、可調整且安全的方式回應重要事件。 例如,使用者可以建置應用程式,在每次裝置進入地理柵欄時更新資料庫、建立票證,以及傳遞電子郵件通知。

Azure 事件方格是一個完全受控的事件路由服務,使用發佈-訂閱模型。 事件方格內建 Azure 服務的支援,例如 Azure FunctionsAzure Logic Apps。 可以使用 Webhook 將事件警示傳遞至非 Azure 服務。 如需事件方格所支援的事件處理常式完整清單,請參閱 Azure 事件方格簡介

Azure Event Grid functional model

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 地圖服務即事件方格來源

若要深入了解如何使用地理柵欄來控制工地的作業,請參閱: