Notifiche degli eventi
Questo articolo illustra le notifiche degli eventi generate da Gemelli digitali di Azure, la relativa struttura e i dettagli sui vari tipi che possono essere generati.
Eventi differenti in Gemelli digitali di Azure generano notifiche, che consentono al back-end della soluzione di essere consapevoli quando si verificano azioni diverse. Queste notifiche vengono quindi instradate a posizioni diverse all'interno e all'esterno di Gemelli digitali di Azure che possono usare queste informazioni per intervenire.
Esistono differenti tipi di notifiche che possono essere generati e i messaggi di notifica possono avere un aspetto differente a seconda del tipo di evento generato. Questo articolo fornisce informazioni dettagliate sui differenti tipi di messaggi e su ciò che potrebbero sembrare.
Questo grafico mostra i diversi tipi di notifica:
Tipo di notifica | Nome di origine routing | Generato da... |
---|---|---|
Notifica di modifica del gemello digitale | Notifica di modifica del gemello digitale | qualsiasi modifica della proprietà del gemello digitale |
Notifica del ciclo di vita del gemello digitale | Notifica del ciclo di vita del gemello digitale | qualsiasi operazione di creazione o eliminazione di gemelli digitali |
Notifica di modifica della relazione del gemello digitale | Notifica di modifica della relazione del gemello digitale | qualsiasi modifica della relazione con gemelli digitali |
Messaggi di telemetria del gemello digitale | Messaggi di telemetria | qualsiasi messaggio di telemetria |
Struttura delle notifiche
La struttura di una notifica degli eventi da Gemelli digitali di Azure dipende dalla destinazione della notifica.
Le notifiche inviate a Griglia di eventi sono conformi a uno dei formati seguenti (a seconda delle impostazioni di Griglia di eventi):
- Schema di eventi di Griglia di eventi di Azure
- Associazione del protocollo HTTP per CloudEvents.
Le notifiche inviate a Hub eventi e al Bus di servizio sono conformi all'associazione del protocollo AMQP per CloudEvents.
Notifiche di modifica del gemello digitale
Le notifiche di modifica del gemello digitale vengono attivate quando viene aggiornato un gemello digitale, ad esempio:
- Quando i valori delle proprietà o i metadati cambiano.
- Quando i metadati del gemello digitale o del componente cambiano. Un esempio di questo scenario è la modifica del modello di un gemello digitale.
Proprietà
Ecco i campi nel corpo di una notifica di modifica del gemello digitale.
Nome | Valore |
---|---|
id |
Identificatore della notifica, ad esempio un UUID o un contatore gestito dal servizio. source + id è univoco per ogni evento distinto |
source |
Nome dell'hub IoT o dell'istanza di Gemelli digitali di Azure, ad esempio myhub.azure-devices.net o mydigitaltwins.westus2.azuredigitaltwins.net |
data |
Documento JSON Patch che descrive l'aggiornamento eseguito al gemello. Per informazioni dettagliate, vedere Dettagli del corpo di seguito. |
specversion |
1.0 Il messaggio è conforme a questa versione della specifica CloudEvents. |
type |
Microsoft.DigitalTwins.Twin.Update |
datacontenttype |
application/json |
subject |
ID del gemello digitale |
time |
Timestamp per il momento in cui si è verificata l'operazione sul gemello digitale |
traceparent |
Contesto di traccia W3C per l'evento |
Dettagli del corpo
All'interno del messaggio, il campo data
contiene un documento JSON Patch contenente l'aggiornamento al gemello digitale.
Di seguito sono riportati esempi di questo tipo di messaggio per ogni possibile schema di notifica.
- Griglia di eventi con EventGridEvents
- Griglia di eventi con CloudEvents
- Hub eventi e Bus di servizio
{
"id": "39d4abb9-e3ee-4ed5-ad17-2243a9784946",
"subject": "example-twin1",
"data": {
"data": {
"modelId": "dtmi:examplecom:interfaceName;1",
"patch": [
{
"value": "new name",
"path": "/room",
"op": "replace"
}
]
},
"contenttype": "application/json",
"traceparent": "00-2aa957558db348f387ef704b37631a1d-c28d665340fe5045-01"
},
"eventType": "Microsoft.DigitalTwins.Twin.Update",
"dataVersion": "1.0",
"metadataVersion": "1",
"eventTime": "2021-12-09T20:28:52.9795363Z",
"topic": "/subscriptions/<sub>/resourceGroups/<rg>/providers/Microsoft.EventGrid/topics/<topic-name>"
}
Nota
Gemelli digitali di Azure attualmente non supporta il filtraggio degli eventi in base ai campi all'interno di un array. Sono inclusi i filtri sulle proprietà all'interno di una sezione patch
di una notifica di modifica del gemello digitale.
Notifiche per il ciclo di vita del gemello digitale
Indipendentemente dal fatto che i gemelli digitali rappresentino o meno i dispositivi dell'hub IoT in Gemelli digitali di Azure, genereranno tutte le notifiche. Lo fanno a causa delle notifiche del ciclo di vita, che riguardano il gemello digitale stesso.
Le notifiche del ciclo di vita vengono attivate quando:
- Viene creato un gemello digitale
- Un gemello digitale viene eliminato
Proprietà
Ecco i campi nel corpo di una notifica del ciclo di vita.
Nome | Valore |
---|---|
id |
Identificatore della notifica, ad esempio un UUID o un contatore gestito dal servizio. source + id è univoco per ogni evento distinto. |
source |
Nome dell'hub IoT o dell'istanza di Gemelli digitali di Azure, ad esempio myhub.azure-devices.net o mydigitaltwins.westus2.azuredigitaltwins.net |
data |
I dati del gemello che riscontrano l'evento del ciclo di vita. Per informazioni dettagliate, vedere Dettagli del corpo di seguito. |
specversion |
1.0 Il messaggio è conforme a questa versione della specifica CloudEvents. |
type |
Microsoft.DigitalTwins.Twin.Create Microsoft.DigitalTwins.Twin.Delete |
datacontenttype |
application/json |
subject |
ID del gemello digitale |
time |
Timestamp per il momento in cui si è verificata l'operazione sul gemello |
traceparent |
Contesto di traccia W3C per l'evento |
Dettagli del corpo
Di seguito sono riportati esempi di questo tipo di messaggio per ogni possibile schema di notifica.
- Griglia di eventi con EventGridEvents
- Griglia di eventi con CloudEvents
- Hub eventi e Bus di servizio
{
"id": "6ccdb1cd-0dc3-450f-8730-ceccda8439be",
"subject": "example-twin1",
"data": {
"data": {
"$dtId": "example-twin1",
"$etag": "W/\"ecf81d6c-8c1a-4a95-afd8-13bd4cea436f\"",
"room": "room name",
"$metadata": {
"$model": "dtmi:examplecom:interfaceName;1",
"room": {
"lastUpdateTime": "2021-12-09T20:28:52.6651216Z"
}
}
},
"contenttype": "application/json",
"traceparent": "00-2aa957558db348f387ef704b37631a1d-51f716e7397ec64b-01"
},
"eventType": "Microsoft.DigitalTwins.Twin.Create",
"dataVersion": "1.0",
"metadataVersion": "1",
"eventTime": "2021-12-09T20:28:52.6745538Z",
"topic": "/subscriptions/<sub>/resourceGroups/<rg>/providers/Microsoft.EventGrid/topics/<topic-name>"
}
Notifiche di modifica delle relazioni del gemello digitale
Le notifiche di modifica delle relazioni vengono attivate quando viene creata, aggiornata o eliminata una relazione di un gemello digitale.
Proprietà
Ecco i campi nel corpo di una notifica di modifica delle relazioni.
Nome | Valore |
---|---|
id |
Identificatore della notifica, ad esempio un UUID o un contatore gestito dal servizio. source + id è univoco per ogni evento distinto |
source |
Nome dell'istanza di Gemelli digitali di Azure, ad esempio mydigitaltwins.westus2.azuredigitaltwins.net |
data |
Payload della relazione modificata. Per informazioni dettagliate, vedere Dettagli del corpo di seguito. |
specversion |
1.0 Il messaggio è conforme a questa versione della specifica CloudEvents. |
type |
Microsoft.DigitalTwins.Relationship.Create Microsoft.DigitalTwins.Relationship.Update Microsoft.DigitalTwins.Relationship.Delete |
datacontenttype |
application/json |
subject |
ID della relazione, ad esempio <twin-ID>/relationships/<relationshipID> . |
time |
Timestamp per il momento in cui si è verificata l'operazione sulla relazione |
traceparent |
Contesto di traccia W3C per l'evento |
Dettagli del corpo
All'interno del messaggio, il campo data
contiene il payload di una relazione, in formato JSON. Usa lo stesso formato di una richiesta GET
per una relazione tramite l'API DigitalTwins.
Di seguito sono riportati esempi di questo tipo di messaggio per ogni possibile schema di notifica.
- Griglia di eventi con EventGridEvents
- Griglia di eventi con CloudEvents
- Hub eventi e Bus di servizio
{
"id": "4d850574-0a28-4667-a59e-3b382ff0e74e",
"subject": "example-twin1/relationships/RuntimeEventsScenario_edge",
"data": {
"data": {
"modelId": "dtmi:examplecom:interfaceName;1",
"patch": [
{
"value": "new value",
"path": "/prop1",
"op": "replace"
}
]
},
"contenttype": "application/json",
"traceparent": "00-2aa957558db348f387ef704b37631a1d-c1fcf951f540ec44-01"
},
"eventType": "Microsoft.DigitalTwins.Relationship.Update",
"dataVersion": "1.0",
"metadataVersion": "1",
"eventTime": "2021-12-09T20:28:53.2016395Z",
"topic": "/subscriptions/<sub>/resourceGroups/<rg>/providers/Microsoft.EventGrid/topics/<topic-name>"
}
Messaggi di telemetria del gemello digitale
I gemelli digitali possono usare l'API SendTelemetry per generare messaggi di telemetria e inviarli agli endpoint in uscita.
Proprietà
Ecco i campi nel corpo di un messaggio di telemetria.
Nome | Valore |
---|---|
id |
Identificatore della notifica, fornita dal cliente quando si chiama l'API di telemetria. |
source |
Nome completo del gemello da cui è stato inviato l'evento di telemetria. Utilizzare il seguente formato: <your-Digital-Twin-instance>.api.<your-region>.digitaltwins.azure.net/<twin-ID> . |
specversion |
1.0 Il messaggio è conforme a questa versione della specifica CloudEvents. |
type |
microsoft.iot.telemetry |
data |
Messaggio di telemetria inviato dal gemello. Il payload non deve essere allineato ad alcuno schema definito nell'istanza di Gemelli digitali di Azure. |
dataschema |
Lo schema dei dati è l'ID modello del gemello o del componente che genera i dati di telemetria. Ad esempio: dtmi:example:com:floor4;2 . |
datacontenttype |
application/json |
traceparent |
Contesto di traccia W3C per l'evento. |
Dettagli del corpo
Il corpo contiene la misurazione dei dati di telemetria insieme ad alcune informazioni contestuali sul gemello. Di seguito sono riportati esempi di questo tipo di messaggio per ogni possibile schema di notifica.
- Griglia di eventi con EventGridEvents
- Griglia di eventi con CloudEvents
- Hub eventi e Bus di servizio
{
"id": "6f6635d8-f1b8-43ec-80fb-bb9453fc611c",
"subject": "example-twin1",
"data": {
"data": {
"prop": "hello from telemetry"
},
"dataschema": "dtmi:examplecom:interfaceName;1",
"contenttype": "application/json-patch+json; charset=utf-8",
"traceparent": "00-2aa957558db348f387ef704b37631a1d-e894098b46243743-01"
},
"eventType": "microsoft.iot.telemetry",
"dataVersion": "1.0",
"metadataVersion": "1",
"eventTime": "0001-01-01T00:00:00Z",
"topic": "/subscriptions/<sub>/resourceGroups/<rg>/providers/Microsoft.EventGrid/topics/<topic-name>"
}
Passaggi successivi
Informazioni sul recapito di eventi a destinazioni diverse, usando endpoint e route: