Compartir a través de


Salidas y puntos de conexión en Azure Digital Twins

Importante

Se ha publicado una nueva versión del servicio Azure Digital Twins. A la luz de las funcionalidades expandidas del nuevo servicio, se ha retirado el servicio original de Azure Digital Twins (descrito en este conjunto de documentación).

Para ver la documentación del nuevo servicio, visite la documentación activa de Azure Digital Twins.

Los puntos de conexión de Azure Digital Twins representan un mensaje o agente de eventos en la suscripción a Azure de un usuario. Los eventos y mensajes pueden enviarse a Azure Event Hubs, a Azure Event Grid y a los temas de Azure Service Bus.

Los eventos se enrutan a los puntos de conexión de acuerdo con las preferencias de enrutamiento predefinidas. Los usuarios especifican qué tipos de evento puede recibir cada punto de conexión.

Para obtener más información sobre eventos, enrutamiento y tipos de eventos, consulte Enrutamiento de eventos y mensajes en Azure Digital Twins.

Eventos

Los eventos se envían a través de objetos de IoT (como dispositivos y sensores) para su procesamiento mediante mensajes y agentes de eventos de Azure. Los eventos se definen mediante la siguiente referencia del esquema de eventos de Azure Event Grid.

{
  "id": "00000000-0000-0000-0000-000000000000",
  "subject": "ExtendedPropertyKey",
  "data": {
    "SpacesToNotify": [
      "3a16d146-ca39-49ee-b803-17a18a12ba36"
    ],
    "Id": "00000000-0000-0000-0000-000000000000",
      "Type": "ExtendedPropertyKey",
    "AccessType": "Create"
  },
  "eventType": "TopologyOperation",
  "eventTime": "2018-04-17T17:41:54.9400177Z",
  "dataVersion": "1",
  "metadataVersion": "1",
  "topic": "/subscriptions/YOUR_TOPIC_NAME"
}
Atributo Tipo Descripción
id string Identificador único para el evento
subject string Ruta al asunto del evento definida por el anunciante.
datos object Los datos del evento específicos del proveedor de recursos.
eventType string Uno de los tipos de eventos registrados para este origen de eventos.
eventTime string La hora de generación del evento en función de la hora UTC del proveedor.
dataVersion string Versión del esquema del objeto de datos. El publicador define la versión del esquema.
metadataVersion string Versión del esquema de los metadatos del evento. Event Grid define el esquema de las propiedades de nivel superior. Event Grid proporciona este valor.
topic string Ruta de acceso completa a los recursos del origen del evento. En este campo no se puede escribir. Event Grid proporciona este valor.

Para más información, consulte el esquema de eventos de Azure Event Grid:

Tipos de eventos

Los tipos de eventos clasifican la naturaleza del evento y se establecen en el campo eventType. Los tipos de eventos disponibles se indican en la lista siguiente:

  • TopologyOperation
  • UdfCustom
  • SensorChange
  • SpaceChange
  • DeviceMessage

Los formatos de eventos para cada uno de los tipos de evento se describen con más detalle en las subsecciones siguientes.

TopologyOperation

TopologyOperation se aplica a los cambios del grafo. La propiedad subject especifica el tipo de objeto afectado. Los siguientes tipos de objetos podrían desencadenar este evento:

  • Dispositivo
  • DeviceBlobMetadata
  • DeviceExtendedProperty
  • ExtendedPropertyKey
  • ExtendedType
  • KeyStore
  • Informe
  • RoleDefinition
  • Sensor
  • SensorBlobMetadata
  • SensorExtendedProperty
  • Space
  • SpaceBlobMetadata
  • SpaceExtendedProperty
  • SpaceResource
  • SpaceRoleAssignment
  • Sistema
  • Usuario
  • UserBlobMetadata
  • UserExtendedProperty

Ejemplo

{
  "id": "00000000-0000-0000-0000-000000000000",
  "subject": "ExtendedPropertyKey",
  "data": {
    "SpacesToNotify": [
      "3a16d146-ca39-49ee-b803-17a18a12ba36"
    ],
    "Id": "00000000-0000-0000-0000-000000000000",
      "Type": "ExtendedPropertyKey",
    "AccessType": "Create"
  },
  "eventType": "TopologyOperation",
  "eventTime": "2018-04-17T17:41:54.9400177Z",
  "dataVersion": "1",
  "metadataVersion": "1",
  "topic": "/subscriptions/YOUR_TOPIC_NAME"
}
Valor Reemplazar por
YOUR_TOPIC_NAME El nombre del tema personalizado

UdfCustom

UdfCustom es un evento enviado por una función definida por el usuario (UDF).

Importante

Este evento tiene que enviarse explícitamente desde la misma función.

Ejemplo

{
  "id": "568fd394-380b-46fa-925a-ebb96f658cce",
  "subject": "UdfCustom",
  "data": {
    "TopologyObjectId": "7c799bfc-1bff-4b9e-b15a-669933969d20",
    "ResourceType": "Space",
    "Payload": "\"Room is not available or air quality is poor\"",
    "CorrelationId": "568fd394-380b-46fa-925a-ebb96f658cce"
  },
  "eventType": "UdfCustom",
  "eventTime": "2018-10-02T06:50:15.198Z",
  "dataVersion": "1.0",
  "metadataVersion": "1",
  "topic": "/subscriptions/YOUR_TOPIC_NAME"
}
Valor Reemplazar por
YOUR_TOPIC_NAME El nombre del tema personalizado

SensorChange

SensorChange es una actualización del estado de un sensor según los cambios en los datos de telemetría.

Ejemplo

{
  "id": "60bf5336-2929-45b4-bb4c-b45699dfe95f",
  "subject": "SensorChange",
  "data": {
    "Type": "Classic",
    "DataType": "Motion",
    "Id": "60bf5336-2929-45b4-bb4c-b45699dfe95f",
    "Value": "False",
    "PreviousValue": "True",
    "EventTimestamp": "2018-04-17T17:46:15.4964262Z",
    "MessageType": "sensor",
    "Properties": {
      "ms-client-request-id": "c9e576b7-5eea-4f61-8617-92a57add5179",
      "ms-activity-id": "ct22YwXEGJ5u.605.0"
    }
  },
  "eventType": "SensorChange",
  "eventTime": "2018-04-17T17:46:18.5452993Z",
  "dataVersion": "1",
  "metadataVersion": "1",
  "topic": "/subscriptions/YOUR_TOPIC_NAME"
}
Valor Reemplazar por
YOUR_TOPIC_NAME El nombre del tema personalizado

SpaceChange

SpaceChange es una actualización del estado de un espacio según los cambios en los datos de telemetría.

Ejemplo

{
  "id": "42522e10-b1aa-42ff-a5e7-7181788ffc4b",
  "subject": "SpaceChange",
  "data": {
    "Type": null,
    "DataType": "AvailableAndFresh",
    "Id": "7c799bfc-1bff-4b9e-b15a-669933969d20",
    "Value": "Room is not available or air quality is poor",
    "PreviousValue": null,
    "RawData": null,
    "transactionId": null,
    "EventTimestamp": null,
    "MessageType": null,
    "Properties": null,
    "CorrelationId": "42522e10-b1aa-42ff-a5e7-7181788ffc4b"
  },
  "eventType": "SpaceChange",
  "eventTime": "2018-10-02T06:50:20.128Z",
  "dataVersion": "1.0",
  "metadataVersion": "1",
  "topic": "/subscriptions/YOUR_TOPIC_NAME"
}
Valor Reemplazar por
YOUR_TOPIC_NAME El nombre del tema personalizado

DeviceMessage

Al usar DeviceMessage, puede especificar una conexión de EventHub a la que también se pueden enrutar eventos de telemetría sin procesar desde Azure Digital Twins.

Nota

  • DeviceMessage se puede combinar solo con EventHub. No puede combinar DeviceMessage con cualquiera de los otros tipos de eventos.
  • Puede especificar un único punto de conexión de la combinación de tipo EventHub o DeviceMessage.

Configuración de puntos de conexión

La administración de puntos de conexión se ejerce a través de la API de puntos de conexión.

En los ejemplos siguientes, YOUR_MANAGEMENT_API_URL hace referencia al identificador URI de la API de Digital Twins:

https://YOUR_INSTANCE_NAME.YOUR_LOCATION.azuresmartspaces.net/management/api/v1.0
Nombre Reemplazar por
YOUR_INSTANCE_NAME El nombre de la instancia de Azure Digital Twins
YOUR_LOCATION La región en la que está hospedada la instancia

Los ejemplos siguientes muestran cómo configurar los puntos de conexión compatibles.

Importante

Preste mucha atención al atributo eventTypes. Define qué tipos de eventos se controlan mediante el punto de conexión y, por tanto, determinan su enrutamiento.

Una solicitud HTTP POST autenticada en:

