Azure Functions Notification Hubs kimeneti kötéseNotification Hubs output binding for Azure Functions

Ez a cikk azt ismerteti, hogyan küldhet leküldéses értesítéseket az Azure Notification Hubs -kötések használatával Azure Functionsban.This article explains how to send push notifications by using Azure Notification Hubs bindings in Azure Functions. Azure Functions támogatja a Notification Hubs kimeneti kötéseit.Azure Functions supports output bindings for Notification Hubs.

Az Azure Notification Hubs-t konfigurálni kell a használni kívánt platform Notifications szolgáltatáshoz (PNS).Azure Notification Hubs must be configured for the Platform Notifications Service (PNS) you want to use. Ha meg szeretné tudni, hogyan kérhet le leküldéses értesítéseket az ügyfélalkalmazás Notification Hubsről, tekintse meg a Notification Hubs első lépéseivel foglalkozó témakört, és válassza ki a cél ügyféloldali platformot a lap tetején található legördülő listából.To learn how to get push notifications in your client app from Notification Hubs, see Getting started with Notification Hubs and select your target client platform from the drop-down list near the top of the page.

Ez az információ az Azure Functions-fejlesztők számára.This is reference information for Azure Functions developers. Ha most ismerkedik az Azure Functions, indítsa el az alábbi forrásanyagokat:If you're new to Azure Functions, start with the following resources:

Fontos

A Google elavult Google Cloud Messaging (GCM) a Firebase Cloud Messaging (FCM) javára.Google has deprecated Google Cloud Messaging (GCM) in favor of Firebase Cloud Messaging (FCM). Ez a kimeneti kötés nem támogatja az FCM-et.This output binding doesn't support FCM. Ha az FCM használatával szeretne értesítéseket küldeni, használja a Firebase API -t közvetlenül a függvényében, vagy használja a sablonra vonatkozó értesítéseket.To send notifications using FCM, use the Firebase API directly in your function or use template notifications.

Csomagok – 1.x függvényekPackages - Functions 1.x

A Notification Hubs kötések a Microsoft. Azure. webjobs. Extensions. NotificationHubs NuGet csomagban találhatók, 1. x verzióban.The Notification Hubs bindings are provided in the Microsoft.Azure.WebJobs.Extensions.NotificationHubs NuGet package, version 1.x. A csomag forráskódja az Azure-webjobs-SDK-Extensions GitHub- tárházban található.Source code for the package is in the azure-webjobs-sdk-extensions GitHub repository.

Az alábbi táblázat bemutatja, hogyan lehet ezt a kötést támogatása hozzáadva minden fejlesztési környezetben.The following table tells how to add support for this binding in each development environment.

Fejlesztési környezetDevelopment environment A támogatás hozzáadásaTo add support in
Functions 1.xFunctions 1.x
Helyi fejlesztés – C# osztálytárLocal development - C# class library A csomag telepítéseInstall the package
Helyi fejlesztés – C# parancsfájl, JavaScript,F#Local development - C# script, JavaScript, F# AutomatikusAutomatic
A fejlesztői portálPortal development AutomatikusAutomatic

Csomagok – 2.x függvényekPackages - Functions 2.x

Ez a kötés nem érhető el a 2. x függvényben.This binding is not available in Functions 2.x.

Példa – sablonExample - template

Az Ön által küldött értesítések lehetnek natív értesítések vagy sablon-értesítések.The notifications you send can be native notifications or template notifications. A natív értesítések egy adott ügyféloldali platformot céloznak meg platform , amely a kimeneti kötés tulajdonságában van konfigurálva.Native notifications target a specific client platform as configured in the platform property of the output binding. A sablonokkal kapcsolatos értesítések több platform megcélzására is használhatók.A template notification can be used to target multiple platforms.

Tekintse meg az adott nyelvű példa:See the language-specific example:

C#parancsfájl-sablon – példa – kimenő paraméterC# script template example - out parameter

Ez a példa egy olyan sablon- regisztrációra vonatkozó értesítést küld message , amely tartalmaz egy helyőrzőt a sablonban.This example sends a notification for a template registration that contains a message placeholder in the template.

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;
}

C#Példa parancsfájl-sablonra – aszinkronC# script template example - asynchronous

