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

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:

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 notificationHubwartość .
Kierunku n/d Musi być ustawiona na outwartość .
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ń:

  1. 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. Kopiowanie parametrów połączenia centrum powiadomień
  2. 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

Następne kroki