ルーティングとタグ式Routing and tag expressions


タグ式を使用することで、通知ハブを通じてプッシュ通知を送信する際に、デバイスの特定のセット、より具体的には登録を対象にできるようになります。Tag expressions enable you to target specific sets of devices, or more specifically registrations, when sending a push notification through Notification Hubs.

特定の登録を対象にするTargeting specific registrations

特定の登録を対象にする唯一の方法は、登録にタグを関連付け、そのタグを対象とすることです。The only way to target specific notification registrations is to associate tags with them, then target those tags. 登録管理」で説明したように、プッシュ通知を受け取るには、アプリケーションが通知ハブにデバイス ハンドルを登録する必要があります。As discussed in Registration Management, in order to receive push notifications an app has to register a device handle on a notification hub. 通知ハブに登録が作成されたら、アプリケーションのバックエンドが登録にプッシュ通知を送信できます。Once a registration is created on a notification hub, the application backend can send push notifications to it. アプリケーションのバックエンドは、次のように、特定の通知を対象とする登録を選択できます。The application backend can choose the registrations to target with a specific notification in the following ways:

  1. ブロードキャスト:通知ハブのすべての登録が通知を受信します。Broadcast: all registrations in the notification hub receive the notification.
  2. タグ:指定したタグを含むすべての登録が通知を受信します。Tag: all registrations that contain the specified tag receive the notification.
  3. タグ式:タグのセットが指定した式と一致するすべての登録が、通知を受信します。Tag expression: all registrations whose set of tags match the specified expression receive the notification.


タグは、最大 120 文字の任意の文字列です。英数字と一部の英数字以外の文字 (""、"@"、"#"、"."、":"、"-") を使用できます。A tag can be any string, up to 120 characters, containing alphanumeric and the following non-alphanumeric characters: ‘’, ‘@’, ‘#’, ‘.’, ‘:’, ‘-’. ‘_’, ‘@’, ‘#’, ‘.’, ‘:’, ‘-’.次の例は、特定の音楽グループに関するトースト通知を受信するアプリケーションを示します。The following example shows an application from which you can receive toast notifications about specific music groups. このシナリオでは、次の図に示すように、通知をルーティングするための単純な方法として、さまざまなバンドを表すタグを使用して登録にラベルを付けます。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:

この図で、 [Beatles] というタグが付いたメッセージは、タグ [Beatles] で登録されたタブレットにのみ到達します。In this picture, the message tagged Beatles reaches only the tablet that registered with the tag Beatles.

タグの登録の作成の詳細については、「登録管理」を参照してください。For more information about creating registrations for tags, see Registration Management.

Microsoft Azure Notification Hubs SDK の Microsoft.Azure.NotificationHubs.NotificationHubClient クラスの send notifications メソッドを使用して、タグに通知を送信することができます。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. Node.js、または Push Notifications REST APIs を使用することもできます。You can also use Node.js, or the Push Notifications REST APIs. 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");

タグは複数のアプリケーション固有概念を参照できるため、事前にプロビジョニングする必要はありません。Tags do not have to be pre-provisioned and can refer to multiple app-specific concepts. たとえば、このサンプル アプリケーションのユーザーがバンドについてコメントでき、自分のお気に入りのバンドのコメントだけでなく、自分がコメントしていないバンドに関する友人のすべてのコメントについてもトーストを受信したいとします。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. 以下の図はこのシナリオの例を示したものです。The following picture shows an example of this scenario:

この図で、Alice は Beatles の近況に関心があり、Bob は Wailers の近況に関心があります。In this picture, Alice is interested in updates for the Beatles, and Bob is interested in updates for the Wailers. Bob は Charlie のコメントにも関心があり、Charlie は Wailers に関心があります。Bob is also interested in Charlie’s comments, and Charlie is in interested in the Wailers. Beatles に関する Charlie のコメントに関する通知が送信されると、Alice と Bob の両方に配信されます。When a notification is sent for Charlie’s comment on the Beatles, both Alice and Bob receive it.

タグ (たとえば、"band_Beatles" や "follows_Charlie" など) 内では複数の関心をエンコードできますが、タグは単純な文字列であり、値を持つプロパティではありません。While you can encode multiple concerns in tags (for example, “band_Beatles” or “follows_Charlie”), tags are simple strings and not properties with values. 登録は、特定のタグの有無のみを照合します。A registration is matched only on the presence or absence of a specific tag.

関心のグループに送信するためのタグの使用方法の詳しい手順を示したチュートリアルは、「 ニュース速報」を参照してください。For a full step-by-step tutorial on how to use tags for sending to interest groups, see Breaking News.


Azure Notification Hubs では、登録ごとに最大 60 個のタグがサポートされます。Azure Notification Hubs supports a maximum of 60 tags per registration.

ターゲット ユーザーにタグを使用するUsing tags to target users

タグを使用するもう 1 つの方法は、特定のユーザーのすべてのデバイスを識別する方法です。Another way to use tags is to identify all the devices of a particular user. 次の図に示すように、ユーザー ID を含むタグを使用して登録にタグ付けすることができます。Registrations can be tagged with a tag that contains a user ID, as in the following picture:

この図では、uid:Alice のタグが付けられたメッセージは、"uid:Alice" というタグが付けられたすべての登録、つまり Alice のすべてのデバイスに到達します。In this picture, the message tagged uid: Alice reaches all registrations tagged "uid:Alice"; hence, all of Alice’s devices.

タグ式Tag expressions

1 つのタグではなく、タグのブール式で識別される登録のセットが通知の対象になる場合もあります。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.

レッド ソックスとカーディナルズの試合に関してボストンのすべてのユーザーに通知を送信するスポーツ アプリケーションを考えてみてください。Consider a sports application that sends a reminder to everyone in Boston about a game between the Red Sox and 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. この条件は、次のブール式で表すことができます。This condition can be expressed with the following Boolean expression:

(follows_RedSox || follows_Cardinals) && location_Boston

タグ式には AND (&&)、OR (||)、NOT (!) などのすべてのブール演算子を含むことができます。Tag expressions can contain all Boolean operators, such as AND (&&), OR (||), and NOT (!). かっこを使用することもできます。They can also contain parentheses. タグ式に OR のみが含まれる場合、タグの数は 20 個に制限されます。それ以外の場合は、6 個のタグに制限されます。Tag expressions are limited to 20 tags if they contain only ORs; otherwise they are limited to 6 tags.

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);