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:

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 notificationHubhodnotu .
Směru Není k dispozici Musí být nastavena na outhodnotu .
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í:

  1. 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. Zkopírování připojovacího řetězce centra oznámení
  2. 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

Další kroky