Pengikatan output 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.

Azure Notification Hubs harus dikonfigurasikan untuk Layanan Pemberitahuan Platform (PNS) yang ingin Anda gunakan. Untuk mempelajari cara mendapatkan pemberitahuan push di aplikasi klien Anda dari Notification Hubs, lihat Mulai menggunakan Notification Hubs dan pilih platform klien target Anda dari daftar menurun di dekat bagian atas halaman.

Penting

Google telah menghentikan Google Cloud Messaging (GCM) yang mendukung Firebase Cloud Messaging (FCM). Pengikatan output ini 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 memberi tahu cara menambahkan dukungan untuk pengikatan ini di setiap lingkungan pengembangan.

Pengembangan lingkungan 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 ini 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 dikonfigurasikan dalam properti platform pengikatan output. Pemberitahuan templat dapat digunakan untuk menargetkan beberapa platform.

Lihat contoh spesifik bahasa:

Contoh templat skrip C# - parameter keluar

Contoh ini mengirimkan pemberitahuan untuk pendaftaran templat yang berisi tempat penampung message di 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 kode di atas.

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 tempat penampung message di 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 menunjukkan cara menggunakan jenis yang ditentukan di 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 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 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 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 menjelaskan properti konfigurasi pengikatan yang Anda atur di file function.json dan atribut NotificationHub:

properti function.json Properti atribut Deskripsi
jenis n/a Harus diatur ke notificationHub.
petunjuk n/a Harus diatur 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 grup perangkat yang telah 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.
connection ConnectionStringSetting Nama pengaturan aplikasi yang berisi string koneksi Notification Hubs. String koneksi harus diatur ke nilai DefaultFullSharedAccessSignature untuk hub pemberitahuan Anda. Lihat Penyiapan string koneksi nanti di artikel ini.
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 secara umum untuk mengirim pemberitahuan lintas platform dengan Azure Notification Hub, lihat Templat. Saat diatur, platform harus berupa salah satu dari nilai berikut:

Saat Anda mengembangkan secara lokal, tambahkan pengaturan aplikasi Anda 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 ada atau membuat yang baru langsung dari tab Integrasi 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. Ini menyalin string koneksi untuk kebijakan DefaultFullSharedAccessSignature ke hub pemberitahuan Anda. String koneksi ini memungkinkan fungsi Anda mengirim pesan pemberitahuan ke hub. Menyalin string koneksi hub pemberitahuan
  2. Navigasikan ke aplikasi fungsi di portal Azure, pilih Pengaturan aplikasi, tambahkan kunci seperti MyHubConnectionString, tempel DefaultFullSharedAccessSignature yang telah disalin untuk hub pemberitahuan sebagai nilai, lalu klik Simpan.

Nama pengaturan aplikasi ini adalah apa yang masuk dalam pengaturan koneksi pengikatan output di function.json atau atribut .NET. Lihat bagian Konfigurasi sebelumnya di artikel ini.

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

Kode pengecualian dan pengembalian

Pengikatan Referensi
Notification Hub Panduan Operasi

Langkah berikutnya