Notification Hubs utgående bindning för Azure Functions

Den här artikeln beskriver hur du skickar push-meddelanden med hjälp av Azure Notification Hubs -bindningar i Azure Functions. Azure Functions stöder utgående bindningar för Notification Hubs.

Azure Notification Hubs måste konfigureras för den plattforms meddelande tjänst (PNS) som du vill använda. Information om hur du hämtar push-meddelanden i din klient app från Notification Hubs finns i komma igång med Notification Hubs och välj mål klient plattform i list rutan längst upp på sidan.

Detta är referensinformation för Azure Functions utvecklare. Om du inte har använt Azure Functions börjar du med följande resurser:

Viktigt

Google har föråldrade Google Cloud Messaging (GCM) i stället för Firebase Cloud Messaging (FCM). Den här utgående bindningen stöder inte FCM. Om du vill skicka meddelanden med hjälp av FCM kan du använda Firebase-API: et direkt i din funktion eller använda mall meddelanden.

Paket-funktioner 1. x

Notification Hubs-bindningarna finns i Microsoft. Azure. WebJobs. Extensions. NotificationHubs NuGet-paketet, version 1. x. Käll koden för paketet finns i Azure-WebJobs-SDK-Extensions GitHub- lagringsplatsen.

Följande tabell visar hur du lägger till stöd för den här bindningen i varje utvecklings miljö.

Utvecklingsmiljö För att lägga till stöd i
Functions 1.x
Lokal utveckling – klass bibliotek i C# Installera paketet
Lokal utveckling – C#-skript, Java Script, F # Automatiskt
Portal utveckling Automatiskt

Paket-funktioner 2. x och högre

Den här bindningen är inte tillgänglig i functions 2. x och högre.

Exempel-mall

De meddelanden som du skickar kan vara interna meddelanden eller mal meddelanden. Interna meddelanden riktar sig till en specifik klient plattform enligt konfigurationen i platform egenskapen för utgående bindning. Ett mal Lav besked kan användas för att rikta in flera plattformar.

Se språkspecifika exempel:

Exempel på skript mal len C#-parameter

Det här exemplet skickar ett meddelande för en mall registrering som innehåller en message plats hållare i mallen.

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

Exempel på C#-skript mal len – asynkron

Om du använder asynkron kod tillåts inte out-parametrar. I det här fallet använder IAsyncCollector du för att returnera meddelandet från en mall. Följande kod är ett asynkront exempel på koden ovan.

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

C#-skript mal len exempel – JSON

Det här exemplet skickar ett meddelande för en mall registrering som innehåller en message plats hållare i mallen med en giltig JSON-sträng.

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

C#-skript mal len exempel – biblioteks typer

Det här exemplet visar hur du använder typer som definieras i Microsoft Azure Notification Hubs-biblioteket.

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

Exempel på F #-mall

Det här exemplet skickar ett meddelande för en mall registrering som innehåller location och message .

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

Exempel på JavaScript-mall

Det här exemplet skickar ett meddelande för en mall registrering som innehåller location och message .

module.exports = 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!"
    };
    context.done();
};

Exempel – APN Native

Det här C#-skript exemplet visar hur du skickar ett internt APN-meddelande.

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

Exempel – WNS Native

Det här C#-skript exemplet visar hur du använder typer som definierats i Microsoft Azure Notification Hubs-biblioteket för att skicka en inbyggd WNS popup-avisering.

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

Attribut

Använd attributet NotificationHub i C#-klass bibliotek.

Attributets konstruktor parametrar och egenskaper beskrivs i konfigurations avsnittet.

Konfiguration

I följande tabell förklaras de egenskaper för bindnings konfiguration som du anger i function.js filen och NotificationHub attributet:

function.jspå egenskap Attributets egenskap Beskrivning
bastyp saknas Måste anges till notificationHub .
position saknas Måste anges till out .
Namn saknas Variabel namn som används i funktions koden för Notification Hub-meddelandet.
tagExpression TagExpression Med tagg uttryck kan du ange att meddelanden ska skickas till en uppsättning enheter som har registrerats för att ta emot meddelanden som matchar etikett uttrycket. Mer information finns i avsnittet om Routning och tagg uttryck.
hubName HubName Namnet på resursen för Notification Hub i Azure Portal.
anslutningen ConnectionStringSetting Namnet på en app-inställning som innehåller en Notification Hubs anslutnings sträng. Anslutnings strängen måste anges till DefaultFullSharedAccessSignature -värdet för Notification Hub. Se installationen av anslutnings strängen senare i den här artikeln.
systemet Plattform Egenskapen Platform anger klient plattformen som meddelande mål. Som standard, om egenskapen Platform utelämnas från utgående bindning, kan mal meddelanden användas för att rikta in alla plattformar som kon figurer ATS i Azure Notification Hub. Mer information om hur du använder mallar i allmänhet för att skicka plattforms oberoende meddelanden med en Azure Notification Hub finns i mallar. När den har angetts måste plattformen vara något av följande värden:

När du utvecklar lokalt går appinställningarna till ilocal.settings.js på filen.

function.jspå fil exempel

Här är ett exempel på en Notification Hubs-bindning i en function.jspå en fil.

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

Konfiguration av anslutnings sträng

Om du vill använda en utgående bindning för Notification Hub måste du konfigurera anslutnings strängen för hubben. Du kan välja en befintlig Notification Hub eller skapa en ny rättighet från fliken integrera i Azure Portal. Du kan också konfigurera anslutnings strängen manuellt.

Så här konfigurerar du anslutnings strängen till en befintlig Notification Hub:

  1. Navigera till Notification Hub i Azure Portal, Välj åtkomst principer och välj sedan knappen Kopiera bredvid DefaultFullSharedAccessSignature -principen. Detta kopierar anslutnings strängen för DefaultFullSharedAccessSignature -principen till Notification Hub. Med den här anslutnings strängen kan funktionen skicka meddelanden till hubben. Kopiera anslutnings strängen för Notification Hub
  2. Navigera till din Function-app i Azure Portal, Välj program inställningar, Lägg till en nyckel, till exempel MyHubConnectionString, klistra in den kopierade DefaultFullSharedAccessSignature för Notification Hub som värde och klicka sedan på Spara.

Namnet på den här program inställningen är vad som händer i anslutnings inställningen för utgående bindning i function.jspå eller .NET-attributet. Se konfigurations avsnittet tidigare i den här artikeln.

När du utvecklar lokalt går appinställningarna till ilocal.settings.js på filen.

Undantag och retur koder

Bindning Referens
Notification Hubs Drift guide

Nästa steg