Condividi tramite


Creare route e filtri di eventi in Gemelli digitali di Azure

Questo articolo illustra il processo di creazione delle route degli eventi tramite il portale di Azure, i comandi az dt route dell'interfaccia della riga di comando di Azure, le API del piano dati delle route degli eventi e il kit di sviluppo software .NET (C#).

Il routing di notifiche degli eventi da Gemelli digitali di Azure ai servizi downstream o alle risorse di calcolo connesse è un processo in due passaggi: creare endpoint, quindi creare route eventi per inviare dati a tali endpoint. Questo articolo illustra il secondo passaggio, configurando le route per controllare quali eventi vengono recapitati agli endpoint di Gemelli digitali di Azure. Per procedere con questo articolo, dovresti aver già creato gli endpoint.

Prerequisiti

  • È necessario un account Azure, che può essere configurato gratuitamente

  • Hai bisogno di un'istanza di Azure Digital Twins nella tua sottoscrizione Azure. Se non si dispone già di un'istanza, è possibile crearne una seguendo la procedura descritta in Configurare un'istanza e l'autenticazione. Disporre a portata di mano dei seguenti valori di configurazione da utilizzare più avanti in questo articolo:

    • Nome dell'istanza
    • Gruppo di risorse

    Questi dettagli sono disponibili nel portale di Azure dopo aver configurato l'istanza.

    Screenshot della pagina Panoramica per un'istanza di Gemelli digitali di Azure nel portale di Azure. Il nome e il gruppo di risorse sono evidenziati.

  • Creare un endpoint usando le istruzioni riportate in Creare endpoint. In questo articolo viene creata una route per inviare dati a tale endpoint.

Seguire quindi le istruzioni seguenti se si intende usare l'interfaccia della riga di comando di Azure seguendo questa guida.

Preparare l'ambiente per l'interfaccia della riga di comando di Azure

Crea una route eventi

Dopo aver creato un endpoint, è necessario definire una route eventi per inviare effettivamente dati all'endpoint. Queste route consentono agli sviluppatori di collegare il flusso di eventi, attraverso il sistema e fino ai servizi downstream. Una singola route può consentire la selezione di più notifiche e tipi di evento. Per altre informazioni sulle route di eventi, vedere Route di eventi di Gemelli digitali di Azure.

Nota

Assicurarsi di aver creato almeno un endpoint come descritto in Prerequisiti prima di passare alla creazione di una route.

Se hai appena distribuito i tuoi endpoint, verifica che la distribuzione sia stata completata prima di tentare di usarli per un nuovo percorso di eventi. Se la distribuzione della route non riesce perché gli endpoint non sono pronti, attendere alcuni minuti e riprovare.

Se stai scriptando questo flusso, potresti voler considerare la distribuzione includendo 2-3 minuti di tempo di attesa affinché il servizio endpoint completi la distribuzione prima di passare alla configurazione del percorso.

Una definizione di route può contenere questi elementi:

  • Nome della route da usare
  • Nome dell'endpoint da usare
  • Filtro che definisce gli eventi inviati all'endpoint
    • Per disabilitare la route in modo che non vengano inviati eventi, usare un valore di filtro false
    • Per abilitare una route senza filtri specifici, usare un valore di filtro true
    • Per informazioni dettagliate su qualsiasi altro tipo di filtro, vedere la sezione Filtrare gli eventi

Se non è presente alcun nome di route, non viene instradato alcun messaggio all'esterno di Gemelli digitali di Azure. Se è presente un nome di route e il filtro è true, tutti i messaggi vengono indirizzati all'endpoint. Se è presente un nome di route e viene aggiunto un filtro diverso, i messaggi vengono filtrati in base al filtro.

È possibile creare route di eventi con il portale di Azure, le API del piano dati Event Routes o i comandi della CLI di az dt route. La parte restante di questa sezione illustra il processo di creazione.

Per creare un percorso di eventi, passare alla pagina dei dettagli dell'istanza di Azure Digital Twins nel portale di Azure. È possibile trovare l'istanza immettendone il nome nella barra di ricerca del portale.

