Aracılığıyla paylaş


Azure İşlevleri için Azure Notification Hubs çıkış bağlamaları

Bu makalede, Azure İşlevleri'da Azure Notification Hubs bağlamalarını kullanarak anında iletme bildirimleri gönderme işlemi açıklanmaktadır. Azure İşlevleri Notification Hubs için çıkış bağlamalarını destekler.

Kullanmak istediğiniz Platform Bildirim Hizmeti (PNS) için Notification Hubs'ı yapılandırmanız gerekir. Notification Hubs'dan istemci uygulamanıza anında iletme bildirimleri alma hakkında daha fazla bilgi için bkz . Hızlı Başlangıç: Bildirim hub'ında anında iletme bildirimlerini ayarlama.

Önemli

Google, Firebase Cloud Messaging (FCM) için Google Cloud Messaging'i (GCM) kullanımdan kaldırmıştır. Ancak Notification Hubs için çıkış bağlamaları FCM'yi desteklemez. FCM kullanarak bildirim göndermek için firebase API'sini doğrudan işlevinizde kullanın veya şablon bildirimlerini kullanın.

Paketler: İşlevler 1.x

Önemli

Azure İşlevleri çalışma zamanının 1.x sürümü için destek 14 Eylül 2026'da sona erecektir. Tam destek için uygulamalarınızı 4.x sürümüne geçirmenizi kesinlikle öneririz.

Notification Hubs bağlamaları Microsoft.Azure.WebJobs.Extensions.NotificationHubs NuGet paketi, sürüm 1.x'te sağlanır. Paketin kaynak kodu azure-webjobs-sdk-extensions GitHub deposundadır.

Aşağıdaki tabloda, her geliştirme ortamında çıkış bağlama desteğinin nasıl ekleneceği listeilmektedir.

Geliştirme ortamı İşlevler 1.x'te destek eklemek için
Yerel geliştirme: C# sınıf kitaplığı Paketi yükleme
Yerel geliştirme: C# betiği, JavaScript, F# Otomatik
Portal geliştirme Otomatik

Paketler: İşlevler 2.x ve üzeri

Çıkış bağlaması İşlevler 2.x ve üzeri sürümlerde kullanılamaz.

Örnek: şablon

Gönderdiğiniz bildirimler yerel bildirimler veya şablon bildirimleri olabilir. Yerel bildirim, çıkış bağlamasının özelliğinde platform yapılandırıldığı gibi belirli bir istemci platformunu hedefler. Birden çok platformu hedeflemek için şablon bildirimi kullanılabilir.

Her dil için şablon örnekleri:

C# betik şablonu örneği: out parametresi

Bu örnek, şablonda yer tutucu içeren şablon kaydı için bir message bildirim gönderir:

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

C# betik şablonu örneği: zaman uyumsuz

Zaman uyumsuz kod kullanıyorsanız out parametrelerine izin verilmez. Bu durumda şablon bildiriminizi döndürmek için kullanın IAsyncCollector . Aşağıdaki kod, önceki örneğin zaman uyumsuz bir örneğidir:

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

C# betik şablonu örneği: JSON

Bu örnek, geçerli bir JSON dizesi kullanarak şablonda yer tutucu içeren message şablon kaydı için bir bildirim gönderir:

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

C# betik şablonu örneği: kitaplık türleri

Bu örnekte, Microsoft Azure Notification Hubs Kitaplığı'nda tanımlanan türlerin nasıl kullanılacağı gösterilmektedir:

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

F# şablonu örneği

Bu örnek ve messageiçeren location bir şablon kaydı için bir bildirim gönderir:

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

JavaScript şablonu örneği

Bu örnek ve messageiçeren location bir şablon kaydı için bir bildirim gönderir:

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

Örnek: APNS yerel

Bu C# betik örneği, yerel Bir Apple Anında İletme Bildirimi Hizmeti (APNS) bildiriminin nasıl gönderılacağını gösterir:

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

Örnek: WNS yerel

Bu C# betiği örneği, yerel bir Windows Anında İletme Bildirimi Hizmeti (WNS) bildirim göndermek için Microsoft Azure Notification Hubs Kitaplığı'nda tanımlanan türlerin nasıl kullanılacağını gösterir:

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

