Výstupní vazba Notification Hubs pro Azure Functions
Tento článek vysvětluje, jak odesílat nabízená oznámení pomocí vazeb Azure Notification Hubs v Azure Functions. Azure Functions podporuje výstupní vazby pro Notification Hubs.
Služba Azure Notification Hubs musí být nakonfigurovaná pro službu oznámení platformy (PNS), kterou chcete používat. Pokud chcete zjistit, jak do klientské aplikace dostávat nabízená oznámení z Notification Hubs, přečtěte si téma Začínáme se službou Notification Hubs a v rozevíracím seznamu v horní části stránky vyberte cílovou klientskou platformu.
Důležité
Google vyřadil službu Google Cloud Messaging (GCM) ve prospěch služby Firebase Cloud Messaging (FCM). Tato výstupní vazba nepodporuje FCM. Pokud chcete odesílat oznámení pomocí FCM, použijte rozhraní Firebase API přímo ve vaší funkci nebo použijte oznámení šablony.
Balíčky – Funkce 1.x
Důležité
Podpora modulu runtime Azure Functions verze 1.x skončí 14. září 2026. Důrazně doporučujeme migrovat aplikace na verzi 4.x , abyste měli plnou podporu.
Vazby Notification Hubs jsou k dispozici v balíčku NuGet Microsoft.Azure.WebJobs.Extensions.NotificationHubs verze 1.x. Zdrojový kód balíčku je v úložišti GitHub azure-webjobs-sdk-extensions .
Následující tabulka popisuje, jak přidat podporu pro tuto vazbu v každém vývojovém prostředí.
Vývojové prostředí | Přidání podpory v Functions 1.x |
---|---|
Místní vývoj – knihovna tříd jazyka C# | Instalace balíčku |
Místní vývoj – skript jazyka C#, JavaScript, F# | Automaticky |
Vývoj na portálu | Automaticky |
Balíčky – Funkce 2.x a vyšší
Tato vazba není k dispozici ve funkcích 2.x a vyšších.
Příklad – šablona
Odesílaná oznámení můžou být nativní oznámení nebo oznámení šablony. Nativní oznámení cílí na konkrétní klientskou platformu nakonfigurovanou platform
ve vlastnosti výstupní vazby. Oznámení šablony je možné použít k cílení na více platforem.
Podívejte se na příklad konkrétního jazyka:
- Skript jazyka C# – parametr out
- Skript jazyka C# – asynchronní
- Skript jazyka C# – JSON
- Skript jazyka C# – typy knihoven
- F#
- JavaScript
Příklad šablony skriptu C# – parametr out
Tento příklad odešle oznámení o registraci šablony , která obsahuje message
zástupný symbol v šabloně.
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;
}
Příklad šablony skriptu jazyka C# – asynchronní
Pokud používáte asynchronní kód, nejsou parametry out povoleny. V tomto případě použijte IAsyncCollector
k vrácení oznámení šablony. Následující kód je asynchronním příkladem výše uvedeného kódu.
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;
}
Příklad šablony skriptu jazyka C# – JSON
Tento příklad odešle oznámení o registraci šablony , která obsahuje message
zástupný symbol v šabloně pomocí platného řetězce 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!\"}";
}
Příklad šablony skriptu C# – typy knihoven
Tento příklad ukazuje, jak používat typy definované v knihovně 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);
}
Příklad šablony F#
Tento příklad odešle oznámení o registraci šablony , která obsahuje location
a message
.
let Run(myTimer: TimerInfo, notification: byref<IDictionary<string, string>>) =
notification = dict [("location", "Redmond"); ("message", "Hello from F#!")]
Příklad šablony JavaScriptu
Tento příklad odešle oznámení o registraci šablony , která obsahuje location
a 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!"
};
};
Příklad – nativní APNS
Tento příklad skriptu jazyka C# ukazuje, jak odeslat nativní oznámení 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));
}
Příklad – nativní WNS
Tento příklad skriptu jazyka C# ukazuje, jak pomocí typů definovaných v knihovně Microsoft Azure Notification Hubs odesílat nativní informační zprávy služby 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));
}
Atributy
V knihovnách tříd jazyka C# použijte atribut NotificationHub .
Parametry a vlastnosti konstruktoru atributu jsou popsány v části konfigurace .
Konfigurace
Následující tabulka vysvětluje vlastnosti konfigurace vazby, které jste nastavili v souboru function.json, a atribut:NotificationHub
function.json – vlastnost | Vlastnost atributu | Description |
---|---|---|
Typ | Není k dispozici | Musí být nastavena na notificationHub hodnotu . |
Směru | Není k dispozici | Musí být nastavena na out hodnotu . |
Jméno | Není k dispozici | Název proměnné použitý v kódu funkce pro zprávu centra oznámení. |
tagExpression | TagExpression | Výrazy značek umožňují určit, aby se oznámení doručovala do sady zařízení, která se zaregistrovala pro příjem oznámení, která odpovídají výrazu značky. Další informace najdete v tématu Směrování a výrazy značek. |
hubName | HubName | Název prostředku centra oznámení v Azure Portal. |
připojení | ConnectionStringSetting | Název nastavení aplikace, které obsahuje připojovací řetězec Notification Hubs. Připojovací řetězec musí být nastavený na hodnotu DefaultFullSharedAccessSignature pro vaše centrum oznámení. Viz Nastavení připojovacího řetězce dále v tomto článku. |
Platforma | Platforma | Vlastnost platform označuje klientskou platformu, na které vaše oznámení cílí. Pokud je ve výchozím nastavení vlastnost platformy ve výstupní vazbě vynechána, je možné použít oznámení šablony k cílení na libovolnou platformu nakonfigurovanou v Centru oznámení Azure. Další informace o obecném použití šablon k odesílání oznámení napříč platformami pomocí centra oznámení Azure najdete v tématu Šablony. Při nastavení musí být platformou jedna z následujících hodnot:
|
Při místním vývoji přidejte nastavení aplikace do souboru local.settings.json v kolekci Values
.
Příklad souboru function.json
Tady je příklad vazby Notification Hubs v souboru function.json .
{
"bindings": [
{
"type": "notificationHub",
"direction": "out",
"name": "notification",
"tagExpression": "",
"hubName": "my-notification-hub",
"connection": "MyHubConnectionString",
"platform": "apns"
}
],
"disabled": false
}
Nastavení připojovacího řetězce
Pokud chcete použít výstupní vazbu centra oznámení, musíte pro centrum nakonfigurovat připojovací řetězec. Můžete vybrat existující centrum oznámení nebo vytvořit nové přímo na kartě Integrace v Azure Portal. Připojovací řetězec můžete nakonfigurovat také ručně.
Konfigurace připojovacího řetězce k existujícímu centru oznámení:
- V Azure Portal přejděte do centra oznámení, zvolte Zásady přístupu a vyberte tlačítko kopírování vedle zásady DefaultFullSharedAccessSignature. Tím zkopírujete připojovací řetězec pro zásadu DefaultFullSharedAccessSignature do centra oznámení. Tento připojovací řetězec umožňuje funkci odesílat zprávy oznámení do centra.
- V Azure Portal přejděte do aplikace funkcí, zvolte Nastavení aplikace, přidejte klíč, například MyHubConnectionString, jako hodnotu vložte zkopírovanou hodnotu DefaultFullSharedAccessSignature pro centrum oznámení a klikněte na Uložit.
Název tohoto nastavení aplikace je to, co je součástí nastavení připojení výstupní vazby v souboru function.json nebo atributu .NET. Viz část Konfigurace výše v tomto článku.
Při místním vývoji přidejte nastavení aplikace do souboru local.settings.json v kolekci Values
.
Výjimky a návratové kódy
Vazba | Reference |
---|---|
Centrum oznámení | Provozní příručka |