Espressioni di routing e tagRouting and tag expressions

PanoramicaOverview

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.Tag expressions enable you to target specific sets of devices, or more specifically registrations, when sending a push notification through Notification Hubs.

Destinazione su registrazioni specificheTargeting specific registrations

L'unico modo per avere come destinazione registrazioni di notifiche specifiche consiste nell'associare tag ad esse, quindi utilizzare come destinazione tali tag.The only way to target specific notification registrations is to associate tags with them, then target those tags. Come descritto in Gestione delle registrazioni, per ricevere le notifiche push un'app deve registrare un handle di dispositivo in un hub di notifica push.As discussed in Registration Management, in order to receive push notifications an app has to register a device handle on a notification hub. Dopo aver creato una registrazione su un hub di notifica, il back-end dell'applicazione può inviare ad esso notifiche push.Once a registration is created on a notification hub, the application backend can send push notifications to it. Il back-end dell'applicazione può scegliere le registrazioni da utilizzare come destinazione con una notifica specifica nei modi seguenti:The application backend can choose the registrations to target with a specific notification in the following ways:

  1. Trasmissione: tutte le registrazioni nell'hub di notifica ricevono la notifica.Broadcast: all registrations in the notification hub receive the notification.
  2. Tag: tutte le registrazioni contenenti il tag specificato ricevono la notifica.Tag: all registrations that contain the specified tag receive the notification.
  3. Espressione tag: tutte le registrazioni il cui set di tag corrisponde all'espressione specificata ricevono la notifica.Tag expression: all registrations whose set of tags match the specified expression receive the notification.

TagTags

Un tag può essere qualsiasi stringa, fino a 120 caratteri, che contiene caratteri alfanumerici e i caratteri non alfanumerici seguenti: ‘’, ‘@’, ‘#’, ‘.’, ‘:’, ‘-’.A tag can be any string, up to 120 characters, containing alphanumeric and the following non-alphanumeric characters: ‘’, ‘@’, ‘#’, ‘.’, ‘:’, ‘-’. Nell'esempio seguente viene illustrata un'applicazione da cui è possibile ricevere notifiche di tipo avviso popup su gruppi musicali specifici.The following example shows an application from which you can receive toast notifications about specific music groups. In questo scenario, un modo semplice per instradare le notifiche è etichettare le registrazioni con tag che rappresentano i diversi gruppi musicali, come illustrato nell'immagine seguente.In this scenario, a simple way to route notifications is to label registrations with tags that represent the different bands, as in the following picture.

In questa immagine il messaggio con tag Beatles raggiunge solo il tablet registrato con il tag Beatles.In this picture, the message tagged Beatles reaches only the tablet that registered with the tag Beatles.

Per ulteriori informazioni sulla creazione di registrazioni per i tag, vedere Gestione delle registrazioni.For more information about creating registrations for tags, see Registration Management.

È 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 .You can send notifications to tags using the send notifications methods of the Microsoft.Azure.NotificationHubs.NotificationHubClient class in the Microsoft Azure Notification Hubs SDK. È inoltre possibile utilizzare Node.js o le API REST delle notifiche push.You can also use Node.js, or the Push Notifications REST APIs. Di seguito è riportato un esempio con l’SDK.Here's an example using the 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");

Per tag non deve necessariamente essere eseguito il pre-provisioning e questi possono fare riferimento a più concetti specifici dell'app.Tags do not have to be pre-provisioned and can refer to multiple app-specific concepts. 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.For example, users of this example application can comment on bands and want to receive toasts, not only for the comments on their favorite bands, but also for all comments from their friends, regardless of the band on which they are commenting. Nell'immagine seguente viene illustrato un esempio di questo scenario:The following picture shows an example of this scenario:

In questa immagine, Alice è interessata a ricevere aggiornamenti sui Beatles e Bob è interessato a ricevere aggiornamenti sui Wailers.In this picture, Alice is interested in updates for the Beatles, and Bob is interested in updates for the Wailers. Bob è anche interessato ai commenti di Charlie e Charlie è interessato ai Wailers.Bob is also interested in Charlie’s comments, and Charlie is in interested in the Wailers. Quando viene inviata una notifica per un commento di Charlie sui Beatles, sia Alice che Bob la ricevono.When a notification is sent for Charlie’s comment on the Beatles, both Alice and Bob receive it.

Sebbene sia possibile codificare più aspetti nei tag (ad esempio, "gruppo_Beatles" o "segue_Charlie"), i tag sono semplici stringhe e non proprietà con valori.While you can encode multiple concerns in tags (for example, “band_Beatles” or “follows_Charlie”), tags are simple strings and not properties with values. Esiste una corrispondenza per la registrazione solo in presenza o assenza di un tag specifico.A registration is matched only on the presence or absence of a specific tag.

Per un'esercitazione completa dettagliata su come usare i tag per l'invio a gruppi di interesse, vedere Ultime notizie.For a full step-by-step tutorial on how to use tags for sending to interest groups, see Breaking News.

Uso dei tag per considerare come obiettivo gli utentiUsing tags to target users

Un altro modo per utilizzare i tag consiste nell'identificare tutti i dispositivi di un particolare utente.Another way to use tags is to identify all the devices of a particular user. Le registrazioni possono essere contrassegnate con un tag che contiene un id utente, come illustrato nell'immagine seguente:Registrations can be tagged with a tag that contains a user id, as in the following picture:

In questa immagine, il messaggio con tag uid:Alice raggiunge tutte le registrazioni con tag uid:Alice; di conseguenza, tutti i dispositivi di Alice.In this picture, the message tagged uid:Alice reaches all registrations tagged uid:Alice; hence, all of Alice’s devices.

Espressioni tagTag expressions

Vi sono casi in cui una notifica ha come destinazione un set di registrazioni identificato non da un singolo tag, ma da un'espressione booleana su tag.There are cases in which a notification has to target a set of registrations that is identified not by a single tag, but by a Boolean expression on tags.

Si consideri un'applicazione sportiva che invia un promemoria su una partita tra Red Sox e Cardinals a tutte le persone di Boston.Consider a sports application that sends a reminder to everyone in Boston about a game between the Red Sox and Cardinals. 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.If the client app registers tags about interest in teams and location, then the notification should be targeted to everyone in Boston who is interested in either the Red Sox or the Cardinals. Questa condizione può essere espressa con l'espressione booleana seguente:This condition can be expressed with the following Boolean expression:

(follows_RedSox || follows_Cardinals) && location_Boston

Le espressioni tag possono contenere tutti gli operatori booleani, quali AND (&&), OR (||) e NOT (!).Tag expressions can contain all Boolean operators, such as AND (&&), OR (||), and NOT (!). Possono inoltre contenere parentesi.They can also contain parentheses. Le espressioni tag sono limitate a 20 tag se contengono solo operatori OR; in caso contrario sono limitate a 6 tag.Tag expressions are limited to 20 tags if they contain only ORs; otherwise they are limited to 6 tags.

Di seguito è riportato un esempio per l'invio di notifiche con espressioni tag usando l’SDK.Here's an example for sending notifications with tag expressions using the 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 Socks</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 Socks</text></binding></visual></toast>";
outcome = await Notifications.Instance.Hub.SendWindowsNativeNotificationAsync(toast, userTag);