Liaison de sortie Notification Hubs pour Azure FunctionsNotification Hubs output binding for Azure Functions

Cet article explique comment envoyer des notifications Push à l’aide de liaisons Azure Notification Hubs dans Azure Functions.This article explains how to send push notifications by using Azure Notification Hubs bindings in Azure Functions. Azure Functions prend en charge les liaisons de sortie pour Notification Hubs.Azure Functions supports output bindings for Notification Hubs.

Azure Notification Hubs doit être configuré pour l’infrastructure Platform Notification System (PNS) que vous souhaitez utiliser.Azure Notification Hubs must be configured for the Platform Notifications Service (PNS) you want to use. Pour savoir comment obtenir des notifications Push dans votre application cliente provenant de Notification Hubs, consultez Prise en main de Notification Hubs et sélectionnez votre plateforme de client cible dans la liste déroulante en haut de la page.To learn how to get push notifications in your client app from Notification Hubs, see Getting started with Notification Hubs and select your target client platform from the drop-down list near the top of the page.

Il s’agit des informations de référence pour les développeurs Azure Functions.This is reference information for Azure Functions developers. Si vous ne connaissez pas bien Azure Functions, commencez par consulter les ressources suivantes :If you're new to Azure Functions, start with the following resources:

Important

Google a décidé de déprécier Google Cloud Messaging (GCM) en faveur de Firebase Cloud Messaging (FCM).Google has deprecated Google Cloud Messaging (GCM) in favor of Firebase Cloud Messaging (FCM). Cette liaison de sortie ne prend pas en charge FCM.This output binding doesn't support FCM. Pour envoyer des notifications à l’aide de FCM, utilisez l’API Firebase directement dans votre fonction ou utilisez des notifications de modèle.To send notifications using FCM, use the Firebase API directly in your function or use template notifications.

Packages - Functions 1.xPackages - Functions 1.x

Les liaisons Notification Hubs sont fournies dans le package NuGet Microsoft.Azure.WebJobs.Extensions.NotificationHubs, version 1.x.The Notification Hubs bindings are provided in the Microsoft.Azure.WebJobs.Extensions.NotificationHubs NuGet package, version 1.x. Le code source du package se trouve dans le référentiel GitHub azure-webjobs-sdk-extensions.Source code for the package is in the azure-webjobs-sdk-extensions GitHub repository.

Le tableau suivant indique comment ajouter la prise en charge de cette liaison dans chaque environnement de développement.The following table tells how to add support for this binding in each development environment.

Environnement de développementDevelopment environment Pour ajouter la prise en charge dansTo add support in
Functions 1.xFunctions 1.x
Développement local - Bibliothèque de classes C#Local development - C# class library Installer le package.Install the package
Développement local - Script C#, JavaScript, F#Local development - C# script, JavaScript, F# AutomatiqueAutomatic
Développement sur le portailPortal development AutomatiqueAutomatic

Packages - Functions 2.x et ultérieurPackages - Functions 2.x and higher

Cette liaison n’est pas disponible dans Functions 2.x et ultérieur.This binding is not available in Functions 2.x and higher.

Exemple - modèleExample - template

Les notifications que vous envoyez peuvent être des notifications natives ou des notifications de modèle.The notifications you send can be native notifications or template notifications. Les notifications natives ciblent une plateforme cliente spécifique telle que configurée dans la propriété platform de la liaison de sortie.Native notifications target a specific client platform as configured in the platform property of the output binding. Un modèle de notification peut servir à plusieurs plateformes cibles.A template notification can be used to target multiple platforms.

Consultez l’exemple propre à un langage particulier :See the language-specific example:

Exemple de modèle de script C# - paramètre de sortieC# script template example - out parameter

Cet exemple envoie une notification pour une inscription de modèle contenant un emplacement réservé message dans le modèle.This example sends a notification for a template registration that contains a message placeholder in the template.

using System;
using System.Threading.Tasks;
using System.Collections.Generic;

public static void Run(string myQueueItem,  out IDictionary<string, string> notification, TraceWriter log)
{
    log.Info($"C# Queue trigger function processed: {myQueueItem}");
    notification = GetTemplateProperties(myQueueItem);
}

private static IDictionary<string, string> GetTemplateProperties(string message)
{
    Dictionary<string, string> templateProperties = new Dictionary<string, string>();
    templateProperties["message"] = message;
    return templateProperties;
}

Exemple de modèle de script C# - asynchroneC# script template example - asynchronous

Si vous utilisez du code asynchrone, les paramètres de sortie ne sont pas autorisés.If you are using asynchronous code, out parameters are not allowed. Dans ce cas, utilisez IAsyncCollector pour renvoyer votre notification modèle.In this case use IAsyncCollector to return your template notification. Le code suivant est un exemple de code asynchrone ci-dessus.The following code is an asynchronous example of the code above.

using System;
using System.Threading.Tasks;
using System.Collections.Generic;

public static async Task Run(string myQueueItem, IAsyncCollector<IDictionary<string,string>> notification, TraceWriter log)
{
    log.Info($"C# Queue trigger function processed: {myQueueItem}");

    log.Info($"Sending Template Notification to Notification Hub");
    await notification.AddAsync(GetTemplateProperties(myQueueItem));    
}

private static IDictionary<string, string> GetTemplateProperties(string message)
{
    Dictionary<string, string> templateProperties = new Dictionary<string, string>();
    templateProperties["user"] = "A new user wants to be added : " + message;
    return templateProperties;
}

Exemple de modèle de script C# - JSONC# script template example - JSON

Cet exemple envoie une notification pour une inscription de modèle contenant un emplacement réservé message dans le modèle à l’aide d’une chaîne JSON valide.This example sends a notification for a template registration that contains a message placeholder in the template using a valid JSON string.

using System;

public static void Run(string myQueueItem,  out string notification, TraceWriter log)
{
    log.Info($"C# Queue trigger function processed: {myQueueItem}");
    notification = "{\"message\":\"Hello from C#. Processed a queue item!\"}";
}

Exemple de modèle de script C# - types de bibliothèqueC# script template example - library types

Cet exemple indique comment utiliser le type défini dans la bibliothèque Microsoft Azure Notification Hubs.This example shows how to use types defined in the Microsoft Azure Notification Hubs Library.

#r "Microsoft.Azure.NotificationHubs"

using System;
using System.Threading.Tasks;
using Microsoft.Azure.NotificationHubs;

public static void Run(string myQueueItem,  out Notification notification, TraceWriter log)
{
   log.Info($"C# Queue trigger function processed: {myQueueItem}");
   notification = GetTemplateNotification(myQueueItem);
}

private static TemplateNotification GetTemplateNotification(string message)
{
    Dictionary<string, string> templateProperties = new Dictionary<string, string>();
    templateProperties["message"] = message;
    return new TemplateNotification(templateProperties);
}

Exemple de modèle F#F# template example

Cet exemple envoie une notification pour une inscription de modèles contenant location et message.This example sends a notification for a template registration that contains location and message.

let Run(myTimer: TimerInfo, notification: byref<IDictionary<string, string>>) =
    notification = dict [("location", "Redmond"); ("message", "Hello from F#!")]

Exemple de modèle JavaScriptJavaScript template example

Cet exemple envoie une notification pour une inscription de modèles contenant location et message.This example sends a notification for a template registration that contains location and message.

module.exports = function (context, myTimer) {
    var timeStamp = new Date().toISOString();

    if (myTimer.IsPastDue)
    {
        context.log('Node.js is running late!');
    }
    context.log('Node.js timer trigger function ran!', timeStamp);  
    context.bindings.notification = {
        location: "Redmond",
        message: "Hello from Node!"
    };
    context.done();
};

Exemple - APNS natifExample - APNS native

Cet exemple de script C# montre comment envoyer une notification APNS native.This C# script example shows how to send a native APNS notification.

#r "Microsoft.Azure.NotificationHubs"
#r "Newtonsoft.Json"

using System;
using Microsoft.Azure.NotificationHubs;
using Newtonsoft.Json;

