Sdílet prostřednictvím


Výstupní vazby služby Azure Notification Hubs pro Azure Functions

Tento článek vysvětluje, jak odesílat nabízená oznámení pomocí vazeb Azure Notification Hubs ve službě Azure Functions. Azure Functions podporuje výstupní vazby pro Notification Hubs.

Musíte nakonfigurovat Notification Hubs pro službu oznámení platformy (PNS), kterou chcete použít. Další informace o tom, jak získat nabízená oznámení v klientské aplikaci z Notification Hubs, najdete v tématu Rychlý start: Nastavení nabízených oznámení v centru oznámení.

Důležité

Google přestal používat službu Google Cloud Messaging (GCM) ve prospěch služby Firebase Cloud Messaging (FCM). Výstupní vazby pro Notification Hubs ale nepodporují 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 pro modul 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 GitHubu pro azure-webjobs-sdk-extensions .

Následující tabulka uvádí, jak přidat podporu výstupní vazby v každém vývojovém prostředí.

Vývojové prostředí Přidání podpory ve službě Functions 1.x
Místní vývoj: Knihovna tříd jazyka C# Instalace balíčku
Místní vývoj: skript jazyka C#, JavaScript, F# Automatic (Automaticky)
Vývoj portálu Automatic (Automaticky)

Balíčky: Functions 2.x a vyšší

Výstupní vazba není dostupná ve službě Functions 2.x a vyšší.

Příklad: šablona

Odesílaná oznámení můžou být nativní oznámení nebo oznámení šablon. Nativní oznámení cílí na konkrétní klientskou platformu, jak je nakonfigurováno ve platform vlastnosti výstupní vazby. K cílení na více platforem je možné použít oznámení šablony.

Příklady šablon pro každý jazyk:

Příklad šablony skriptu jazyka C#: out parameter

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, parametry nejsou povolené. V tomto případě použijte IAsyncCollector k vrácení oznámení šablony. Následující kód je asynchronní příklad předchozího příkladu:

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 jazyka C#: typy knihoven

Tento příklad ukazuje, jak používat typy definované v knihovně 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);
}

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 C# ukazuje, jak odeslat nativní oznámení Apple Push Notification Service (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 Apple Push Notification Service (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 použití typů definovaných v knihovně Microsoft Azure Notification Hubs k odeslání nativního oznámení služby WNS (Windows Push Notification Service):

#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 uvádí vlastnosti konfigurace vazeb, které jste nastavili v souboru function.json a atributu NotificationHub :

vlastnost function.json Vlastnost atributu Popis
type Není k dispozici Nastavte na notificationHub.
direction Není k dispozici Nastavte na out.
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, že se oznámení doručují do sady zařízení registrovaných k přijímání oznámení odpovídajících 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í na webu Azure Portal.
připojení ConnectionStringSetting Název nastavení aplikace, které obsahuje připojovací řetězec Notification Hubs. Nastavte připojovací řetězec na hodnotu DefaultFullSharedAccessSignature pro vaše centrum oznámení. Další informace naleznete v tématu Nastavení připojovacího řetězce.
nástupiště Platforma Vlastnost platformy označuje klientskou platformu, na které cílí oznámení. Pokud vlastnost platformy není ve výstupní vazbě vynechána, můžete oznámení šablony použít k cílení na libovolnou platformu nakonfigurovanou v Centru oznámení Azure. Další informace o použití šablon k odesílání oznámení mezi platformami pomocí centra oznámení Azure najdete v tématu Šablony Notification Hubs. Při nastavení platformy musí být 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é na kartě Integrace na webu Azure Portal. Můžete také nakonfigurovat připojovací řetězec ručně.

Konfigurace připojovací řetězec do existujícího centra oznámení:

  1. Na webu Azure Portal přejděte do centra oznámení, zvolte zásady přístupu a vyberte tlačítko kopírování vedle zásad DefaultFullSharedAccessSignature.

    Připojovací řetězec pro zásadu DefaultFullSharedAccessSignature se zkopíruje do centra oznámení. Tato připojovací řetězec umožňuje vaší funkci odesílat zprávy s oznámeními do centra. Snímek obrazovky, který ukazuje, jak zkopírovat centrum oznámení připojovací řetězec

  2. Přejděte do aplikace funkcí na webu Azure Portal, rozbalte Nastavení a pak vyberte Proměnné prostředí.

  3. Na kartě Nastavení aplikace vyberte + Přidat a přidejte klíč, například MyHubConnectionString. Název tohoto nastavení aplikace je nastavení připojení výstupní vazby v function.json nebo atributu .NET. Další informace najdete v tématu Konfigurace.

  4. Jako hodnotu vložte zkopírovanou hodnotu DefaultFullSharedAccessSignature připojovací řetězec z centra oznámení a pak vyberte Použít.

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