Powiązanie wyjściowe usługi Notification Hubs dla Azure Functions
W tym artykule wyjaśniono, jak wysyłać powiadomienia wypychane przy użyciu powiązań usługi Azure Notification Hubs w Azure Functions. Azure Functions obsługuje powiązania wyjściowe dla usługi Notification Hubs.
Usługa Azure Notification Hubs musi być skonfigurowana dla usługi Powiadomień platformy (PNS), której chcesz użyć. Aby dowiedzieć się, jak otrzymywać powiadomienia wypychane w aplikacji klienckiej z usługi Notification Hubs, zobacz Wprowadzenie do usługi Notification Hubs i wybierz docelową platformę klienta z listy rozwijanej w górnej części strony.
Ważne
Firma Google wycofała usługę Google Cloud Messaging (GCM) na rzecz firebase Cloud Messaging (FCM). To powiązanie wyjściowe nie obsługuje usługi FCM. Aby wysyłać powiadomienia przy użyciu usługi FCM, użyj interfejsu API firebase bezpośrednio w funkcji lub użyj powiadomień szablonu.
Pakiety — Funkcje 1.x
Ważne
Wsparcie dla wersji 1.x środowiska uruchomieniowego Azure Functions zakończy się 14 września 2026 r. Zdecydowanie zalecamy przeprowadzenie migracji aplikacji do wersji 4.x w celu uzyskania pełnej pomocy technicznej.
Powiązania usługi Notification Hubs są udostępniane w pakiecie NuGet Microsoft.Azure.WebJobs.Extensions.NotificationHubs w wersji 1.x. Kod źródłowy pakietu znajduje się w repozytorium GitHub azure-webjobs-sdk-extensions .
W poniższej tabeli przedstawiono sposób dodawania obsługi tego powiązania w każdym środowisku deweloperów.
Środowisko deweloperskie | Aby dodać obsługę w programie Functions w wersji 1.x |
---|---|
Programowanie lokalne — biblioteka klas języka C# | Instalowanie pakietu |
Programowanie lokalne — skrypt języka C#, JavaScript, F# | Automatyczny |
Programowanie w portalu | Automatyczny |
Pakiety — funkcje w wersji 2.x i nowszej
To powiązanie nie jest dostępne w usłudze Functions 2.x i nowszych.
Przykład — szablon
Wysyłane powiadomienia mogą być powiadomieniami natywnymi lub powiadomieniami szablonu. Powiadomienia natywne są przeznaczone dla określonej platformy klienta zgodnie z konfiguracją platform
we właściwości powiązania wyjściowego. Powiadomienie szablonu może służyć do kierowania na wiele platform.
Zobacz przykład specyficzny dla języka:
- Skrypt języka C# — parametr wyjściowy
- Skrypt języka C# — asynchroniczny
- Skrypt języka C# — JSON
- Skrypt języka C# — typy bibliotek
- F#
- JavaScript
Przykład szablonu skryptu języka C# — parametr wyjściowy
W tym przykładzie jest wysyłane powiadomienie o rejestracji szablonu zawierającego message
symbol zastępczy w szablonie.
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;
}
Przykład szablonu skryptu języka C# — asynchroniczny
Jeśli używasz kodu asynchronicznego, parametry out nie są dozwolone. W takim przypadku użyj polecenia IAsyncCollector
, aby zwrócić powiadomienie o szablonie. Poniższy kod jest asynchronicznym przykładem powyższego kodu.
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;
}
Przykład szablonu skryptu języka C# — JSON
W tym przykładzie jest wysyłane powiadomienie o rejestracji szablonu zawierającego message
symbol zastępczy w szablonie przy użyciu prawidłowego ciągu JSON.
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!\"}";
}
Przykład szablonu skryptu języka C# — typy bibliotek
W tym przykładzie pokazano, jak używać typów zdefiniowanych w bibliotece usługi Microsoft Azure Notification Hubs.
#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);
}
Przykład szablonu języka F#
W tym przykładzie jest wysyłane powiadomienie o rejestracji szablonu zawierającej location
elementy i message
.
let Run(myTimer: TimerInfo, notification: byref<IDictionary<string, string>>) =
notification = dict [("location", "Redmond"); ("message", "Hello from F#!")]
Przykład szablonu języka JavaScript
W tym przykładzie jest wysyłane powiadomienie o rejestracji szablonu zawierającej location
elementy i 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!"
};
};
Przykład — natywne dla usługi APNS
W tym przykładzie skryptu w języku C# pokazano, jak wysyłać natywne powiadomienie USŁUGI APNS.
#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));
}
Przykład — natywna usługa WNS
W tym przykładzie skryptu języka C# pokazano, jak używać typów zdefiniowanych w bibliotece usługi Microsoft Azure Notification Hubs w celu wysyłania natywnego powiadomienia wyskakujące usługi WNS.
#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));
}
Atrybuty
W bibliotekach klas języka C# użyj atrybutu NotificationHub .
Parametry i właściwości konstruktora atrybutu zostały opisane w sekcji konfiguracji .
Konfigurowanie
W poniższej tabeli opisano właściwości konfiguracji powiązania ustawione w pliku function.json i NotificationHub
atrybut:
function.json, właściwość | Właściwość atrybutu | Opis |
---|---|---|
Typu | n/d | Musi być ustawiona na notificationHub wartość . |
Kierunku | n/d | Musi być ustawiona na out wartość . |
Nazwa | n/d | Nazwa zmiennej używana w kodzie funkcji dla komunikatu centrum powiadomień. |
tagExpression | TagExpression | Wyrażenia tagów umożliwiają określenie, że powiadomienia mają być dostarczane do zestawu urządzeń zarejestrowanych w celu odbierania powiadomień zgodnych z wyrażeniem tagu. Aby uzyskać więcej informacji, zobacz Routing i wyrażenia tagów. |
hubName | Nazwa centrum | Nazwa zasobu centrum powiadomień w Azure Portal. |
Połączenia | ConnectionStringSetting | Nazwa ustawienia aplikacji zawierającego parametry połączenia usługi Notification Hubs. Parametry połączenia muszą być ustawione na wartość DefaultFullSharedAccessSignature dla centrum powiadomień. Zobacz Konfiguracja parametrów połączenia w dalszej części tego artykułu. |
Platformy | Platforma | Właściwość platformy wskazuje platformę klienta docelową powiadomień. Domyślnie, jeśli właściwość platformy zostanie pominięta z powiązania wyjściowego, powiadomienia szablonu mogą służyć do kierowania dowolnej platformy skonfigurowanej w usłudze Azure Notification Hub. Aby uzyskać więcej informacji na temat używania szablonów w ogóle do wysyłania powiadomień międzyplatformowych za pomocą usługi Azure Notification Hub, zobacz Szablony. Po ustawieniu platforma musi być jedną z następujących wartości:
|
Podczas tworzenia aplikacji lokalnie dodaj ustawienia aplikacji w pliku local.settings.json w kolekcji Values
.
Przykład pliku function.json
Oto przykład powiązania usługi Notification Hubs w pliku function.json .
{
"bindings": [
{
"type": "notificationHub",
"direction": "out",
"name": "notification",
"tagExpression": "",
"hubName": "my-notification-hub",
"connection": "MyHubConnectionString",
"platform": "apns"
}
],
"disabled": false
}
Konfiguracja parametrów połączenia
Aby użyć powiązania wyjściowego centrum powiadomień, należy skonfigurować parametry połączenia dla centrum. Możesz wybrać istniejące centrum powiadomień lub utworzyć nowe bezpośrednio na karcie Integracja w Azure Portal. Parametry połączenia można również skonfigurować ręcznie.
Aby skonfigurować parametry połączenia z istniejącym centrum powiadomień:
- Przejdź do centrum powiadomień w Azure Portal, wybierz pozycję Zasady dostępu i wybierz przycisk kopiowania obok zasad DefaultFullSharedAccessSignature. Spowoduje to skopiowanie parametrów połączenia dla zasad DefaultFullSharedAccessSignature do centrum powiadomień. Te parametry połączenia umożliwiają funkcji wysyłanie komunikatów powiadomień do centrum.
- Przejdź do aplikacji funkcji w Azure Portal, wybierz pozycję Ustawienia aplikacji, dodaj klucz, taki jak MyHubConnectionString, wklej skopiowaną wartość DefaultFullSharedAccessSignature dla centrum powiadomień, a następnie kliknij przycisk Zapisz.
Nazwa tego ustawienia aplikacji jest następująca w ustawieniu połączenia powiązania wyjściowego w pliku function.json lub atrybucie .NET. Zobacz sekcję Konfiguracja we wcześniejszej części tego artykułu.
Podczas tworzenia aplikacji lokalnie dodaj ustawienia aplikacji w pliku local.settings.json w kolekcji Values
.
Wyjątki i kody powrotne
Wiązanie | Odwołanie |
---|---|
Centrum powiadomień | Przewodnik obsługi |