Bagikan melalui


Pengikatan output Azure Notification Hubs untuk Azure Functions

Artikel ini menjelaskan cara mengirim pemberitahuan push dengan menggunakan pengikatan Azure Notification Hubs di Azure Functions. Azure Functions mendukung pengikatan output untuk Notification Hubs.

Anda harus mengonfigurasi Notification Hubs untuk Platform Notifications Service (PNS) yang ingin Anda gunakan. Untuk informasi selengkapnya tentang cara mendapatkan pemberitahuan push di aplikasi klien Anda dari Notification Hubs, lihat Mulai Cepat: Menyiapkan pemberitahuan push di hub pemberitahuan.

Penting

Google telah menghentikan Google Cloud Messaging (GCM) yang mendukung Firebase Cloud Messaging (FCM). Namun, pengikatan output untuk Notification Hubs tidak mendukung FCM. Untuk mengirim pemberitahuan menggunakan FCM, gunakan Firebase API langsung di fungsi Anda atau gunakan pemberitahuan templat.

Paket: Functions 1.x

Pengikatan Notification Hubs diberikan di paket Microsoft.Azure.WebJobs.Extensions.NotificationHubs NuGet, versi 1.x. Kode sumber untuk paket berada di repositori GitHub azure-webjobs-sdk-extensions.

Tabel berikut ini mencantumkan cara menambahkan dukungan untuk pengikatan output di setiap lingkungan pengembangan.

Lingkungan pengembangan Untuk menambahkan dukungan di Functions 1.x
Pengembangan lokal: Pustaka kelas C# Instal paket
Pengembangan lokal: skrip C#, JavaScript, F# Otomatis
Pengembangan portal Otomatis

Paket: Functions 2.x dan yang lebih tinggi

Pengikatan output tidak tersedia di Functions 2.x dan yang lebih tinggi.

Contoh: templat

Pemberitahuan yang Anda kirim dapat berupa pemberitahuan asli atau pemberitahuan templat. Pemberitahuan asli menargetkan platform klien tertentu, seperti yang dikonfigurasi dalam platform properti pengikatan output. Pemberitahuan templat dapat digunakan untuk menargetkan beberapa platform.

Contoh templat untuk setiap bahasa:

Contoh templat skrip C#: parameter keluar

Contoh ini mengirimkan pemberitahuan untuk pendaftaran templat yang berisi message tempat penampung dalam templat:

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

Contoh templat skrip C#: asinkron

Jika Anda menggunakan kode asinkron, parameter keluar tidak diizinkan. Dalam hal ini, gunakan IAsyncCollector untuk mengembalikan pemberitahuan templat Anda. Kode berikut adalah contoh asinkron dari contoh sebelumnya:

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

Contoh templat skrip C#: JSON

Contoh ini mengirimkan pemberitahuan untuk pendaftaran templat yang berisi message tempat penampung dalam templat menggunakan string JSON yang valid:

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

Contoh templat skrip C#: jenis pustaka

Contoh ini memperlihatkan cara menggunakan jenis yang ditentukan dalam Pustaka 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);
}

Contoh templat F#

Contoh ini mengirimkan pemberitahuan untuk pendaftaran templat yang berisi location dan message:

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

Contoh templat JavaScript

Contoh ini mengirimkan pemberitahuan untuk pendaftaran templat yang berisi location dan 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!"
    };
};

Contoh: APNS asli

Contoh skrip C# ini menunjukkan cara mengirim pemberitahuan Apple Push Notification Service (APNS) asli:

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

Contoh: WNS asli

Contoh skrip C# ini menunjukkan cara menggunakan jenis yang ditentukan di Pustaka Microsoft Azure Notification Hubs untuk mengirim pemberitahuan toast Windows Push Notification Service (WNS) asli:

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

Atribut

Di Pustaka kelas C#, gunakan atribut NotificationHub.

Parameter dan properti konstruktor atribut dijelaskan di bagian Konfigurasi .

Konfigurasi

Tabel berikut mencantumkan properti konfigurasi pengikatan yang Anda tetapkan dalam file function.json dan NotificationHub atribut :

Properti function.json Properti atribut Deskripsi
jenis n/a Atur ke notificationHub.
arah n/a Atur ke out.
nama n/a Nama variabel yang digunakan dalam kode fungsi untuk pesan hub pemberitahuan.
tagExpression TagExpression Ekspresi tag memungkinkan Anda menentukan bahwa pemberitahuan dikirimkan ke sekumpulan perangkat yang terdaftar untuk menerima pemberitahuan yang cocok dengan ekspresi tag. Untuk informasi selengkapnya, lihat Perutean dan ekspresi tag.
hubName HubName Nama sumber daya hub pemberitahuan di portal Azure.
koneksi ConnectionStringSetting Nama pengaturan aplikasi yang berisi string koneksi Notification Hubs. Atur string koneksi ke nilai DefaultFullSharedAccessSignature untuk hub pemberitahuan Anda. Untuk informasi selengkapnya, lihat Penyiapan string koneksi.
platform Platform Properti platform menunjukkan platform klien yang menjadi target pemberitahuan Anda. Secara default, jika properti platform dihilangkan dari pengikatan output, pemberitahuan templat dapat digunakan untuk menargetkan platform apa pun yang dikonfigurasikan di Azure Notification Hub. Untuk informasi selengkapnya tentang menggunakan templat untuk mengirim pemberitahuan lintas platform dengan Azure Notification Hub, lihat Templat Notification Hubs. Ketika platform diatur, platform harus menjadi salah satu nilai berikut:

Ketika Anda mengembangkan secara lokal, tambahkan pengaturan aplikasi di file local.settings.json dalam koleksi Values.

contoh file function.json

Berikut adalah contoh pengikatan Notification Hubs dalam file function.json :

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

Penyiapan string koneksi

Untuk menggunakan pengikatan output hub pemberitahuan, Anda harus mengonfigurasikan string koneksi untuk hub. Anda dapat memilih hub pemberitahuan yang sudah ada atau membuat yang baru dari tab Integrasikan di portal Azure. Anda juga dapat mengonfigurasikan string koneksi secara manual.

Untuk mengonfigurasikan string koneksi ke hub pemberitahuan yang ada:

  1. Navigasi ke hub pemberitahuan Anda di portal Azure, pilih Kebijakan akses, dan pilih tombol salin di sebelah kebijakan DefaultFullSharedAccessSignature.

    String koneksi untuk kebijakan DefaultFullSharedAccessSignature disalin ke hub pemberitahuan Anda. String koneksi ini memungkinkan fungsi Anda mengirim pesan pemberitahuan ke hub. Cuplikan layar yang memperlihatkan cara menyalin hub pemberitahuan string koneksi.

  2. Navigasi ke aplikasi fungsi Anda di portal Azure, perluas Pengaturan, lalu pilih Variabel lingkungan.

  3. Dari tab Pengaturan aplikasi, pilih + Tambahkan untuk menambahkan kunci seperti MyHubConnectionString. Nama pengaturan aplikasi ini adalah pengaturan koneksi pengikatan output di function.json atau atribut .NET. Untuk informasi lebih lanjut, lihat Konfigurasi.

  4. Untuk nilai , tempelkan defaultFullSharedAccessSignature yang disalin string koneksi dari hub pemberitahuan Anda, lalu pilih Terapkan.

Ketika Anda mengembangkan secara lokal, tambahkan pengaturan aplikasi di file local.settings.json dalam koleksi Values.

Kode pengecualian dan pengembalian

Pengikatan Referensi
Notification Hub Panduan Operasi