Event Grid を使用して Azure Maps イベントに反応するReact to Azure Maps events by using Event Grid

他のサービスにイベント通知を送信して、ダウンストリームのプロセスをトリガーできるように、Azure Maps は Azure Event Grid と統合します。Azure Maps integrates with Azure Event Grid so that you can send event notifications to other services and trigger downstream processes. この記事では、信頼性が高く、スケーラブルで、安全な方法により、重大なイベントに対応できるよう、Azure Maps のイベントをリッスンするようにビジネス アプリケーションを構成する方法を説明します。The purpose of this article is to help you configure your business applications to listen for Azure Maps events so that you can react to critical events in a reliable, scalable, and secure manner. たとえば、デバイスがジオフェンスに入るたびに、データベースの更新、チケットの作成、メール通知の配信などの複数のアクションを実行するアプリケーションを構築します。For example, build an application that performs multiple actions like updating a database, creating a ticket, and delivering an email notification every time a device enters a geofence.

Azure Event Grid は、パブリッシュ - サブスクライブ モデルを使用する、フル マネージドのイベント ルーティング サービスです。Azure Event Grid is a fully managed event routing service that uses a publish-subscribe model. Event Grid は、Azure FunctionsAzure Logic Apps などの Azure s サービスの組み込みサポートを備えており、webhook を使って Azure 以外のサービスにイベント アラートを配信できます。Event Grid has built-in support for Azure services like Azure Functions and Azure Logic Apps, and can deliver event alerts to non-Azure services using webhooks. Event Grid がサポートするイベント ハンドラーの完全な一覧については、「Azure Event Grid の概要」をご覧ください。For a complete list of the event handlers that Event Grid supports, see An introduction to Azure Event Grid.

Azure Event Grid の機能モデル

Azure Maps のイベントの種類Azure Maps events types

Event Grid は、イベント サブスクリプションを使って、イベント メッセージをサブスクライバーにルーティングします。Event grid uses event subscriptions to route event messages to subscribers. Azure Maps アカウントから出力されるイベントの種類は次のとおりです。An Azure Maps account emits the following event types:

イベントの種類Event type 説明Description
Microsoft.Maps.GeofenceEnteredMicrosoft.Maps.GeofenceEntered 受信した座標が指定されたジオフェンスの外部から内部に移動したときに発生しますRaised when coordinates received have moved from outside of a given geofence to within
Microsoft.Maps.GeofenceExitedMicrosoft.Maps.GeofenceExited 受信した座標が指定されたジオフェンスの内部から外部に移動したときに発生しますRaised when coordinates received have moved from within a given geofence to outside
Microsoft.Maps.GeofenceResultMicrosoft.Maps.GeofenceResult 状態に関係なく、ジオフェンシング クエリから結果が返されるたびに発生しますRaised every time a geofencing query returns a result, regardless of the state

イベント スキーマEvent schema

次の例では、GeofenceResult のスキーマを示しますThe following example show schema for 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 
         }, 
         {   
            "deviceId":"device_1", 
            "udId":"1a13b444-4acf-32ab-ce4e-9ca4af20b169", 
            "geometryId":"2", 
            "distance":999.0, 
            "nearestLat":47.621954, 
            "nearestLon":-122.131841 
         } 
      ], 
      "expiredGeofenceGeometryId":[   
      ], 
      "invalidPeriodGeofenceGeometryId":[   
      ] 
   }, 
   "eventType":"Microsoft.Maps.GeofenceResult", 
   "eventTime":"2018-11-08T00:52:08.0954283Z", 
   "metadataVersion":"1", 
   "dataVersion":"1.0" 
}

イベントの使用に関するヒントTips for consuming events

Azure Maps ジオフェンス イベントを処理するアプリケーションでは、いくつかの推奨される手法に従う必要があります。Applications that handle Azure Maps geofence events should follow a few recommended practices:

  • 同じイベント ハンドラーにイベントをルーティングするように、複数のサブスクリプションを構成できます。Multiple subscriptions can be configured to route events to the same event handler. イベントが特定のソースからのものであると想定しないことが重要です。It's important not to assume that events are from a particular source. 常にメッセージ トピックをチェックし、予期されるソースからものであることを確認します。Always check the message topic to ensure that it comes from the source that you expect.
  • メッセージは、順不同で、または遅延の後に、到着する場合があります。Messages can arrive out of order or after a delay. 応答ヘッダーの X-Correlation-id フィールドを使用して、オブジェクトに関する情報が最新かどうかを確認します。Use the X-Correlation-id field in the response header to understand if your information about objects is up-to-date.
  • モード パラメーターを EnterAndExit に設定して Get および POST Geofence API を呼び出すと、前回の Geofence API 呼び出しの後で状態が変化したジオフェンスのジオメトリごとに、Enter または Exit イベントが生成されます。When Get and POST Geofence API is called with mode parameter set to EnterAndExit, an Enter or Exit event is generated for each geometry in the geofence for which the status has changed from the previous Geofence API call.

次の手順Next steps

ジオフェンシングを使用して建設現場での操作を制御する方法について詳しくは、以下をご覧ください。To learn more about how to use geofencing to control operations at a construction site, see: