Liaison de sortie 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.
Azure Notification Hubs doit être configuré pour l’infrastructure Platform Notification System (PNS) que vous souhaitez utiliser. 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.
Important
Google a décidé de déprécier Google Cloud Messaging (GCM) en faveur de Firebase Cloud Messaging (FCM). Cette liaison de sortie ne prend 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 d'Azure Functions prendra fin le 14 septembre 2026. Nous vous recommandons vivement de migrer vos applications vers la version 4.x pour bénéficier d'un support.
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 indique comment ajouter la prise en charge de cette liaison 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
Cette liaison n’est pas disponible dans Functions 2.x et ultérieur.
Exemple - modèle
Les notifications que vous envoyez peuvent être des notifications natives ou des notifications de modèle. Les notifications natives ciblent une plateforme cliente spécifique telle que configurée dans la propriété platform
de la liaison de sortie. Un modèle de notification peut servir à plusieurs plateformes cibles.
Consultez l’exemple propre à un langage particulier :
- Script C# - paramètre de sortie
- Script C# - asynchrone
- Script C# - JSON
- Script C# - types de bibliothèque
- F#
- JavaScript
Exemple de modèle de script C# - paramètre de sortie
Cet exemple envoie une notification pour une inscription de modèle contenant un emplacement réservé message
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 de sortie ne sont pas autorisés. Dans ce cas, utilisez IAsyncCollector
pour renvoyer votre notification modèle. Le code suivant est un exemple de code asynchrone ci-dessus.
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 contenant un emplacement réservé message
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èque
Cet exemple indique comment utiliser le type défini 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èles contenant 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èles contenant 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 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 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 natif
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.
#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 de constructeur de l’attribut et les propriétés sont décrites dans la section Configuration.
Configuration
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
:
Propriété function.json | Propriété d’attribut | Description |
---|---|---|
type | n/a | Cette propriété doit être définie sur notificationHub . |
direction | n/a | Cette propriété doit être définie sur out . |
name | n/a | Nom de variable utilisé dans le code de fonction pour le message du hub de notification. |
tagExpression | tagExpression | 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. Pour plus d’informations, voir Routage et expressions de balise. |
hubName | HubName | Nom de la ressource de hub de notification dans le portail Azure. |
connection | ConnectionStringSetting | Nom d’un paramètre d’application contenant une chaîne de connexion Notification Hubs. Vous devez définir la chaîne de connexion sur la valeur DefaultFullSharedAccessSignature de votre Hub de notification. Consultez Configuration de la chaîne de connexion plus loin dans cet article. |
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 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. Une fois définie, platform doit avoir 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 .
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 nouveau sous l’onglet Intégrer du 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 :
- 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. Vous copiez ainsi la chaîne de connexion de la stratégie DefaultFullSharedAccessSignature dans votre hub de notification. Cette chaîne de connexion permet à votre fonction d’envoyer des messages de notification au hub.
- 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.
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. Consultez la section Configuration plus haut dans cet article.
Lorsque vous développez en local, ajoutez vos paramètres d’application dans le fichier local.settings.json de la collection .
Exceptions et codes de retour
Liaison | Informations de référence |
---|---|
Hub de notification | Guide des opérations |