Megosztás a következőn keresztül:


Azure Notification Hubs kimeneti kötések az Azure Functionshez

Ez a cikk bemutatja, hogyan küldhet leküldéses értesítéseket az Azure Notification Hubs-kötések használatával az Azure Functionsben. Az Azure Functions támogatja a Notification Hubs kimeneti kötéseit.

Konfigurálnia kell a Notification Hubs szolgáltatást a használni kívánt platformértesítési szolgáltatáshoz (PNS). További információ arról, hogyan kérhet leküldéses értesítéseket az ügyfélalkalmazásban a Notification Hubsból: Rövid útmutató: Leküldéses értesítések beállítása értesítési központban.

Fontos

A Google elavult Google Cloud Messaging (GCM) a Firebase Cloud Messaging (FCM) javára. A Notification Hubs kimeneti kötései azonban nem támogatják 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

A Notification Hubs-kötések a Microsoft.Azure.WebJobs.Extensions.NotificationHubs NuGet csomag 1.x-es 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 a kimeneti kötéshez az egyes fejlesztési környezetekben.

Fejlesztői környezet Támogatás hozzáadása a Functions 1.x-ben
Helyi fejlesztés: C# osztálykódtár A csomag telepítése
Helyi fejlesztés: C# szkript, JavaScript, F# Automatikus
Portál fejlesztése Automatikus

Csomagok: Functions 2.x és újabb

A kimeneti 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 kimeneti kötés tulajdonságában platform konfigurálva. A sablonértesítések több platformot is megcélzhatnak.

Sablon példák az egyes nyelvekhez:

Példa C#-szkriptsablonra: out parameter

Ez a példa egy olyan sablonregisztrációról küld értesítést, amely egy helyőrzőt message tartalmaz 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 sablonértesítés visszaküldésére használható IAsyncCollector . Az alábbi kód egy aszinkron példa az előző példára:

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 egy olyan sablonregisztrációról küld értesítést, 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 a Microsoft Azure Notification Hubs-kódtárban definiált típusok használatát mutatja be:

#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 egy olyan sablonregisztrációról küld értesítést, amely tartalmazza location a következőtmessage:

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 egy olyan sablonregisztrációról küld értesítést, amely tartalmazza location a következőtmessage:

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 Apple Push Notification Service (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 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élda: natív WNS

Ez a C#-példaszkript bemutatja, hogyan használhatja a Microsoft Azure Notification Hubs-kódtárban definiált típusokat natív Windows Push Notification Service (WNS) bejelentési értesítés küldéséhez:

#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ó szakasz ismerteti.

Konfiguráció

Az alábbi táblázat a function.json fájlban és az attribútumban beállított kötéskonfigurációs tulajdonságokat sorolja felNotificationHub:

function.json tulajdonság Attribútumtulajdonság Leírás
type n.a. Állítsa notificationHub értékre.
direction n.a. Állítsa out értékre.
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ás és címkekifejezések.
hubName HubName Az értesítési központ erőforrásának neve az Azure Portalon.
kapcsolat ConnectionStringSetting A Notification Hubs-kapcsolati sztring tartalmazó alkalmazásbeállítás neve. Állítsa a kapcsolati sztring az értesítési központ AlapértelmezettFullSharedAccessSignature értékére. További információ: Kapcsolati sztring beállítása.
peron Peron A platformtulajdonság az értesítési célokat jelző ügyfélplatformot jelzi. Alapértelmezés szerint, ha a platformtulajdonság hiányzik a kimeneti kötésből, a sablonértesítések az Azure Notification Hubon konfigurált platformokat célozhatják meg. Ha többet szeretne tudni arról, hogy sablonokkal küldhet platformfüggetlen értesítéseket egy Azure Notification Hub használatával, tekintse meg a Notification Hubs-sablonokat. A platform beállításakor az alábbi é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.

példa function.json fájlra

Í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 központ kapcsolati sztring. Kiválaszthat egy meglévő értesítési központot, vagy létrehozhat egy újat az Azure Portal Integrálás lapján. A kapcsolati sztring manuálisan is konfigurálhatja.

A kapcsolati sztring konfigurálása meglévő értesítési központra:

  1. Lépjen az értesítési központra az Azure Portalon, válassza az Access-szabályzatokat, és válassza a Másolás gombot a DefaultFullSharedAccessSignature szabályzat mellett.

    A DefaultFullSharedAccessSignature szabályzat kapcsolati sztring át lesz másolva 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. Képernyőkép az értesítési központ kapcsolati sztring másolásáról.

  2. Lépjen a függvényalkalmazásra az Azure Portalon, bontsa ki a Beállítások elemet, majd válassza a Környezeti változók lehetőséget.

  3. Az Alkalmazásbeállítás lapon válassza a + Hozzáadás lehetőséget egy olyan kulcs hozzáadásához, mint a MyHubConnectionString. Ennek az alkalmazásbeállításnak a neve a kimeneti kötés kapcsolati beállítása function.json vagy a .NET attribútumban. További információ: Konfiguráció.

  4. Az értékhez illessze be a másolt DefaultFullSharedAccessSignature kapcsolati sztring az értesítési központból, majd válassza az Alkalmaz lehetőséget.

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ó