Espressioni di routing e tag

Panoramica

Le espressioni tag consentono di avere come destinazione set specifici di dispositivi, o più specificamente registrazioni, quando si invia una notifica push tramite hub di notifica.

Destinazione su registrazioni specifiche

L'unico modo per avere come destinazione registrazioni di notifiche specifiche consiste nell'associare tag ad esse, quindi utilizzare come destinazione tali tag. Come descritto in Gestione registrazioni, per ricevere notifiche push, un'app deve registrare un handle di dispositivo in un hub di notifica. Dopo che l'app crea una registrazione in un hub di notifica, il back-end dell'applicazione può inviare notifiche push. Il back-end dell'applicazione può scegliere le registrazioni da utilizzare come destinazione con una notifica specifica nei modi seguenti:

  1. Trasmissione: tutte le registrazioni nell'hub di notifica ricevono la notifica.
  2. Tag: tutte le registrazioni contenenti il tag specificato ricevono la notifica.
  3. Espressione tag: tutte le registrazioni il cui set di tag corrisponde all'espressione specificata ricevono la notifica.

Tag

Un tag può essere qualsiasi stringa, fino a 120 caratteri, contenente caratteri alfanumerici e i caratteri non alfanumerici seguenti: '', '_@', '#', '.', ':', '', '-'. Nell'esempio seguente viene illustrata un'applicazione da cui è possibile ricevere notifiche di tipo avviso popup su gruppi musicali specifici. In questo scenario, un modo semplice per instradare le notifiche consiste nell'etichettare le registrazioni con tag che rappresentano le diverse bande, come illustrato nella figura seguente:

Panoramica dei tag

Nella figura, il messaggio contrassegnato con Beatles raggiunge solo il tablet registrato con il tag Beatles.

Per ulteriori informazioni sulla creazione di registrazioni per i tag, vedere Gestione delle registrazioni.

È possibile inviare notifiche ai tag usando i metodi di notifiche di invio della classe Microsoft.Azure.NotificationHubs.NotificationHubClient nell’SDK hub di notifica di Microsoft Azure . È inoltre possibile utilizzare Node.js o le API REST delle notifiche push. Di seguito è riportato un esempio con l’SDK.

Microsoft.Azure.NotificationHubs.NotificationOutcome outcome = null;

// Windows 8.1 / Windows Phone 8.1
var toast = @"<toast><visual><binding template=""ToastText01""><text id=""1"">" +
"You requested a Beatles notification</text></binding></visual></toast>";
outcome = await Notifications.Instance.Hub.SendWindowsNativeNotificationAsync(toast, "Beatles");

// Windows 10
toast = @"<toast><visual><binding template=""ToastGeneric""><text id=""1"">" +
"You requested a Wailers notification</text></binding></visual></toast>";
outcome = await Notifications.Instance.Hub.SendWindowsNativeNotificationAsync(toast, "Wailers");

I tag non devono essere con provisioning preliminare e possono fare riferimento a più concetti specifici dell'app. Ad esempio, gli utenti di questa applicazione di esempio possono commentare i gruppi e desiderano ricevere avvisi popup, non solo per i commenti sui propri gruppi preferiti, ma anche per tutti i commenti degli amici, indipendentemente dal gruppo che stanno commentando. La figura seguente evidenzia un esempio di questo scenario:

Tag amici

In questo esempio Alice è interessata agli aggiornamenti per i Beatles e Bob è interessato agli aggiornamenti per i Wailers. Bob è interessato anche ai commenti di Charlie, e Charlie è interessato ai Wailers. Quando viene inviata una notifica per il commento di Charlie sui Beatles, Hub di notifica lo invia sia ad Alice che a Bob.

Sebbene sia possibile codificare più problemi nei tag (ad esempio, band_Beatles o follows_Charlie), i tag sono stringhe semplici e non proprietà con valori. Una registrazione corrisponde solo alla presenza o all'assenza di un tag specifico.

Per un'esercitazione completa dettagliata su come usare i tag per l'invio a gruppi di interesse, vedere Ultime notizie.

Nota

Hub di notifica di Azure supporta un massimo di 60 tag per registrazione.

Uso dei tag per considerare come obiettivo gli utenti

Un altro modo per usare i tag consiste nell'identificare tutti i dispositivi associati a un utente specifico. È possibile contrassegnare una registrazione con un tag contenente l'ID utente, come illustrato nella figura seguente:

Contrassegna gli utenti

Nella figura il messaggio contrassegnato user_Alice raggiunge tutti i dispositivi contrassegnati con user_Alice.

Espressioni tag

Esistono casi in cui le notifiche devono essere destinate a un set di registrazioni identificate non da un singolo tag, ma da un'espressione booleana che usa tag.

Si consideri un'applicazione sportiva che invia un promemoria su una partita tra Red Sox e Cardinals a tutte le persone di Boston. Se l'app client registra i tag relativi all'interesse per squadre e località, la notifica deve essere destinata a tutte le persone di Boston interessate ai Red Sox o ai Cardinals. Questa condizione può essere espressa con l'espressione booleana seguente:

(follows_RedSox || follows_Cardinals) && location_Boston

Espressioni tag

Le espressioni tag supportano operatori booleani comuni, ad AND esempio (&&), OR (||) e NOT (!). Possono anche contenere parentesi. Le espressioni di tag che usano solo OR operatori possono fare riferimento a 20 tag; espressioni con AND operatori, ma nessun OR operatore può fare riferimento a 10 tag. In caso contrario, le espressioni tag sono limitate a 6 tag.

Ecco un esempio per l'invio di notifiche con espressioni di tag tramite l'SDK:

Microsoft.Azure.NotificationHubs.NotificationOutcome outcome = null;

String userTag = "(location_Boston && !follows_Cardinals)";

// Windows 8.1 / Windows Phone 8.1
var toast = @"<toast><visual><binding template=""ToastText01""><text id=""1"">" +
"You want info on the Red Sox</text></binding></visual></toast>";
outcome = await Notifications.Instance.Hub.SendWindowsNativeNotificationAsync(toast, userTag);

// Windows 10
toast = @"<toast><visual><binding template=""ToastGeneric""><text id=""1"">" +
"You want info on the Red Sox</text></binding></visual></toast>";
outcome = await Notifications.Instance.Hub.SendWindowsNativeNotificationAsync(toast, userTag);