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

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:

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 messagebevatlocation.

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 messagebevatlocation.

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:

  1. 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. De Notification Hub-connection string kopiëren
  2. 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)

Volgende stappen