Condividi tramite


Creare route e filtri di eventi in Gemelli digitali di Azure

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

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, è necessario avere endpoint già creati.

Prerequisiti

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

  • È necessaria un'istanza di Gemelli digitali di Azure nella sottoscrizione di 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 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 si creerà una route per inviare dati a tale endpoint.

Quindi seguire le istruzioni riportate di seguito 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

Creare 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. Altre informazioni sulle route eventi in Endpoint e route eventi.

Nota

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

Se gli endpoint sono stati distribuiti di recente, verificare che siano stati terminata la distribuzione prima di tentare di usarli per una nuova route eventi. Se la distribuzione della route non riesce perché gli endpoint non sono pronti, attendere alcuni minuti e riprovare.

Se si esegue lo script di questo flusso, è possibile tenere conto di questo aspetto creando in 2-3 minuti di tempo di attesa per il completamento della distribuzione del servizio endpoint prima di passare alla configurazione della route.

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 di seguito

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 differente, i messaggi verranno filtrati in base al filtro.

È possibile creare route eventi con il portale di Azure, le API del piano dati EventRoutes o i comandi dell'interfaccia della riga di comando di az dt route. La parte restante di questa sezione illustra il processo di creazione.

Per creare una route eventi, passare alla pagina dei dettagli per l'istanza di Gemelli digitali di Azure 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é la route sia abilitata, è anche necessario aggiungere un filtro di route eventi di almeno true. (se si lascia il valore predefinito di false verrà creata la route, ma non verrà inviato alcun evento). A tale scopo, attivare o disattivare l'opzione per l'Editor avanzato per abilitarla 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 route hanno un campo di filtro. Se il valore del filtro nella route è false, nessun evento verrà inviato all'endpoint.

Dopo aver abilitato un filtro minimo di true, gli endpoint riceveranno differenti 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, ciò significa che 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 una route eventi con un filtro di base nel portale di Azure, evidenziando le caselle di controllo degli eventi.

In questo modo, la casella di testo del filtro verrà 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 relativo a Editor avanzato per abilitare l'editor. 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 Schema di testo filtro 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
Type 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 evento precedente 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 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
Content type 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

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.

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

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

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

Famiglia Operatori Esempio
Logico AND, OR, ( ) (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
STARTS_WITH(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')
CONTAINS(x,y) Restituisce true se il valore x contiene la stringa y. CONTAINS(subject, '<twin-ID>')

Quando si implementa o si aggiorna un filtro, l'applicazione della modifica alla pipeline di dati può richiedere alcuni minuti.

Monitorare le route 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 Introduzione a Esplora metriche. Per un elenco completo delle metriche di routing disponibili per Gemelli digitali di Azure, vedere Metriche di routing di Gemelli digitali di Azure.

Passaggi successivi

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