Özellikler

C# sınıf kitaplıklarında NotificationHub özniteliğini kullanın.

Özniteliğin oluşturucu parametreleri ve özellikleri Yapılandırma bölümünde açıklanmıştır.

Yapılandırma

Aşağıdaki tabloda, function.json dosyasında ayarladığınız bağlama yapılandırma özellikleri ve NotificationHub özniteliği listelenir:

function.json özelliği Öznitelik özelliği Açıklama
type yok notificationHub olarak ayarlayın.
direction yok out olarak ayarlayın.
ad yok Bildirim hub'ı iletisi için işlev kodunda kullanılan değişken adı.
tagExpression TagExpression Etiket ifadeleri, bildirimlerin etiket ifadesiyle eşleşen bildirimleri almak üzere kayıtlı bir cihaz kümesine teslim edileceğini belirtmenize olanak tanır. Daha fazla bilgi için bkz . Yönlendirme ve etiket ifadeleri.
hubName HubName Azure portalında bildirim hub'ı kaynağının adı.
bağlantı ConnectionStringSetting Notification Hubs bağlantı dizesi içeren bir uygulama ayarının adı. bağlantı dizesi, bildirim hub'ınız için DefaultFullSharedAccessSignature değerine ayarlayın. Daha fazla bilgi için bkz . Bağlantı dizesi kurulumu.
peron Platform platform özelliği, bildirim hedeflerinizin istemci platformunu gösterir. Varsayılan olarak, platform özelliği çıkış bağlamasından atlanırsa, Şablon bildirimleri Azure Notification Hub'da yapılandırılmış herhangi bir platformu hedeflemek için kullanılabilir. Azure Notification Hub ile platformlar arası bildirimler göndermek için şablonları kullanma hakkında daha fazla bilgi için bkz . Notification Hubs şablonları. Platform ayarlandığında, aşağıdaki değerlerden biri olmalıdır:

Yerel olarak geliştirme yaparken uygulama ayarlarınızı koleksiyondaki local.settings.json dosyasına Values ekleyin.

function.json dosya örneği

function.json dosyasındaki Notification Hubs bağlamasının bir örneği aşağıda verilmiştir:

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

Bağlantı dizesi kurulumu

Bildirim hub'ı çıkış bağlaması kullanmak için hub'ın bağlantı dizesi yapılandırmanız gerekir. Mevcut bir bildirim hub'ını seçebilir veya Azure portalındaki Tümleştir sekmesinden yeni bir tane oluşturabilirsiniz. bağlantı dizesi el ile de yapılandırabilirsiniz.

bağlantı dizesi mevcut bir bildirim hub'ına yapılandırmak için:

  1. Azure portalında bildirim hub'ınıza gidin, Erişim ilkeleri'ni seçin ve DefaultFullSharedAccessSignature ilkesinin yanındaki kopyala düğmesini seçin.

    DefaultFullSharedAccessSignature ilkesinin bağlantı dizesi bildirim hub'ınıza kopyalanır. Bu bağlantı dizesi işlevinizin hub'a bildirim iletileri göndermesine olanak tanır. Bildirim hub'ını bağlantı dizesi kopyalamayı gösteren ekran görüntüsü.

  2. Azure portalında işlev uygulamanıza gidin, Ayarlar'ı genişletin ve ortam değişkenleri'ni seçin.

  3. Uygulama ayarı sekmesinden + Ekle'yi seçerek MyHubConnectionString gibi bir anahtar ekleyin. Bu uygulamanın Adı ayarı, function.json veya .NET özniteliğindeki çıkış bağlama bağlantısı ayarıdır. Daha fazla bilgi için bkz. Yapılandırma.

  4. Değer için, kopyalanan DefaultFullSharedAccessSignature bağlantı dizesi bildirim hub'ınızdan yapıştırın ve uygula'yı seçin.

Yerel olarak geliştirme yaparken uygulama ayarlarınızı koleksiyondaki local.settings.json dosyasına Values ekleyin.

Özel durumlar ve dönüş kodları

Bağlama Başvuru
Bildirim Hub'ı İşlemler Kılavuzu