public static async Task Run(string myQueueItem, IAsyncCollector<Notification> notification, TraceWriter log)
{
    log.Info($"C# Queue trigger function processed: {myQueueItem}");

    // In this example the queue item is a new user to be processed in the form of a JSON string with 
    // a "name" value.
    //
    // The JSON format for a native APNS notification is ...
    // { "aps": { "alert": "notification message" }}  

    log.LogInformation($"Sending APNS notification of a new user");    
    dynamic user = JsonConvert.DeserializeObject(myQueueItem);    
    string apnsNotificationPayload = "{\"aps\": {\"alert\": \"A new user wants to be added (" + 
                                        user.name + ")\" }}";
    log.LogInformation($"{apnsNotificationPayload}");
    await notification.AddAsync(new AppleNotification(apnsNotificationPayload));        
}

Exemple - WNS natifExample - WNS native

Cet exemple de script C# indique comment utiliser les types définis dans la bibliothèque Microsoft Azure Notification Hubs pour envoyer une notification toast WNS native.This C# script example shows how to use types defined in the Microsoft Azure Notification Hubs Library to send a native WNS toast notification.

#r "Microsoft.Azure.NotificationHubs"
#r "Newtonsoft.Json"

using System;
using Microsoft.Azure.NotificationHubs;
using Newtonsoft.Json;

public static async Task Run(string myQueueItem, IAsyncCollector<Notification> notification, TraceWriter log)
{
    log.Info($"C# Queue trigger function processed: {myQueueItem}");

    // In this example the queue item is a new user to be processed in the form of a JSON string with 
    // a "name" value.
    //
    // The XML format for a native WNS toast notification is ...
    // <?xml version="1.0" encoding="utf-8"?>
    // <toast>
    //      <visual>
    //     <binding template="ToastText01">
    //       <text id="1">notification message</text>
    //     </binding>
    //   </visual>
    // </toast>

    log.Info($"Sending WNS toast notification of a new user");    
    dynamic user = JsonConvert.DeserializeObject(myQueueItem);    
    string wnsNotificationPayload = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
                                    "<toast><visual><binding template=\"ToastText01\">" +
                                        "<text id=\"1\">" + 
                                            "A new user wants to be added (" + user.name + ")" + 
                                        "</text>" +
                                    "</binding></visual></toast>";

    log.Info($"{wnsNotificationPayload}");
    await notification.AddAsync(new WindowsNotification(wnsNotificationPayload));        
}

AttributsAttributes

Dans les bibliothèques de classes C#, utilisez l’attribut NotificationHub.In C# class libraries, use the NotificationHub attribute.

Les paramètres de constructeur de l’attribut et les propriétés sont décrites dans la section Configuration.The attribute's constructor parameters and properties are described in the configuration section.

ConfigurationConfiguration

Le tableau suivant décrit les propriétés de configuration de liaison que vous définissez dans le fichier function.json et l’attribut NotificationHub :The following table explains the binding configuration properties that you set in the function.json file and the NotificationHub attribute:

Propriété function.jsonfunction.json property Propriété d’attributAttribute property DescriptionDescription
typetype n/an/a Cette propriété doit être définie sur notificationHub.Must be set to notificationHub.
directiondirection n/an/a Cette propriété doit être définie sur out.Must be set to out.
namename n/an/a Nom de variable utilisé dans le code de fonction pour le message du hub de notification.Variable name used in function code for the notification hub message.
tagExpressiontagExpression tagExpressionTagExpression Expressions de balise vous permettant de demander que les notifications soient remises à un ensemble d’appareils qui se sont inscrits pour la réception de notifications correspondant à l’expression de balise.Tag expressions allow you to specify that notifications be delivered to a set of devices that have registered to receive notifications that match the tag expression. Pour plus d’informations, voir Routage et expressions de balise.For more information, see Routing and tag expressions.
hubNamehubName HubNameHubName Nom de la ressource de hub de notification dans le portail Azure.Name of the notification hub resource in the Azure portal.
Connexionconnection ConnectionStringSettingConnectionStringSetting Nom d’un paramètre d’application contenant une chaîne de connexion Notification Hubs.The name of an app setting that contains a Notification Hubs connection string. Vous devez définir la chaîne de connexion sur la valeur DefaultFullSharedAccessSignature de votre Hub de notification.The connection string must be set to the DefaultFullSharedAccessSignature value for your notification hub. Consultez Configuration de la chaîne de connexion plus loin dans cet article.See Connection string setup later in this article.
platformplatform PlateformePlatform La propriété de la plateforme indique la plateforme cliente ciblée par votre notification.The platform property indicates the client platform your notification targets. Par défaut, si la propriété de la plateforme est omise dans la liaison de sortie, les notifications de modèle peuvent être utilisées pour cibler n’importe quelle plateforme configurée sur Azure Notification Hub.By default, if the platform property is omitted from the output binding, template notifications can be used to target any platform configured on the Azure Notification Hub. Pour en savoir plus sur l’utilisation de modèles en général pour envoyer entre des notifications entre plusieurs plateformes avec un Azure Notification Hub, consultez la rubrique Modèles.For more information on using templates in general to send cross platform notifications with an Azure Notification Hub, see Templates. Une fois définie, platform doit avoir l’une des valeurs suivantes :When set, platform must be one of the following values:

