Notification Hubs-uitvoerbinding voor Azure Functions
In dit artikel wordt uitgelegd hoe u pushmeldingen verzendt met behulp van Azure Notification Hubs-bindingen in Azure Functions. Azure Functions ondersteunt uitvoerbindingen voor Notification Hubs.
Azure Notification Hubs moet worden geconfigureerd voor de Platform Notifications Service (PNS) die u wilt gebruiken. Zie Aan de slag met Notification Hubs en selecteer uw doelclientplatform in de vervolgkeuzelijst aan de bovenkant van de pagina voor meer informatie over het ophalen van pushmeldingen in uw client-app van Notification Hubs.
Belangrijk
Google heeft Google Cloud Messaging (GCM) afgeschaft ten gunste van Firebase Cloud Messaging (FCM). Deze uitvoerbinding biedt geen ondersteuning voor FCM. Als u meldingen wilt verzenden met behulp van FCM, gebruikt u de Firebase-API rechtstreeks in uw functie of gebruikt u sjabloonmeldingen.
Pakketten - Functions 1.x
Belangrijk
De ondersteuning voor versie 1.x van de Azure Functions runtime eindigt op 14 september 2026. We raden u ten zeerste aan uw apps te migreren naar versie 4.x voor volledige ondersteuning.
De Notification Hubs-bindingen zijn beschikbaar in het NuGet-pakket Microsoft.Azure.WebJobs.Extensions.NotificationHubs , versie 1.x. De broncode voor het pakket bevindt zich in de GitHub-opslagplaats azure-webjobs-sdk-extensions .
De volgende tabel bevat informatie over het toevoegen van ondersteuning voor deze binding in elke ontwikkelomgeving.
Ontwikkelomgeving | Ondersteuning toevoegen in Functions 1.x |
---|---|
Lokale ontwikkeling: C#-klassebibliotheek | Het pakket installeren |
Lokale ontwikkeling: C#-script, JavaScript, F# | Automatisch |
Portal-ontwikkeling | Automatisch |
Pakketten - Functions 2.x en hoger
Deze binding is niet beschikbaar in Functions 2.x en hoger.
Voorbeeld - sjabloon
De meldingen die u verzendt, kunnen systeemeigen meldingen of sjabloonmeldingen zijn. Systeemeigen meldingen zijn gericht op een specifiek clientplatform zoals geconfigureerd in de platform
eigenschap van de uitvoerbinding. Een sjabloonmelding kan worden gebruikt om meerdere platforms te targeten.
Zie het taalspecifieke voorbeeld:
- C#-script - outparameter
- C#-script - asynchroon
- C#-script - JSON
- C#-script - bibliotheektypen
- F#
- JavaScript
Voorbeeld van C#-scriptsjabloon - outparameter
In dit voorbeeld wordt een melding verzonden voor een sjabloonregistratie die een message
tijdelijke aanduiding in de sjabloon bevat.
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;
}
Voorbeeld van C#-scriptsjabloon - asynchroon
Als u asynchrone code gebruikt, zijn out-parameters niet toegestaan. Gebruik in dit geval IAsyncCollector
om de sjabloonmelding te retourneren. De volgende code is een asynchroon voorbeeld van de bovenstaande code.
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;
}
Voorbeeld van C#-scriptsjabloon - JSON
In dit voorbeeld wordt een melding verzonden voor een sjabloonregistratie die een message
tijdelijke aanduiding in de sjabloon bevat met behulp van een geldige JSON-tekenreeks.
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!\"}";
}
Voorbeeld van C#-scriptsjabloon - bibliotheektypen
In dit voorbeeld ziet u hoe u typen gebruikt die zijn gedefinieerd in de 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);
}
Voorbeeld van F#-sjabloon
In dit voorbeeld wordt een melding verzonden voor een sjabloonregistratie die en message
bevatlocation
.
let Run(myTimer: TimerInfo, notification: byref<IDictionary<string, string>>) =
notification = dict [("location", "Redmond"); ("message", "Hello from F#!")]
Voorbeeld van JavaScript-sjabloon
In dit voorbeeld wordt een melding verzonden voor een sjabloonregistratie die en message
bevatlocation
.
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!"
};
};
Voorbeeld - systeemeigen APNS
In dit voorbeeld van een C#-script ziet u hoe u een systeemeigen APNS-melding verzendt.
#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));
}
Voorbeeld - systeemeigen WNS
In dit voorbeeld van een C#-script ziet u hoe u typen gebruikt die zijn gedefinieerd in de Microsoft Azure Notification Hubs Library om een systeemeigen WNS-pop-upmelding te verzenden.
#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));
}
Kenmerken
Gebruik in C#-klassebibliotheken het kenmerk NotificationHub .
De constructorparameters en -eigenschappen van het kenmerk worden beschreven in de configuratiesectie .
Configuratie
In de volgende tabel worden de eigenschappen van de bindingsconfiguratie uitgelegd die u instelt in het bestand function.json en het NotificationHub
kenmerk:
function.json-eigenschap | Kenmerkeigenschap | Beschrijving |
---|---|---|
type | N.v.t. | Moet worden ingesteld op notificationHub . |
direction | N.v.t. | Moet worden ingesteld op out . |
name | N.v.t. | Variabelenaam die wordt gebruikt in functiecode voor het notification hub-bericht. |
tagExpression | TagExpression | Met tagexpressies kunt u opgeven dat meldingen worden geleverd aan een set apparaten die zijn geregistreerd voor het ontvangen van meldingen die overeenkomen met de tagexpressie. Zie Routering en tagexpressies voor meer informatie. |
hubName | HubName | Naam van de Notification Hub-resource in de Azure Portal. |
connection | ConnectionStringSetting | De naam van een app-instelling die een Notification Hubs-connection string bevat. De connection string moet worden ingesteld op de waarde DefaultFullSharedAccessSignature voor uw Notification Hub. Zie Verbindingsreeks instellen verderop in dit artikel. |
Platform | Platform | De platformeigenschap geeft het clientplatform aan waarop uw meldingsdoelen zijn gericht. Als de platformeigenschap wordt weggelaten uit de uitvoerbinding, kunnen sjabloonmeldingen standaard worden gebruikt voor elk platform dat is geconfigureerd op de Azure Notification Hub. Zie Sjablonen voor meer informatie over het gebruik van sjablonen in het algemeen voor het verzenden van platformoverschrijdende meldingen met een Azure Notification Hub. Wanneer dit is ingesteld, moet het platform een van de volgende waarden hebben:
|
Wanneer u lokaal ontwikkelt, voegt u uw toepassingsinstellingen toe aan het bestand local.settings.json in de Values
verzameling.
Voorbeeld van het bestand function.json
Hier volgt een voorbeeld van een Notification Hubs-binding in een function.json-bestand .
{
"bindings": [
{
"type": "notificationHub",
"direction": "out",
"name": "notification",
"tagExpression": "",
"hubName": "my-notification-hub",
"connection": "MyHubConnectionString",
"platform": "apns"
}
],
"disabled": false
}
Verbindingsreeks instellen
Als u een notification hub-uitvoerbinding wilt gebruiken, moet u de connection string voor de hub configureren. U kunt een bestaande Notification Hub selecteren of een nieuwe maken op het tabblad Integreren in de Azure Portal. U kunt de connection string ook handmatig configureren.
De connection string configureren voor een bestaande Notification Hub:
- Navigeer naar uw Notification Hub in de Azure Portal, kies Toegangsbeleid en selecteer de knop Kopiëren naast het beleid DefaultFullSharedAccessSignature. Hiermee kopieert u de connection string voor het beleid DefaultFullSharedAccessSignature naar uw Notification Hub. Met deze connection string kunt u met uw functie meldingsberichten naar de hub verzenden.
- Navigeer naar uw functie-app in de Azure Portal, kies Toepassingsinstellingen, voeg een sleutel toe zoals MyHubConnectionString, plak de gekopieerde DefaultFullSharedAccessSignature voor uw Notification Hub als de waarde en klik vervolgens op Opslaan.
De naam van deze toepassingsinstelling is wat wordt gebruikt in de instelling voor de uitvoerbindingsverbinding in function.json of het .NET-kenmerk. Zie de sectie Configuratie eerder in dit artikel.
Wanneer u lokaal ontwikkelt, voegt u uw toepassingsinstellingen toe aan het bestand local.settings.json in de Values
verzameling.
Uitzonderingen en retourcodes
Binding | Referentie |
---|---|
Notification Hub | Operations Guide (Bedieningshandleiding) |