YOUR_MANAGEMENT_API_URL/endpoints
  • Enrute a los tipos de eventos de Service Bus SensorChange, SpaceChange y TopologyOperation:

    {
      "type": "ServiceBus",
      "eventTypes": [
        "SensorChange",
        "SpaceChange",
        "TopologyOperation"
      ],
      "connectionString": "Endpoint=sb://YOUR_NAMESPACE.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=YOUR_PRIMARY_KEY",
      "secondaryConnectionString": "Endpoint=sb://YOUR_NAMESPACE.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=YOUR_SECONDARY_KEY",
      "path": "YOUR_TOPIC_NAME"
    }
    
    Valor Reemplazar por
    YOUR_NAMESPACE El espacio de nombres del punto de conexión
    YOUR_PRIMARY_KEY La cadena de conexión principal utilizada para autenticar
    YOUR_SECONDARY_KEY La cadena de conexión principal utilizada para autenticar
    YOUR_TOPIC_NAME El nombre del tema personalizado
  • Enrute a los tipos de eventos de Event Grid SensorChange, SpaceChange y TopologyOperation:

    {
      "type": "EventGrid",
      "eventTypes": [
        "SensorChange",
        "SpaceChange",
        "TopologyOperation"
      ],
      "connectionString": "YOUR_PRIMARY_KEY",
      "secondaryConnectionString": "YOUR_SECONDARY_KEY",
      "path": "YOUR_TOPIC_NAME.westus-1.eventgrid.azure.net"
    }
    
    Valor Reemplazar por
    YOUR_PRIMARY_KEY La cadena de conexión principal utilizada para autenticar
    YOUR_SECONDARY_KEY La cadena de conexión principal utilizada para autenticar
    YOUR_TOPIC_NAME El nombre del tema personalizado
  • Enrute a los tipos de eventos de Event Hubs SensorChange, SpaceChange y TopologyOperation:

    {
      "type": "EventHub",
      "eventTypes": [
        "SensorChange",
        "SpaceChange",
        "TopologyOperation"
      ],
      "connectionString": "Endpoint=sb://YOUR_NAMESPACE.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=YOUR_PRIMARY_KEY",
      "secondaryConnectionString": "Endpoint=sb://YOUR_NAMESPACE.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=YOUR_SECONDARY_KEY",
      "path": "YOUR_EVENT_HUB_NAME"
    }
    
    Valor Reemplazar por
    YOUR_NAMESPACE El espacio de nombres del punto de conexión
    YOUR_PRIMARY_KEY La cadena de conexión principal utilizada para autenticar
    YOUR_SECONDARY_KEY La cadena de conexión principal utilizada para autenticar
    YOUR_EVENT_HUB_NAME El nombre del centro de eventos
  • Enrute al tipo de evento de Event Hubs DeviceMessage. La inclusión de EntityPath en connectionString es obligatoria:

    {
      "type": "EventHub",
      "eventTypes": [
        "DeviceMessage"
      ],
      "connectionString": "Endpoint=sb://YOUR_NAMESPACE.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=YOUR_PRIMARY_KEY;EntityPath=YOUR_EVENT_HUB_NAME",
      "secondaryConnectionString": "Endpoint=sb://YOUR_NAMESPACE.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=YOUR_SECONDARY_KEY;EntityPath=YOUR_EVENT_HUB_NAME",
      "path": "YOUR_EVENT_HUB_NAME"
    }
    
    Valor Reemplazar por
    YOUR_NAMESPACE El espacio de nombres del punto de conexión
    YOUR_PRIMARY_KEY La cadena de conexión principal utilizada para autenticar
    YOUR_SECONDARY_KEY La cadena de conexión principal utilizada para autenticar
    YOUR_EVENT_HUB_NAME El nombre del centro de eventos

Nota

Tras la creación de un nuevo punto de conexión, pueden transcurrir de 5 a 10 minutos para que comience a recibir eventos en el punto de conexión.

Claves de conexión principal y secundaria

Cuando una clave de conexión principal deja de estar autorizada, el sistema intenta usar automáticamente la clave de conexión secundaria. De esta forma, se cuenta con una copia de seguridad y esto permite autenticarse correctamente y actualizar la clave principal a través de la API de puntos de conexión.

Si las claves de conexión principal y secundaria no están autorizadas, el sistema especifica un tiempo de espera de interrupción exponencial de hasta 30 minutos. Se cancelan los eventos cada vez que se desencadene el tiempo de espera de interrupción.

Cada vez que el sistema está en estado de espera de interrupción, actualizar las claves de las conexiones mediante Endpoints API puede tardar hasta 30 minutos en surtir efecto.

Puntos de conexión inaccesibles

Cuando un punto de conexión se vuelve inaccesible, el sistema especifica un tiempo de espera de interrupción exponencial de hasta 30 minutos. Se cancelan los eventos cada vez que se desencadene el tiempo de espera de interrupción.

Pasos siguientes