Ausgabebindungen für Azure Notification Hubs für Azure-Funktionen

Dieser Artikel erläutert das Senden von Pushbenachrichtigungen mithilfe von Azure Notification Hubs-Bindungen in Azure Functions. Azure Functions unterstützt Ausgabebindungen für Notification Hubs.

Sie müssen Benachrichtigungshubs für den PNS (Platform Notifications Service) konfigurieren, den Sie verwenden möchten. Weitere Informationen zum Abrufen von Pushbenachrichtigungen in Ihrer Client-App über Benachrichtigungshubs finden Sie in der Schnellstartanleitung: Einrichten von Pushbenachrichtigungen in einem Benachrichtigungshub.

Wichtig

Google Cloud Messaging (GCM) wurde von Google eingestellt und durch Firebase Cloud Messaging (FCM) ersetzt. Ausgabebindungen für Notification Hubs unterstützen fcM jedoch nicht. Verwenden Sie die Firebase-API direkt in Ihrer Funktion, oder nutzen Sie Vorlagenbenachrichtigungen, um Benachrichtigungen mithilfe von FCM zu senden.

Pakete: Funktionen 1.x

Wichtig

Der Support für Version 1.x der Azure Functions-Laufzeit endet am 14. September 2026. Es wird dringend empfohlen, dass Sie Ihre Apps zu Version 4.x migrieren, um vollständigen Support zu erhalten.

Die Notification Hubs-Bindungen werden im NuGet-Paket Microsoft.Azure.WebJobs.Extensions.NotificationHubs, Version 1.x bereitgestellt. Den Quellcode für das Paket finden Sie im GitHub-Repository azure-webjobs-sdk-extensions.

In der folgenden Tabelle wird beschrieben, wie Sie unterstützung für die Ausgabebindung in jeder Entwicklungsumgebung hinzufügen.

Entwicklungsumgebung So fügen Sie Support in Functions 1.x hinzu
Lokale Entwicklung: C#-Klassenbibliothek Paket installieren
Lokale Entwicklung: C#-Skript, JavaScript, F# Automatisch
Entwicklung im Portal Automatisch

Pakete: Funktionen 2.x und höher

Die Ausgabebindung ist in Funktionen 2.x und höher nicht verfügbar.

Beispielvorlage:

Die von Ihnen gesendeten Benachrichtigungen können native Benachrichtigungen oder Vorlagenbenachrichtigungen sein. Eine systemeigene Benachrichtigung zielt auf eine bestimmte Clientplattform ab, wie in der platform Eigenschaft der Ausgabebindung konfiguriert. Eine Vorlagenbenachrichtigung kann für mehrere Plattformen verwendet werden.

Vorlagenbeispiele für jede Sprache:

Beispiel für eine C#-Skriptvorlage: Out-Parameter

In diesem Beispiel wird eine Benachrichtigung für eine Vorlagenregistrierung gesendet, die einen message Platzhalter in der Vorlage enthält:

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

Beispiel für eine C#-Skriptvorlage: asynchron

Wenn Sie asynchronen Code verwenden, sind ausgabeparameter nicht zulässig. Verwenden Sie IAsyncCollector in diesem Fall die Vorlagebenachrichtigung zurückzugeben. Der folgende Code ist ein asynchrones Beispiel des vorherigen Beispiels:

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

Beispiel für eine C#-Skriptvorlage: JSON

In diesem Beispiel wird eine Benachrichtigung für eine Vorlagenregistrierung gesendet, die einen message Platzhalter in der Vorlage mit einer gültigen JSON-Zeichenfolge enthält:

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!\"}";
}

Beispiel für eine C#-Skriptvorlage: Bibliothekstypen

In diesem Beispiel wird gezeigt, wie Typen verwendet werden, die in der Microsoft Azure Notification Hubs Library definiert sind:

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

F#-Vorlagenbeispiel

In diesem Beispiel wird eine Benachrichtigung für eine Vorlagenregistrierung gesendet, die Folgendes enthältlocation:message

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

JavaScript-Vorlagenbeispiel

In diesem Beispiel wird eine Benachrichtigung für eine Vorlagenregistrierung gesendet, die Folgendes enthältlocation: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!"
    };
};

Beispiel: APNS systemeigene APNS

Dieses C#-Skriptbeispiel zeigt, wie eine systemeigene Apple Push Notification Service (APNS)-Benachrichtigung gesendet wird:

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

Beispiel: WNS native

Dieses C#-Skriptbeispiel zeigt, wie Typen verwendet werden, die in der Microsoft Azure Notification Hubs Library definiert sind, um eine systemeigene Windows Push Notification Service (WNS)-Popupbenachrichtigung zu senden:

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

