Expressões de marcação e de roteamentoRouting and tag expressions

Descrição geralOverview

As expressões de marca permitem que você direcione conjuntos específicos de dispositivos ou mais especificamente registros, ao enviar uma notificação por Push por meio de hubs de notificação.Tag expressions enable you to target specific sets of devices, or more specifically registrations, when sending a push notification through Notification Hubs.

Direcionando registros específicosTargeting specific registrations

A única maneira de direcionar registros de notificação específicos é associar marcas a eles e, em seguida, direcionar essas marcas.The only way to target specific notification registrations is to associate tags with them, then target those tags. Conforme discutido no Gerenciamento de registro, para receber notificações por push, um aplicativo precisa registrar um identificador de dispositivo em um hub de notificação.As discussed in Registration Management, in order to receive push notifications an app has to register a device handle on a notification hub. Depois que um registro é criado em um hub de notificação, o back-end do aplicativo pode enviar notificações por push para ele.Once a registration is created on a notification hub, the application backend can send push notifications to it. O back-end do aplicativo pode escolher os registros para direcionar com uma notificação específica das seguintes maneiras:The application backend can choose the registrations to target with a specific notification in the following ways:

  1. Difusão: todos os registros no Hub de notificação recebem a notificação.Broadcast: all registrations in the notification hub receive the notification.
  2. Marca: todos os registros que contêm a marca especificada recebem a notificação.Tag: all registrations that contain the specified tag receive the notification.
  3. Expressão de marca: todos os registros cujo conjunto de marcas corresponde à expressão especificada recebe a notificação.Tag expression: all registrations whose set of tags match the specified expression receive the notification.

TagsTags

Uma marca pode ser qualquer cadeia de caracteres, até 120 caracteres, contendo alfanuméricos e os seguintes caracteres não alfanuméricos: ' _ ', ' @ ', ' # ', '. ', ': ', '-'.A tag can be any string, up to 120 characters, containing alphanumeric and the following non-alphanumeric characters: ‘_’, ‘@’, ‘#’, ‘.’, ‘:’, ‘-’. O exemplo a seguir mostra um aplicativo do qual você pode receber notificações do sistema sobre grupos de música específicos.The following example shows an application from which you can receive toast notifications about specific music groups. Nesse cenário, uma maneira simples de rotear notificações é rotular registros com marcas que representam as diferentes faixas, como na figura a seguir: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:

Nesta imagem, a mensagem marcada como Beatles atinge apenas o Tablet que se registrou com a marca Beatles.In this picture, the message tagged Beatles reaches only the tablet that registered with the tag Beatles.

Para obter mais informações sobre como criar registros para marcas, consulte Gerenciamento de registro.For more information about creating registrations for tags, see Registration Management.

Você pode enviar notificações para marcas usando os métodos Send Notifications da Microsoft.Azure.NotificationHubs.NotificationHubClient classe no SDK do hubs de notificações do 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. Você também pode usar o Node. js ou as APIs REST de notificações por push.You can also use Node.js, or the Push Notifications REST APIs. Aqui está um exemplo usando o 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");

As marcas não precisam ser previamente provisionadas e podem se referir a vários conceitos específicos do aplicativo.Tags do not have to be pre-provisioned and can refer to multiple app-specific concepts. Por exemplo, os usuários deste aplicativo de exemplo podem comentar sobre faixas e querem receber notificações, não apenas para comentários sobre suas bandas favoritas, mas também para todos os comentários de seus amigos, independentemente da banda na qual estão comentando.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. A imagem a seguir mostra um exemplo desse cenário:The following picture shows an example of this scenario:

Nesta figura, Alice está interessada em atualizações para o Beatles e Bob está interessado em atualizações para o Wailers.In this picture, Alice is interested in updates for the Beatles, and Bob is interested in updates for the Wailers. Bob também está interessado nos comentários de Charlie e Charlie está interessado no Wailers.Bob is also interested in Charlie’s comments, and Charlie is in interested in the Wailers. Quando uma notificação é enviada para o comentário de Charlie sobre o Beatles, Alice e Bob o recebem.When a notification is sent for Charlie’s comment on the Beatles, both Alice and Bob receive it.

Embora você possa codificar várias preocupações nas marcas (por exemplo, "band_Beatles" ou "follows_Charlie"), as marcas são cadeias de caracteres simples e não propriedades com valores.While you can encode multiple concerns in tags (for example, “band_Beatles” or “follows_Charlie”), tags are simple strings and not properties with values. Um registro é correspondido somente na presença ou ausência de uma marca específica.A registration is matched only on the presence or absence of a specific tag.

Para obter um tutorial passo a passo completo sobre como usar marcas para enviar a grupos de interesse, consulte últimas notícias.For a full step-by-step tutorial on how to use tags for sending to interest groups, see Breaking News.

Nota

Os hubs de notificação do Azure dão suporte a um máximo de 60 marcas por registro.Azure Notification Hubs supports a maximum of 60 tags per registration.

Usando marcas para usuários de destinoUsing tags to target users

Outra maneira de usar marcas é identificar todos os dispositivos de um usuário específico.Another way to use tags is to identify all the devices of a particular user. Os registros podem ser marcados com uma marca que contém uma ID de usuário, como na figura a seguir:Registrations can be tagged with a tag that contains a user ID, as in the following picture:

Nesta imagem, a mensagem marcada UID: Alice atinge todos os registros marcados como "UID: Alice"; Portanto, todos os dispositivos de Alice.In this picture, the message tagged uid: Alice reaches all registrations tagged "uid:Alice"; hence, all of Alice’s devices.

Expressões de marcaTag expressions

Há casos em que uma notificação tem de direcionar um conjunto de registros que é identificado não por uma única marca, mas por uma expressão booliana em marcas.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.

Considere um aplicativo esportivo que envia um lembrete para todos em Boston sobre um jogo entre o Red Sox e o Cardinals.Consider a sports application that sends a reminder to everyone in Boston about a game between the Red Sox and Cardinals. Se o aplicativo cliente registra marcas sobre interesse em equipes e local, a notificação deve ser direcionada a todos em Boston que estejam interessadas no Red Sox ou no 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. Essa condição pode ser expressa com a seguinte expressão booliana:This condition can be expressed with the following Boolean expression:

(follows_RedSox || follows_Cardinals) && location_Boston

As expressões de marca podem conter todos os operadores boolianos, como e (& &) ou (| |), e não (!).Tag expressions can contain all Boolean operators, such as AND (&&), OR (||), and NOT (!). Eles também podem conter parênteses.They can also contain parentheses. As expressões de marca são limitadas a 20 marcas se contiverem somente o ORs; caso contrário, eles serão limitados a 6 marcas.Tag expressions are limited to 20 tags if they contain only ORs; otherwise they are limited to 6 tags.

Aqui está um exemplo para enviar notificações com expressões de marca usando o 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 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);