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
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 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:
- Skrip C# - parameter keluar
- Skrip C# - asinkron
- Skrip C# - JSON
- Skrip C# - jenis pustaka
- F#
- JavaScript
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:
- 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.
- 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 |