Attribute

Verwenden Sie in C#-Klassenbibliotheken das Attribut NotificationHub.

Die Konstruktorparameter und -eigenschaften des Attributs werden im Abschnitt "Konfiguration" beschrieben.

Konfiguration

In der folgenden Tabelle sind die Bindungskonfigurationseigenschaften aufgeführt, die Sie in der datei function.json und dem NotificationHub Attribut festgelegt haben:

Eigenschaft von „function.json“ Attributeigenschaft BESCHREIBUNG
type Nicht zutreffend Auf notificationHub festlegen.
direction Nicht zutreffend Auf out festlegen.
name Variablenname, der im Funktionscode für die Notification Hub-Nachricht verwendet wird
tagExpression TagExpression Mit Tagausdrücken können Sie angeben, dass Benachrichtigungen an eine Gruppe von Geräten übermittelt werden, die registriert sind, um Benachrichtigungen zu empfangen, die mit dem Tagausdruck übereinstimmen. Weitere Informationen finden Sie unter Weiterleitung und Tagausdrücke.
hubName HubName Der Name der Benachrichtigungshubressource im Azure-Portal.
Verbindung ConnectionStringSetting Der Name einer App-Einstellung, die eine Notification Hubs-Verbindungszeichenfolge enthält. Legen Sie den Verbindungszeichenfolge auf den DefaultFullSharedAccessSignature-Wert für Ihren Benachrichtigungshub fest. Weitere Informationen finden Sie unter Verbindungszeichenfolgensetup.
platform Plattform Mit der platform-Eigenschaft wird die Clientplattform Ihrer Benachrichtigungsziele angegeben. Wenn die Plattformeigenschaft aus der Ausgabebindung weggelassen wird, können Vorlagenbenachrichtigungen für alle Zielplattformen verwendet werden, die auf dem Azure Notification Hub konfiguriert sind. Weitere Informationen zum Verwenden von Vorlagen zum Senden plattformübergreifender Benachrichtigungen mit einem Azure Notification Hub finden Sie in den Vorlagen für Benachrichtigungshubs. Wenn die Plattform festgelegt ist, muss es sich um einen der folgenden Werte handeln:

Wenn Sie die Entwicklung lokal ausführen, fügen Sie Ihre Anwendungseinstellungen in der Datei local.settings.json in der Values-Sammlung hinzu.

Beispiel für die Datei „function.json“

Hier ist ein Beispiel für eine Benachrichtigungshub-Bindung in einer function.json Datei:

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

Verbindungszeichenfolgen-Setup

Um eine Notification Hubs-Ausgabebindung zu verwenden, müssen Sie die Verbindungszeichenfolge für den Hub konfigurieren. Sie können einen vorhandenen Benachrichtigungshub auswählen oder auf der Registerkarte "Integrieren" im Azure-Portal einen neuen erstellen. Sie können die Verbindungszeichenfolge auch manuell konfigurieren.

So konfigurieren Sie die Verbindungszeichenfolge für einen vorhandenen Notification Hub:

  1. Navigieren Sie im Azure-Portal zum Notification Hub, wählen Sie Zugriffsrichtlinien, und klicken Sie auf die Kopierschaltfläche neben der Richtlinie DefaultFullSharedAccessSignature.

    Die Verbindungszeichenfolge für die DefaultFullSharedAccessSignature-Richtlinie wird in Ihren Benachrichtigungshub kopiert. Mit dieser Verbindungszeichenfolge kann Ihre Funktion Benachrichtigungen an den Hub senden. Screenshot, der zeigt, wie der Benachrichtigungshub Verbindungszeichenfolge kopiert wird.

  2. Navigieren Sie in der Azure-Portal zu Ihrer Funktions-App, erweitern Sie "Einstellungen", und wählen Sie dann "Umgebungsvariablen" aus.

  3. Wählen Sie auf der Registerkarte "App-Einstellung" +Hinzufügen aus, um einen Schlüssel wie MyHubConnectionString hinzuzufügen. Der Name dieser App-Einstellung ist die Verbindungseinstellung für die Ausgabebindung in function.json oder dem .NET-Attribut. Weitere Informationen finden Sie unter Konfiguration.

  4. Fügen Sie für den Wert die kopierte DefaultFullSharedAccessSignature-Verbindungszeichenfolge aus Ihrem Benachrichtigungshub ein, und wählen Sie dann "Übernehmen" aus.

Wenn Sie die Entwicklung lokal ausführen, fügen Sie Ihre Anwendungseinstellungen in der Datei local.settings.json in der Values-Sammlung hinzu.

Ausnahmen und Rückgabecodes

Bindung Verweis
Notification Hub Betriebsleitfaden