Aszinkron kód használata esetén a kimenő paraméterek nem engedélyezettek.If you are using asynchronous code, out parameters are not allowed. Ebben az esetben használja IAsyncCollector a sablon értesítésének visszaküldését.In this case use IAsyncCollector to return your template notification. A következő kód egy aszinkron példa a fenti kódra.The following code is an asynchronous example of the code above.

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;
}

C#Példa a parancsfájl sablonra – JSONC# script template example - JSON

Ez a példa egy olyan sablon- regisztrációra vonatkozó értesítést küld message , amely egy érvényes JSON-karakterlánc használatával helyőrzőt tartalmaz a sablonban.This example sends a notification for a template registration that contains a message placeholder in the template using a valid JSON string.

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!\"}";
}

C#parancsfájl-sablon – példa – típustár-típusokC# script template example - library types

Ez a példa bemutatja, hogyan használhatók a Microsoft Azure Notification Hubs könyvtárbandefiniált típusok.This example shows how to use types defined in the 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);
}

F#Példa sablonraF# template example

Ez a példa a és a- t tartalmazó location sablon- messageregisztrációra vonatkozó értesítést küld.This example sends a notification for a template registration that contains location and message.

let Run(myTimer: TimerInfo, notification: byref<IDictionary<string, string>>) =
    notification = dict [("location", "Redmond"); ("message", "Hello from F#!")]

Példa JavaScript-sablonraJavaScript template example

Ez a példa a és a- t tartalmazó location sablon- messageregisztrációra vonatkozó értesítést küld.This example sends a notification for a template registration that contains location and message.

module.exports = 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!"
    };
    context.done();
};

Példa – natív APNSExample - APNS native

Ez C# a szkript bemutatja, hogyan küldhet egy natív APNS-értesítést.This C# script example shows how to send a native APNS notification.

#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 WNSExample - WNS native

Ez C# a szkript bemutatja, hogyan használhatók a Microsoft Azure Notification Hubs könyvtárban definiált típusok egy natív WNS-bejelentési értesítés küldéséhez.This C# script example shows how to use types defined in the Microsoft Azure Notification Hubs Library to send a native WNS toast notification.

#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útumokAttributes

Az C# osztályok könyvtáraibanhasználja a NotificationHub attribútumot.In C# class libraries, use the NotificationHub attribute.

Az attribútum konstruktorának paraméterei és tulajdonságai a konfiguráció szakaszban olvashatók.The attribute's constructor parameters and properties are described in the configuration section.

KonfigurációConfiguration

A következő táblázat ismerteti a function. JSON fájlban és az NotificationHub attribútumban beállított kötési konfigurációs tulajdonságokat:The following table explains the binding configuration properties that you set in the function.json file and the NotificationHub attribute:

Function.JSON tulajdonságfunction.json property Attribútum tulajdonságaAttribute property LeírásDescription
typetype n/an/a "NotificationHub" értékre kell állítani.Must be set to "notificationHub".
directiondirection n/an/a Állítsa "out".Must be set to "out".
namename n/an/a Az értesítési központ üzenetének függvény kódjában használt változó neve.Variable name used in function code for the notification hub message.
tagExpressiontagExpression TagExpressionTagExpression A címkézési kifejezések lehetővé teszik annak megadását, hogy a rendszer az értesítéseket a címkével megegyező értesítések fogadására regisztrált eszközök egy csoportjának adja meg.Tag expressions allow you to specify that notifications be delivered to a set of devices that have registered to receive notifications that match the tag expression. További információ: útválasztási és címkézési kifejezések.For more information, see Routing and tag expressions.
hubNamehubName HubNameHubName Az értesítési központ erőforrásának neve a Azure Portalban.Name of the notification hub resource in the Azure portal.
kapcsolatconnection ConnectionStringSettingConnectionStringSetting Egy Notification Hubs-kapcsolatok sztringjét tartalmazó Alkalmazásbeállítás neve.The name of an app setting that contains a Notification Hubs connection string. A kapcsolódási karakterláncot az értesítési központ DefaultFullSharedAccessSignature értékére kell beállítani.The connection string must be set to the DefaultFullSharedAccessSignature value for your notification hub. A jelen cikk későbbi, a kapcsolatok karakterláncának beállítása című szakaszban talál.See Connection string setup later in this article.
platformplatform PlatformPlatform A platform tulajdonság az értesítési célokhoz tartozó ügyféloldali platformot jelzi.The platform property indicates the client platform your notification targets. Alapértelmezés szerint, ha a platform tulajdonságot kihagyja a kimeneti kötésből, a sablonok értesítései az Azure Notification hub-ban konfigurált platformok célzására használhatók.By default, if the platform property is omitted from the output binding, template notifications can be used to target any platform configured on the Azure Notification Hub. Ha többet szeretne megtudni arról, hogyan használhatók a sablonok a platformfüggetlen értesítések Azure Notification hub használatával történő küldéséhez, tekintse meg a sablonokcímű témakört.For more information on using templates in general to send cross platform notifications with an Azure Notification Hub, see Templates. Ha be van állítva, a platformnak a következő értékek egyikének kell lennie:When set, platform must be one of the following values:

