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
Penting
Dukungan akan berakhir untuk runtime Azure Functions versi 1.x pada 14 September 2026. Kami sangat menyarankan Agar Anda memigrasikan aplikasi Anda ke versi 4.x untuk dukungan penuh.
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:
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.
Navigasi ke aplikasi fungsi Anda di portal Azure, perluas Pengaturan, lalu pilih Variabel lingkungan.
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.
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 |