Реагирование на события Azure Maps c помощью Сетки событий

Azure Maps интегрируются с сеткой событий Azure, чтобы пользователи могли отправлять уведомления о событиях другим службам и запускать последующие процессы. Цель этой статьи — помочь настроить бизнес-приложения для прослушивания событий Azure Maps. Благодаря этому пользователи могут реагировать на критические события и действовать надежным, масштабируемым и безопасным способом. Например, пользователи могут создать приложение для обновления базы данных, создать запрос и отправить уведомление по электронной почте каждый раз, когда устройство входит в геозону.

Сетка событий Azure — это полностью управляемая служба маршрутизации событий, использующая модель публикации и подписки. Сетка событий имеет встроенную поддержку служб Azure, таких как Функции Azure и Azure Logic Apps. Она может передавать оповещения о событиях в службы, не относящиеся к Azure, с помощью веб-перехватчиков. Полный список обработчиков событий, которые поддерживает служба "Сетка событий", см. в статье An introduction to Azure Event Grid (Общие сведения о службе "Сетка событий Azure").

Azure Event Grid functional model

Типы событий Azure Maps

Сетка событий использует подписки на события для маршрутизации сообщений о событиях подписчикам. Учетная запись Azure Maps выводит следующие типы событий.

Тип события Description
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 Maps, должны соответствовать нескольким рекомендациям.

  • Настройте несколько подписок для маршрутизации событий в один обработчик событий. Не следует предполагать, что события поступают из определенного источника. Всегда проверяйте тему сообщения, чтобы убедиться, что сообщение пришло из ожидаемого источника.
  • Используйте поле X-Correlation-id в заголовке ответа, чтобы понять, является ли информация об объектах актуальной. Сообщения могут приступать не по порядку или после некоторой задержки.
  • При вызове API геозоны Get и POST с параметром режима, которому присвоено значение EnterAndExit, событие Enter или Exit генерируется для каждого геометрического объекта в геозоне, для которого изменилось состояние из предыдущего вызова API геозоны.

Следующие шаги

Дополнительные сведения обо всех событиях, поддерживаемых azure Карты и схемой, см. в Карты Azure в качестве источника сетки событий.

Дополнительные сведения о том, как использовать геозоны для операций управления на сайте конструкции, см. в статье