Ha helyileg fejleszt, Alkalmazásbeállítások lépnek a local.settings.json fájljában.When you're developing locally, app settings go into the local.settings.json file.

Példa a function. JSON fájlrafunction.json file example

Íme egy példa egy Notification Hubs kötésre egy function. JSON fájlban.Here's an example of a Notification Hubs binding in a function.json file.

{
  "bindings": [
    {
      "type": "notificationHub",
      "direction": "out",
      "name": "notification",
      "tagExpression": "",
      "hubName": "my-notification-hub",
      "connection": "MyHubConnectionString",
      "platform": "apns"
    }
  ],
  "disabled": false
}

A kapcsolatok karakterláncának beállításaConnection string setup

Az értesítési központ kimeneti kötésének használatához konfigurálnia kell a hub kapcsolati karakterláncát.To use a notification hub output binding, you must configure the connection string for the hub. Kiválaszthat egy meglévő értesítési központot, vagy létrehozhat egy újat közvetlenül a Azure Portal integrálás lapján.You can select an existing notification hub or create a new one right from the Integrate tab in the Azure portal. A kapcsolatok karakterláncát manuálisan is konfigurálhatja.You can also configure the connection string manually.

A kapcsolódási karakterlánc konfigurálása meglévő értesítési központhoz:To configure the connection string to an existing notification hub:

  1. Nyissa meg az értesítési központot a Azure Portalban, válassza a hozzáférési szabályzatoklehetőséget, és kattintson a DefaultFullSharedAccessSignature szabályzat melletti Másolás gombra.Navigate to your notification hub in the Azure portal, choose Access policies, and select the copy button next to the DefaultFullSharedAccessSignature policy. Ezzel átmásolja a DefaultFullSharedAccessSignature szabályzathoz tartozó kapcsolódási karakterláncot az értesítési központba.This copies the connection string for the DefaultFullSharedAccessSignature policy to your notification hub. Ez a kapcsolódási karakterlánc lehetővé teszi, hogy a függvény értesítési üzeneteket küldjön a hubhoz.This connection string lets your function send notification messages to the hub. Az értesítési központ kapcsolatok karakterláncának másolásaCopy the notification hub connection string
  2. Keresse meg a Function alkalmazást a Azure Portalban, válassza az Alkalmazásbeállításoklehetőséget, adjon hozzá egy kulcsot, például a MyHubConnectionString, illessze be az értesítési központ átmásolt DefaultFullSharedAccessSignature az értékként, majd kattintson a Mentés.Navigate to your function app in the Azure portal, choose Application settings, add a key such as MyHubConnectionString, paste the copied DefaultFullSharedAccessSignature for your notification hub as the value, and then click Save.

Ennek az alkalmazásnak a neve a function. JSON vagy a .NET attribútum kimeneti kötési kapcsolatának beállítása.The name of this application setting is what goes in the output binding connection setting in function.json or the .NET attribute. Tekintse meg a jelen cikk korábbi, konfigurációs szakaszát .See the Configuration section earlier in this article.

Ha helyileg fejleszt, Alkalmazásbeállítások lépnek a local.settings.json fájljában.When you're developing locally, app settings go into the local.settings.json file.

Kivételek és a visszatérési kódokExceptions and return codes

KötésBinding HivatkozásReference
Értesítési központNotification Hub Üzemeltetési útmutatóOperations Guide

További lépésekNext steps