Notification Hubs kimeneti kötés a Azure Functions
Ez a cikk bemutatja, hogyan küldhet leküldéses értesítéseket az Azure Notification Hubs-kötések használatával Azure Functions. Azure Functions támogatja a Notification Hubs kimeneti kötéseit.
Az Azure Notification Hubsot konfigurálni kell a használni kívánt platformértesítési szolgáltatáshoz (PNS). Ha meg szeretné tudni, hogyan kérhet leküldéses értesítéseket az ügyfélalkalmazásban a Notification Hubsból, olvassa el az Ismerkedés a Notification Hubs szolgáltatással című témakört, és válassza ki a cél ügyfélplatformot a lap tetején található legördülő listából.
Fontos
A Google elavult Google Cloud Messaging (GCM) a Firebase Cloud Messaging (FCM) javára. Ez a kimeneti kötés nem támogatja az FCM-et. Ha az FCM használatával szeretne értesítéseket küldeni, használja a Firebase API-t közvetlenül a függvényben, vagy használjon sablonértesítéseket.
Csomagok – Functions 1.x
Fontos
A Azure Functions futtatókörnyezet 1.x verziójának támogatása 2026. szeptember 14-én megszűnik. Határozottan javasoljuk, hogy a teljes támogatás érdekében telepítse át az alkalmazásokat a 4.x verzióra .
A Notification Hubs-kötések a Microsoft.Azure.WebJobs.Extensions.NotificationHubs NuGet-csomag 1.x verziójában érhetők el. A csomag forráskódja az azure-webjobs-sdk-extensions GitHub-adattárban található.
Az alábbi táblázat bemutatja, hogyan adhat támogatást ehhez a kötéshez az egyes fejlesztési környezetekben.
Fejlesztési környezet | Támogatás hozzáadása a következőben: Functions 1.x |
---|---|
Helyi fejlesztés – C#-osztálytár | A csomag telepítése |
Helyi fejlesztés – C#-szkript, JavaScript, F# | Automatikus |
Portálfejlesztés | Automatikus |
Csomagok – Functions 2.x és újabb verziók
Ez a kötés nem érhető el a Functions 2.x és újabb verzióiban.
Példa – sablon
Az elküldött értesítések lehetnek natív értesítések vagy sablonértesítések. A natív értesítések egy adott ügyfélplatformot céloznak meg a platform
kimeneti kötés tulajdonságában konfigurált módon. A sablonértesítések több platformot is megcélzhatnak.
Tekintse meg a nyelvspecifikus példát:
- C#-szkript – out paraméter
- C#-szkript – aszinkron
- C#-szkript – JSON
- C#-szkript – kódtártípusok
- F#
- JavaScript
Példa C#-szkriptsablonra – out paraméter
Ez a példa értesítést küld egy sablonregisztrációról , amely tartalmaz egy message
helyőrzőt a sablonban.
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élda C#-szkriptsablonra – aszinkron
Ha aszinkron kódot használ, a kimenő paraméterek nem engedélyezettek. Ebben az esetben a használatával IAsyncCollector
adja vissza a sablonértesítést. Az alábbi kód a fenti kód aszinkron példája.
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élda C#-szkriptsablonra – JSON
Ez a példa értesítést küld egy sablonregisztrációról , amely egy érvényes JSON-sztringet használó helyőrzőt tartalmaz message
a sablonban.
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élda C#-szkriptsablonra – kódtártípusok
Ez a példa bemutatja, hogyan használhatja a Microsoft Azure Notification Hubs Könyvtárban definiált típusokat.
#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élda F#-sablonra
Ez a példa értesítést küld egy és message
elemet tartalmazó location
sablonregisztrációról.
let Run(myTimer: TimerInfo, notification: byref<IDictionary<string, string>>) =
notification = dict [("location", "Redmond"); ("message", "Hello from F#!")]
Példa JavaScript-sablonra
Ez a példa értesítést küld egy és message
elemet tartalmazó location
sablonregisztrációról.
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élda – APNS natív
Ez a C#-példaszkript bemutatja, hogyan küldhet natív APNS-értesítést.
#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élda – natív WNS
Ez a C#-példaszkript bemutatja, hogyan használható a Microsoft Azure Notification Hubs-kódtárban definiált típusok natív WNS bejelentési értesítés küldésére.
#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));
}
Attribútumok
A C#-osztálytárakban használja a NotificationHub attribútumot.
Az attribútum konstruktorparamétereit és tulajdonságait a konfigurációs szakasz ismerteti.
Konfiguráció
Az alábbi táblázat ismerteti a function.json fájlban és az NotificationHub
attribútumban beállított kötéskonfigurációs tulajdonságokat:
function.json tulajdonság | Attribútumtulajdonság | Description |
---|---|---|
Típus | n.a. | A értéket értékre kell állítani.notificationHub |
Irányba | n.a. | A értéket értékre kell állítani.out |
név | n.a. | Az értesítési központ üzenetének függvénykódjában használt változónév. |
tagExpression | TagExpression | A címkekifejezések lehetővé teszik annak megadását, hogy az értesítések a címkekifejezésnek megfelelő értesítések fogadásához regisztrált eszközökre érkeznek. További információ: Útválasztási és címkekifejezések. |
hubName | HubName | Az értesítési központ erőforrásának neve a Azure Portal. |
kapcsolat | ConnectionStringSetting | A Notification Hubs-kapcsolati sztring tartalmazó alkalmazásbeállítás neve. A kapcsolati sztring az értesítési központ DefaultFullSharedAccessSignature értékére kell állítani. A cikk későbbi részében lásd: Kapcsolati sztring beállítása . |
Platform | Platform | A platformtulajdonság azt az ügyfélplatformot jelzi, amely az értesítési célokat célozza. Alapértelmezés szerint, ha a platformtulajdonság nincs megadva a kimeneti kötésből, a sablonértesítések az Azure Notification Hubon konfigurált bármely platform megcélzására használhatók. További információ arról, hogy általában sablonok használatával küldhet platformfüggetlen értesítéseket egy Azure Notification Hubbal, lásd: Sablonok. Ha be van állítva, a platformnak a következő értékek egyikének kell lennie:
|
Helyi fejlesztéskor adja hozzá az alkalmazásbeállításokat a gyűjtemény local.settings.json fájljáhozValues
.
function.json fájl példa
Íme egy példa egy Notification Hubs-kötésre egy function.json fájlban.
{
"bindings": [
{
"type": "notificationHub",
"direction": "out",
"name": "notification",
"tagExpression": "",
"hubName": "my-notification-hub",
"connection": "MyHubConnectionString",
"platform": "apns"
}
],
"disabled": false
}
Kapcsolati sztring beállítása
Az értesítési központ kimeneti kötésének használatához konfigurálnia kell a kapcsolati sztring a központhoz. Kiválaszthat egy meglévő értesítési központot, vagy létrehozhat egy újat a Azure Portal Integrálás lapján. A kapcsolati sztring manuálisan is konfigurálhatja.
A kapcsolati sztring konfigurálása egy meglévő értesítési központra:
- Lépjen az értesítési központra a Azure Portal, válassza a Hozzáférési szabályzatok lehetőséget, és válassza a Másolás gombot a DefaultFullSharedAccessSignature szabályzat mellett. Ezzel átmásolja a DefaultFullSharedAccessSignature szabályzat kapcsolati sztring az értesítési központba. Ez a kapcsolati sztring lehetővé teszi, hogy a függvény értesítési üzeneteket küldjön a központnak.
- Keresse meg a függvényalkalmazást a Azure Portal, válassza az Alkalmazásbeállítások elemet, adjon hozzá egy kulcsot( például MyHubConnectionString), illessze be az értesítési központhoz tartozó defaultFullSharedAccessSignature elemet értékként, majd kattintson a Mentés gombra.
Ennek az alkalmazásbeállításnak a neve a függvény.json vagy a .NET attribútum kimeneti kötési kapcsolatbeállításában található. Lásd a cikk korábbi , Konfiguráció szakaszát .
Helyi fejlesztéskor adja hozzá az alkalmazásbeállításokat a gyűjtemény local.settings.json fájljáhozValues
.
Kivételek és visszatérési kódok
Kötés | Referencia |
---|---|
Notification Hubs | Üzemeltetési útmutató |