Nel menu dell'istanza selezionare Route eventi. Successivamente, nella paginaRoute eventi che segue selezionare + Crea una route eventi.

Nella pagina Crea una route eventi visualizzata scegliere almeno:

  • Nome della route nel campo Nome
  • L’endpoint da usare per creare la route

Affinché il percorso sia abilitato, è anche necessario aggiungere un filtro per il percorso degli eventi di almeno true. Se si lascia il valore predefinito di false, la route verrà creata ma in essa non verrà inviato alcun evento. A tale scopo, attivare o disattivare Editor avanzato per l'abilitazione e scrivere true nella casella Filtro.

Screenshot della creazione di una route eventi per l'istanza nel portale di Azure.

Al termine, selezionare il pulsante Salva per creare la route eventi.

Filtrare gli eventi

Come descritto in precedenza, le rotte hanno un campo filtro. Se il valore del filtro nella route è false, nessun evento viene inviato all'endpoint.

Dopo aver abilitato un filtro minimo di true, gli endpoint riceveranno diversi tipi di eventi da Gemelli digitali di Azure:

  • Telemetria generata da gemelli digitali con l'API del servizio Gemelli digitali di Azure
  • Notifiche di modifica delle proprietà del dispositivo gemello, attivate in caso di modifiche alle proprietà per qualsiasi gemello nell'istanza di Gemelli digitali di Azure
  • Eventi del ciclo di vita, generati quando vengono creati o eliminati gemelli o relazioni

È possibile limitare i tipi di eventi inviati definendo un filtro più specifico.

Nota

I filtri fanno distinzione tra maiuscole e minuscole e devono corrispondere al caso del payload. Per i filtri di telemetria, la combinazione di maiuscole e minuscole deve corrispondere alla combinazione di maiuscole e minuscole nei dati di telemetria inviati dal dispositivo.

Per aggiungere un filtro eventi durante la creazione di una route eventi, usare la sezione Aggiungi un filtro di route eventi della pagina Crea route eventi.

È possibile selezionare alcune semplici opzioni di filtro di base comuni oppure usare opzioni di filtro avanzate per scrivere filtri personalizzati.

Usare i filtri di base

Per usare i filtri di base, espandere l'opzione Tipi di evento e selezionare le caselle di controllo corrispondenti agli eventi da inviare all'endpoint.

Screenshot della creazione di un percorso di eventi con un filtro di base nel portale di Azure, che evidenzia le caselle di controllo degli eventi.

In questo modo, la casella di testo del filtro viene popolata automaticamente con il testo del filtro selezionato:

Screenshot della creazione di una route eventi con un filtro di base nel portale di Azure, evidenziando il testo del filtro popolato automaticamente dopo aver selezionato gli eventi.

Usare i filtri avanzati

È anche possibile usare l'opzione filtro avanzato per scrivere filtri personalizzati.

Per creare una route eventi con opzioni di filtro avanzate, attivare l'interruttore dell'editor avanzato per abilitarla. Sarà quindi possibile scrivere filtri eventi personalizzati nella casella Filtro:

Screenshot della creazione di una route eventi con un filtro avanzato nel portale di Azure.

Filtri di route supportati

Di seguito sono elencati i filtri di route supportati.

Nome filtro Descrizione Filtrare lo schema del testo Valori supportati
True / false Consente di creare una route senza filtri o disabilitare una route in modo che non vengano inviati eventi <true/false> true = la route è abilitata senza filtri
false = la route è disabilitata
TIPO Il tipo di evento che scorre nell'istanza di Gemelli digitali type = '<event-type>' Ecco i possibili valori del tipo di evento:
Microsoft.DigitalTwins.Twin.Create
Microsoft.DigitalTwins.Twin.Delete
Microsoft.DigitalTwins.Twin.Update
Microsoft.DigitalTwins.Relationship.Create
Microsoft.DigitalTwins.Relationship.Update
Microsoft.DigitalTwins.Relationship.Delete
microsoft.iot.telemetry
Origine Nome dell'istanza di Gemelli digitali di Azure source = '<host-name>' Ecco i possibili valori del nome host:

Per le notifiche: <your-Digital-Twins-instance>.api.<your-region>.digitaltwins.azure.net

Per i dati di telemetria: <your-Digital-Twins-instance>.api.<your-region>.digitaltwins.azure.net/<twin-ID>
Oggetto Descrizione dell'evento nel contesto dell'origine dell'evento subject = '<subject>' Ecco i possibili valori oggetto:

Per le notifiche: l'oggetto è <twin-ID>
o un formato URI per soggetti, identificati in modo univoco da più parti o ID:
<twin-ID>/relationships/<relationship-ID>

Per i dati di telemetria: l'oggetto è il percorso del componente (se i dati di telemetria vengono generati da un componente gemello), ad esempio comp1.comp2. Se i dati di telemetria non vengono generati da un componente, il relativo campo oggetto è vuoto.
Schema dei dati ID modello DTDL dataschema = '<model-dtmi-ID>' Per i dati di telemetria: 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

Per le notifiche (creazione/eliminazione): è possibile accedere allo schema dei dati nel corpo della notifica all'indirizzo $body.$metadata.$model.

Per le notifiche (aggiornamento): è possibile accedere allo schema dei dati nel corpo della notifica all'indirizzo $body.modelId
Tipo di contenuto Tipo di contenuto del valore di dati datacontenttype = '<content-type>' Il tipo di contenuto è application/json
Versione della specifica Versione dello schema di eventi in uso specversion = '<version>' La versione deve essere 1.0. Questo valore indica lo schema CloudEvents versione 1.0
Corpo della notifica Fare riferimento a qualsiasi proprietà nel campo data di una notifica $body.<property> Per esempi di notifiche, vedere Notifiche degli eventi. È possibile fare riferimento a qualsiasi proprietà nel campo data tramite $body

Nota

Digital Twins di Azure attualmente non supporta il filtraggio degli eventi in base ai campi all'interno di un array. Questa limitazione include i filtri sulle proprietà all'interno di una sezione patch di una notifica di modifica del gemello digitale.

I tipi di dati seguenti sono supportati come valori restituiti dai riferimenti ai dati precedenti:

Tipo di dati Esempio
string STARTS_WITH($body.$metadata.$model, 'dtmi:example:com:floor')
CONTAINS(subject, '<twin-ID>')
Numero intero $body.errorCode > 200
Doppio $body.temperature <= 5.5
Bool $body.poweredOn = true
Nullo $body.prop != null

Per la definizione dei filtri di route sono supportati gli operatori seguenti:

Famiglia Operatori Esempio
Logico E, O ( ) (type != 'microsoft.iot.telemetry' OR datacontenttype = 'application/json') OR (specversion != '1.0')
Confronto <, <=, >, >=, =, != $body.temperature <= 5.5

Per la definizione dei filtri di route sono supportate le funzioni seguenti:

Funzione Descrizione Esempio
INIZIA_CON(x,y) Restituisce true se il valore x inizia con la stringa y. STARTS_WITH($body.$metadata.$model, 'dtmi:example:com:floor')
ENDS_WITH(x,y) Restituisce true se il valore x termina con la stringa y. ENDS_WITH($body.$metadata.$model, 'floor;1')
CONTIENE(x,y) Restituisce true se il valore x contiene la stringa y. CONTAINS(subject, '<twin-ID>')

Quando si implementa o si aggiorna un filtro, la modifica potrebbe richiedere alcuni minuti per essere riflessa nella pipeline di dati.

Monitorare i percorsi degli eventi

Le metriche di routing, ad esempio conteggio, latenza e frequenza degli errori, possono essere visualizzate nel portale di Azure.

Per informazioni sulla visualizzazione e la gestione delle metriche con Monitoraggio di Azure, vedere Analizzare le metriche con Esplora metriche di Monitoraggio di Azure. Per un elenco completo delle metriche di routing disponibili per Gemelli digitali di Azure, vedere Metriche di routing.

Passaggi successivi

Leggere i differenti tipi di messaggi di evento che è possibile ricevere: