روابط إخراج مراكز إعلامات Azure لوظائف Azure

تشرح هذه المقالة كيف يمكن إرسال إعلامات منبثقة باستخدام روابط مراكز إعلامات Azure في وظائف Azure. تدعم وظائف Azure روابط إخراج مراكز الإعلامات.

يجب تكوين مراكز الإعلامات لخدمة إعلامات النظام الأساسي (PNS) التي تريد استخدامها. لمزيد من المعلومات حول كيفية الحصول على الإعلامات المنبثقة في تطبيق العميل من مراكز الإعلامات، راجع التشغيل السريع: إعداد الإعلامات المنبثقة في مركز الإعلامات.

هام

أهملت شركة Google خدمة Google Cloud Messaging (GCM) لصالح Firebase Cloud Messaging (FCM). ومع ذلك، لا تدعم روابط الإخراج لمراكز الإعلامات FCM. لإرسال إعلامات باستخدام FCM، استخدم واجهة برمجة تطبيقات Firebase مباشرة في الوظيفة أو استخدم إعلامات القوالب.

الحزم: الدالات 1.x

يتم توفير روابط مراكز الإعلامات في حزمة Microsoft.Azure.WebJobs.Extensions.NotificationHubs NuGet، الإصدار 1.x. توجد التعليمات البرمجية المصدر في مستودع azure-webjobs-sdk-extensions GitHub.

يسرد الجدول التالي كيفية إضافة دعم ربط الإخراج في كل بيئة تطوير.

بيئة التطوير لإضافة دعم في Functions 1.x
التطوير المحلي: مكتبة فئات C#‎ تثبيت الحزمة
التطوير المحلي: برنامج C# النصي، JavaScript، F#‎ تلقائي
تطوير المدخل تلقائي

الحزم: الدالات 2.x وأعلى

ربط الإخراج غير متوفر في Functions 2.x وأعلى.

مثال: قالب

قد تكون الإعلامات التي ترسلها عبارة عن إعلامات أصلية أوإعلامات قوالب. يستهدف الإعلام الأصلي نظاما أساسيا محددا للعميل، كما تم تكوينه في platform خاصية ربط الإخراج. يمكن استخدام إعلام قالب لاستهداف العديد من الأنظمة الأساسية.

أمثلة القالب لكل لغة:

مثال على قالب البرنامج النصي C#: خارج المعلمة

يرسل هذا المثال إعلاما لتسجيل قالب يحتوي على عنصر message نائب في القالب:

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#: غير متزامن

إذا كنت تستخدم تعليمة برمجية غير متزامنة، فلا يسمح باستخدام المعلمات الخارجة. في هذه الحالة، استخدم IAsyncCollector لإرجاع إعلام القالب. التعليمات البرمجية التالية هي مثال غير متزامن للمثال السابق:

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#: JSON

يرسل هذا المثال إعلاما لتسجيل قالب يحتوي على عنصر message نائب في القالب باستخدام سلسلة JSON صالحة:

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#: أنواع المكتبات

يوضح هذا المثال كيفية استخدام الأنواع المعرفة في مكتبة مراكز إعلامات Microsoft Azure:

#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

يرسل هذا المثال إعلاما لتسجيل قالب يحتوي على location و message:

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

مثال على قالب JavaScript

يرسل هذا المثال إعلاما لتسجيل قالب يحتوي على location و 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!"
    };
};

مثال: APNS الأصلي

يوضح مثال البرنامج النصي C# هذا كيفية إرسال إعلام Apple Push Notification Service (APNS) أصلي:

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

مثال: WNS الأصلي

يوضح مثال البرنامج النصي C# هذا كيفية استخدام الأنواع المعرفة في مكتبة مراكز إعلامات Microsoft Azure لإرسال إعلام منبثق لخدمة الإعلامات من Windows (WNS) أصلي:

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

السمات

في مكتبات الفئة C#‎، استخدم السمة NotificationHub.

يتم وصف معلمات وخصائص الدالة الإنشائية للسمة في قسم التكوين .

