Notification Hubs kimeneti kötés a Azure Functions

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

Az Azure Notification Hubsot konfigurálni kell a használni kívánt platformértesítési szolgáltatáshoz (PNS). Ha meg szeretné tudni, hogyan kérhet leküldéses értesítéseket az ügyfélalkalmazásban a Notification Hubsból, olvassa el az Ismerkedés a Notification Hubs szolgáltatással című témakört, és válassza ki a cél ügyfélplatformot a lap tetején található legördülő listából.

Fontos

A Google elavult Google Cloud Messaging (GCM) a Firebase Cloud Messaging (FCM) javára. Ez a kimeneti kötés nem támogatja 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 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 ehhez a kötéshez az egyes fejlesztési környezetekben.

Fejlesztési környezet Támogatás hozzáadása a következőben:
Functions 1.x
Helyi fejlesztés – C#-osztálytár A csomag telepítése
Helyi fejlesztés – C#-szkript, JavaScript, F# Automatikus
Portálfejlesztés Automatikus

Csomagok – Functions 2.x és újabb verziók

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

Tekintse meg a nyelvspecifikus példát:

Példa C#-szkriptsablonra – out paraméter

Ez a példa értesítést küld egy sablonregisztrációról , amely tartalmaz egy message helyőrzőt 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 használatával IAsyncCollector adja vissza a sablonértesítést. Az alábbi kód a fenti kód aszinkron példája.

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 értesítést küld egy sablonregisztrációról , 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 bemutatja, hogyan használhatja a Microsoft Azure Notification Hubs Könyvtárban definiált típusokat.

#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 értesítést küld egy és messageelemet tartalmazó locationsablonregisztrációról.

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 értesítést küld egy és messageelemet tartalmazó locationsablonregisztrációról.

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 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 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álható a Microsoft Azure Notification Hubs-kódtárban definiált típusok natív WNS bejelentési értesítés küldésére.

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

Konfiguráció

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

function.json tulajdonság Attribútumtulajdonság Description
Típus n.a. A értéket értékre kell állítani.notificationHub
Irányba n.a. A értéket értékre kell állítani.out
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ási és címkekifejezések.
hubName HubName Az értesítési központ erőforrásának neve a Azure Portal.
kapcsolat ConnectionStringSetting A Notification Hubs-kapcsolati sztring tartalmazó alkalmazásbeállítás neve. A kapcsolati sztring az értesítési központ DefaultFullSharedAccessSignature értékére kell állítani. A cikk későbbi részében lásd: Kapcsolati sztring beállítása .
Platform Platform A platformtulajdonság azt az ügyfélplatformot jelzi, amely az értesítési célokat célozza. Alapértelmezés szerint, ha a platformtulajdonság nincs megadva a kimeneti kötésből, a sablonértesítések az Azure Notification Hubon konfigurált bármely platform megcélzására használhatók. További információ arról, hogy általában sablonok használatával küldhet platformfüggetlen értesítéseket egy Azure Notification Hubbal, lásd: Sablonok. Ha be van állítva, a platformnak a következő é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.

function.json fájl példa

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

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

  1. Lépjen az értesítési központra a Azure Portal, válassza a Hozzáférési szabályzatok lehetőséget, és válassza a Másolás gombot a DefaultFullSharedAccessSignature szabályzat mellett. Ezzel átmásolja a DefaultFullSharedAccessSignature szabályzat kapcsolati sztring 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. Az értesítési központ másolása kapcsolati sztring
  2. Keresse meg a függvényalkalmazást a Azure Portal, válassza az Alkalmazásbeállítások elemet, adjon hozzá egy kulcsot( például MyHubConnectionString), illessze be az értesítési központhoz tartozó defaultFullSharedAccessSignature elemet értékként, majd kattintson a Mentés gombra.

Ennek az alkalmazásbeállításnak a neve a függvény.json vagy a .NET attribútum kimeneti kötési kapcsolatbeállításában található. Lásd a cikk korábbi , Konfiguráció szakaszát .

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ó

Következő lépések