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 :
- Script C# : paramètre out
- Script C# : asynchrone
- Script C# : JSON
- Script C# : types de bibliothèques
- F#
- JavaScript
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 :
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.
Accédez à votre application de fonction dans le Portail Azure, développez Paramètres, puis sélectionnez Variables d’environnement.
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.
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 |