التكوين

يسرد الجدول التالي خصائص تكوين الربط التي قمت بتعيينها في ملف function.json والسمة NotificationHub :

خاصية function.json خاصية السمة ‏‏الوصف
النوع غير متوفر تعيين إلى notificationHub.
الاتجاه غير متوفر تعيين إلى out.
الاسم غير متوفر اسم المتغيّر المستخدم في التعليمة البرمجية للوظيفة الخاصة برسالة مركز الإعلامات.
tagExpression TagExpression تسمح لك تعبيرات العلامات بتحديد تسليم الإعلامات إلى مجموعة من الأجهزة المسجلة لتلقي إعلامات مطابقة لتعبير العلامة. للمزيد من المعلومات، راجع التوجيه وتعبيرات العلامات.
hubName HubName اسم مورد مركز الإعلام في مدخل Microsoft Azure.
الاتصال ConnectionStringSetting اسم إعداد تطبيق يحتوي على سلسلة اتصال مراكز إعلام. قم بتعيين سلسلة الاتصال إلى القيمة DefaultFullSharedAccessSignature لمركز الإعلامات الخاص بك. لمزيد من المعلومات، راجع إعداد سلسلة الاتصال.
النظام الأساسي النظام الأساسي تشير خاصية النظام الأساسي إلى النظام الأساسي للعميل الذي تستهدفه إعلاماتك. بشكل افتراضي، إذا حُذفت خاصية النظام الأساسي من رابط المخرجات، يمكن استخدام إعلامات القوالب لاستهداف أي نظام أساسي تم تكوينه في مركز إعلامات Azure. لمزيد من المعلومات حول استخدام القوالب لإرسال إعلامات عبر الأنظمة الأساسية باستخدام Azure Notification Hub، راجع قوالب مراكز الإعلامات. عند تعيين النظام الأساسي ، يجب أن تكون إحدى القيم التالية:

عندما تقوم بالتطوير محليًا، أضف إعدادات التطبيق في ملف local.settings.json في المجموعة Values.

مثال على ملف function.json

فيما يلي مثال على ربط مراكز الإعلامات في ملف function.json :

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

إعداد سلسلة الاتصال

لاستخدام ربط مخرجات مركز الإعلامات، يجب تكوين سلسلة الاتصال لهذا المركز. يمكنك تحديد مركز إعلام موجود أو إنشاء مركز جديد من علامة التبويب تكامل في مدخل Microsoft Azure. يمكنك أيضاً تكوين سلسلة الاتصال يدوياً.

لتكوين سلسلة الاتصال لمركز إعلامات موجود:

  1. انتقل إلى مركز إعلاماتك في مدخل Microsoft Azure، واختر نُهج الوصول، وحدّد زر النسخ بجوار النهج DefaultFullSharedAccessSignature.

    يتم نسخ سلسلة الاتصال لنهج DefaultFullSharedAccessSignature إلى مركز الإعلامات. تسمح سلسلة الاتصال هذه بأن تقوم الوظيفة بإرسال رسائل إعلام إلى المركز. لقطة شاشة توضح كيفية نسخ سلسلة الاتصال مركز الإعلامات.

  2. انتقل إلى تطبيق الوظائف في مدخل Microsoft Azure، وقم بتوسيع الإعدادات، ثم حدد متغيرات البيئة.

  3. من علامة التبويب App setting، حدد + Add لإضافة مفتاح مثل MyHubConnectionString. اسم إعداد التطبيق هذا هو إعداد اتصال ربط الإخراج في function.json أو سمة .NET. لمزيد من المعلومات، راجع التكوين.

  4. للحصول على القيمة، الصق DefaultFullSharedAccessSignature المنسوخ سلسلة الاتصال من مركز الإعلامات، ثم حدد تطبيق.

عندما تقوم بالتطوير محليًا، أضف إعدادات التطبيق في ملف local.settings.json في المجموعة Values.

الاستثناءات والتعليمات البرمجية للإرجاع

Binding المرجع
مركز الإعلامات دليل العمليات