Notification Hubs-utdatabindning 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 utdatabindningar för Notification Hubs.
Azure Notification Hubs måste konfigureras för den plattformsmeddelandetjänst (PNS) som du vill använda. Information om hur du hämtar push-meddelanden i klientappen från Notification Hubs finns i Komma igång med Notification Hubs och välj målklientplattformen i listrutan längst upp på sidan.
Viktigt
Google har föråldrat Google Cloud Messaging (GCM) till förmån för Firebase Cloud Messaging (FCM). Den här utdatabindningen stöder inte FCM. Om du vill skicka meddelanden med FCM använder du Firebase-API: et direkt i din funktion eller använder mallaviseringar.
Paket – Functions 1.x
Viktigt
Supporten upphör för version 1.x av Azure Functions-körningen den 14 september 2026. Vi rekommenderar starkt att du migrerar dina appar till version 4.x för fullständigt stöd.
Notification Hubs-bindningarna tillhandahålls i NuGet-paketet Microsoft.Azure.WebJobs.Extensions.NotificationHubs version 1.x. Källkoden för paketet finns på GitHub-lagringsplatsen azure-webjobs-sdk-extensions .
I följande tabell beskrivs hur du lägger till stöd för den här bindningen i varje utvecklingsmiljö.
Utvecklingsmiljö | Så här lägger du till support i Functions 1.x |
---|---|
Lokal utveckling – C#-klassbibliotek | Installera paketet |
Lokal utveckling – C#-skript, JavaScript, F# | Automatiskt |
Portalutveckling | Automatiskt |
Paket – Functions 2.x och senare
Den här bindningen är inte tillgänglig i Functions 2.x och senare.
Exempel – mall
De meddelanden du skickar kan vara interna meddelanden eller mallaviseringar. Interna meddelanden riktar in sig på en specifik klientplattform enligt konfigurationen platform
i egenskapen för utdatabindningen. Ett mallmeddelande kan användas för att rikta in sig på flera plattformar.
Se det språkspecifika exemplet:
- C#-skript – out-parameter
- C#-skript – asynkront
- C#-skript – JSON
- C#-skript – bibliotekstyper
- F#
- JavaScript
Exempel på C#-skriptmall – out-parameter
Det här exemplet skickar ett meddelande för en mallregistrering som innehåller en message
platshå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#-skriptmall – asynkron
Om du använder asynkron kod tillåts inte utdataparametrar. I det här fallet kan du använda IAsyncCollector
för att returnera mallaviseringen. 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;
}
Exempel på C#-skriptmall – JSON
Det här exemplet skickar ett meddelande för en mallregistrering som innehåller en message
platshållare i mallen med hjälp av 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!\"}";
}
Exempel på C#-skriptmall – bibliotekstyper
Det här exemplet visar hur du använder typer som definierats 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);
}
F#-mallexempel
Det här exemplet skickar ett meddelande för en mallregistrering 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 mallregistrering som innehåller location
och 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!"
};
};
Exempel – APNS-inbyggt
Det här C#-skriptexemplet visar hur du skickar ett internt APNS-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-inbyggt
Det här C#-skriptexemplet visar hur du använder typer som definierats i Microsoft Azure Notification Hubs-biblioteket för att skicka ett internt WNS-popup-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 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
I C#-klassbibliotek använder du attributet NotificationHub .
Attributets konstruktorparametrar och egenskaper beskrivs i konfigurationsavsnittet.
Konfiguration
I följande tabell förklaras de bindningskonfigurationsegenskaper som du anger i filen function.json och NotificationHub
attributet:
function.json-egenskap | Attributegenskap | Description |
---|---|---|
Typ | saknas | Måste anges till notificationHub . |
Riktning | saknas | Måste anges till out . |
Namn | saknas | Variabelnamn som används i funktionskoden för meddelandehubbens meddelande. |
tagExpression | TagExpression | Med tagguttryck kan du ange att meddelanden ska levereras till en uppsättning enheter som har registrerats för att ta emot meddelanden som matchar tagguttrycket. Mer information finns i Routning och tagguttryck. |
hubName | HubName | Namnet på meddelandehubbens resurs i Azure Portal. |
anslutning | ConnectionStringSetting | Namnet på en appinställning som innehåller en Notification Hubs-anslutningssträng. Anslutningssträngen måste anges till värdet DefaultFullSharedAccessSignature för meddelandehubben. Se Konfiguration av anslutningssträng senare i den här artikeln. |
Plattform | Plattform | Plattformsegenskapen anger klientplattformen som dina meddelandemål. Om plattformsegenskapen utelämnas från utdatabindningen kan mallmeddelanden som standard användas för att rikta in sig på valfri plattform som konfigurerats på Azure Notification Hub. Mer information om hur du använder mallar i allmänhet för att skicka plattformsoberoende meddelanden med en Azure Notification Hub finns i Mallar. När plattformen har angetts måste den vara ett av följande värden:
|
När du utvecklar lokalt lägger du till dina programinställningar i filen local.settings.json i Values
samlingen.
function.json-filexempel
Här är ett exempel på en Notification Hubs-bindning i en function.json-fil .
{
"bindings": [
{
"type": "notificationHub",
"direction": "out",
"name": "notification",
"tagExpression": "",
"hubName": "my-notification-hub",
"connection": "MyHubConnectionString",
"platform": "apns"
}
],
"disabled": false
}
Konfiguration av anslutningssträng
Om du vill använda en meddelandehubbens utdatabindning måste du konfigurera anslutningssträngen för hubben. Du kan välja en befintlig meddelandehubb eller skapa en ny direkt på fliken Integrera i Azure Portal. Du kan också konfigurera anslutningssträngen manuellt.
Så här konfigurerar du anslutningssträngen till en befintlig meddelandehubb:
- Gå till meddelandehubben i Azure Portal, välj Åtkomstprinciper och välj kopieringsknappen bredvid principen DefaultFullSharedAccessSignature. Detta kopierar anslutningssträngen för principen DefaultFullSharedAccessSignature till meddelandehubben. Med den här anslutningssträngen kan din funktion skicka meddelanden till hubben.
- Gå till funktionsappen i Azure Portal, välj Programinställningar, lägg till en nyckel som MyHubConnectionString, klistra in den kopierade DefaultFullSharedAccessSignature för meddelandehubben som värde och klicka sedan på Spara.
Namnet på den här programinställningen är vad som finns i anslutningsinställningen för utdatabindning i function.json eller .NET-attributet. Se avsnittet Konfiguration tidigare i den här artikeln.
När du utvecklar lokalt lägger du till dina programinställningar i filen local.settings.json i Values
samlingen.
Undantag och returkoder
Bindning | Referens |
---|---|
Notification Hubs | Åtgärdsguide |