Quand vous développez localement, les paramètres d’application vont dans le fichier local.settings.json.When you're developing locally, app settings go into the local.settings.json file.

Exemple de fichier function.jsonfunction.json file example

Voici un exemple de liaison Notification Hubs dans un fichier function.json.Here's an example of a Notification Hubs binding in a function.json file.

{
  "bindings": [
    {
      "type": "notificationHub",
      "direction": "out",
      "name": "notification",
      "tagExpression": "",
      "hubName": "my-notification-hub",
      "connection": "MyHubConnectionString",
      "platform": "apns"
    }
  ],
  "disabled": false
}

Configuration de la chaîne de connexionConnection string setup

Pour utiliser une liaison de sortie de Hub de notification, vous devez configurer la chaîne de connexion pour le hub.To use a notification hub output binding, you must configure the connection string for the hub. Vous pouvez sélectionner un hub de notification existant ou en créer un nouveau sous l’onglet Intégrer du portail Azure.You can select an existing notification hub or create a new one right from the Integrate tab in the Azure portal. Vous pouvez également configurer la chaîne de connexion manuellement.You can also configure the connection string manually.

Pour configurer la chaîne de connexion sur un hub de notification existant :To configure the connection string to an existing notification hub:

  1. Accédez à votre hub de notification dans le portail Azure, choisissez Stratégies d’accès, puis sélectionnez le bouton Copier en regard de la stratégie DefaultFullSharedAccessSignature.Navigate to your notification hub in the Azure portal, choose Access policies, and select the copy button next to the DefaultFullSharedAccessSignature policy. Vous copiez ainsi la chaîne de connexion de la stratégie DefaultFullSharedAccessSignature dans votre hub de notification.This copies the connection string for the DefaultFullSharedAccessSignature policy to your notification hub. Cette chaîne de connexion permet à votre fonction d’envoyer des messages de notification au hub.This connection string lets your function send notification messages to the hub. Copier la chaîne de connexion du hub de notificationCopy the notification hub connection string
  2. Accédez à votre application de fonction dans le portail Azure, choisissez Paramètres de l’application, ajoutez une clé telle que MyHubConnectionString, collez la stratégie DefaultFullSharedAccessSignature copiée dans votre hub de notification en tant que valeur, puis cliquez sur Enregistrer.Navigate to your function app in the Azure portal, choose Application settings, add a key such as MyHubConnectionString, paste the copied DefaultFullSharedAccessSignature for your notification hub as the value, and then click Save.

Le nom de ce paramètre d’application passe dans le paramètre de connexion de liaison de sortie dans le fichier function.json ou l’attribut .NET.The name of this application setting is what goes in the output binding connection setting in function.json or the .NET attribute. Consultez la section Configuration plus haut dans cet article.See the Configuration section earlier in this article.

Quand vous développez localement, les paramètres d’application vont dans le fichier local.settings.json.When you're developing locally, app settings go into the local.settings.json file.

Exceptions et codes de retourExceptions and return codes

LiaisonBinding Informations de référenceReference
Hub de notificationNotification Hub Guide des opérationsOperations Guide

Étapes suivantesNext steps