Partage via


Liaisons de sortie Azure Notification Hubs pour Azure Functions

Cet article explique comment envoyer des notifications Push à l’aide de liaisons Azure Notification Hubs dans Azure Functions. Azure Functions prend en charge les liaisons de sortie pour Notification Hubs.

Vous devez configurer Notification Hubs pour le service de notifications de plateforme (PNS) que vous souhaitez utiliser. Pour plus d’informations sur l’obtention de notifications Push dans votre application cliente à partir de Notification Hubs, consultez Démarrage rapide : Configurer des notifications Push dans un hub de notification.

Important

Google a décidé de déprécier Google Cloud Messaging (GCM) en faveur de Firebase Cloud Messaging (FCM). Toutefois, les liaisons de sortie pour Notification Hubs ne prennent pas en charge FCM. Pour envoyer des notifications à l’aide de FCM, utilisez l’API Firebase directement dans votre fonction ou utilisez des notifications de modèle.

Packages : Functions 1.x

Important

La prise en charge de la version 1.x du runtime Azure Functions prendra fin le 14 septembre 2026. Nous vous recommandons fortement de migrer vos applications vers la version 4.x pour bénéficier d’une prise en charge complète.

Les liaisons Notification Hubs sont fournies dans le package NuGet Microsoft.Azure.WebJobs.Extensions.NotificationHubs, version 1.x. Le code source du package se trouve dans le référentiel GitHub azure-webjobs-sdk-extensions.

Le tableau suivant répertorie comment ajouter la prise en charge de la liaison de sortie dans chaque environnement de développement.

Environnement de développement Pour ajouter la prise en charge dans Functions 1.x
Développement local : bibliothèque de classes C# Installer le package.
Développement local : script C#, JavaScript, F# Automatique
Développement sur le portail Automatique

Packages : Functions 2.x et versions ultérieures

La liaison de sortie n’est pas disponible dans Functions 2.x et versions ultérieures.

Exemple de modèle :

Les notifications que vous envoyez peuvent être des notifications natives ou des notifications de modèle. Une notification native cible une plateforme cliente spécifique, telle qu’elle est configurée dans la platform propriété de la liaison de sortie. Un modèle de notification peut servir à plusieurs plateformes cibles.

Exemples de modèles pour chaque langage :

Exemple de modèle de script C# : paramètre out

Cet exemple envoie une notification pour une inscription de modèle qui contient un message espace réservé dans le modèle :

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# : asynchrone

Si vous utilisez du code asynchrone, les paramètres out ne sont pas autorisés. Dans ce cas, utilisez cette option IAsyncCollector pour renvoyer votre notification de modèle. Le code suivant est un exemple asynchrone de l’exemple précédent :

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# : JSON

Cet exemple envoie une notification pour une inscription de modèle qui contient un message espace réservé dans le modèle à l’aide d’une chaîne JSON valide :

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èques

Cet exemple montre comment utiliser des types définis dans la bibliothèque Microsoft Azure Notification Hubs :

#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#

Cet exemple envoie une notification pour une inscription de modèle qui contient location et message:

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

Exemple de modèle JavaScript

Cet exemple envoie une notification pour une inscription de modèle qui contient location et message:

module.exports = async 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!"
    };
};

Exemple : APNS natif

Cet exemple de script C# montre comment envoyer une notification APNS (Apple Push Notification Service) native :

#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 Apple Push Notification Service (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 native

Cet exemple de script C# montre comment utiliser des types définis dans la bibliothèque Microsoft Azure Notification Hubs pour envoyer une notification toast Windows Push Service (WNS) native :

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

Attributs

Dans les bibliothèques de classes C#, utilisez l’attribut NotificationHub.

Les paramètres et propriétés du constructeur de l’attribut sont décrits dans la section Configuration .

Configuration

Le tableau suivant répertorie les propriétés de configuration de liaison que vous avez définies dans le fichier function.json et l’attribut NotificationHub :

Propriété function.json Propriété d’attribut Description
type n/a Réglez sur notificationHub.
direction n/a Réglez sur out.
nom n/a Nom de variable utilisé dans le code de fonction pour le message du hub de notification.
tagExpression tagExpression Les expressions de balise vous permettent de spécifier que les notifications sont remises à un ensemble d’appareils inscrits pour recevoir des notifications correspondant à l’expression de balise. Pour plus d’informations, voir Routage et expressions de balise.
hubName HubName Nom de la ressource du hub de notification dans le Portail Azure.
connexion ConnectionStringSetting Nom d’un paramètre d’application contenant une chaîne de connexion Notification Hubs. Définissez le chaîne de connexion sur la valeur DefaultFullSharedAccessSignature de votre hub de notification. Pour plus d’informations, consultez Configuration de la chaîne de connexion.
platform Plateforme La propriété de la plateforme indique la plateforme cliente ciblée par votre notification. 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. Pour plus d’informations sur l’utilisation de modèles pour envoyer des notifications multiplateformes avec un Hub de notification Azure, consultez les modèles Notification Hubs. Lorsque la plateforme est définie, il doit s’agir de l’une des valeurs suivantes :

Lorsque vous développez en local, ajoutez vos paramètres d’application dans le fichier local.settings.json de la collection Values.

Exemple de fichier function.json

Voici un exemple de liaison Notification Hubs dans un fichier function.json :

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

Configuration de la chaîne de connexion

Pour utiliser une liaison de sortie de Hub de notification, vous devez configurer la chaîne de connexion pour le hub. Vous pouvez sélectionner un hub de notification existant ou en créer un à partir de l’onglet Intégrer dans le Portail Azure. Vous pouvez également configurer la chaîne de connexion manuellement.

Pour configurer la chaîne de connexion sur un hub de notification existant :

  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.

    La chaîne de connexion de la stratégie DefaultFullSharedAccessSignature est copiée dans votre hub de notification. Cette chaîne de connexion permet à votre fonction d’envoyer des messages de notification au hub. Capture d’écran montrant comment copier le hub de notification chaîne de connexion.

  2. Accédez à votre application de fonction dans le Portail Azure, développez Paramètres, puis sélectionnez Variables d’environnement.

  3. Sous l’onglet Paramètre de l’application, sélectionnez + Ajouter pour ajouter une clé telle que MyHubConnectionString. Le nom de ce paramètre d’application est le paramètre de connexion de liaison de sortie dans function.json ou l’attribut .NET. Pour plus d’informations, consultez Configuration.

  4. Pour la valeur, collez l’chaîne de connexion DefaultFullSharedAccessSignature copiée à partir de votre hub de notification, puis sélectionnez Appliquer.

Lorsque vous développez en local, ajoutez vos paramètres d’application dans le fichier local.settings.json de la collection Values.

Exceptions et codes de retour

Liaison Informations de référence
Hub de notification Guide des opérations