ربط إخراج مراكز الإعلامات لوظائف 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.

يوضح الجدول التالي كيفية إضافة دعم لعملية ربط البيانات هذه في كل بيئة تطوير.

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

الحزم - وظائف 2.x وأعلى

لا يتوفر هذا الربط في الوظائف 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# النصي- أنواع المكتبات

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

#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# كيفية إرسال إعلام 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 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 لإرسال إعلام 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.
⁩direction⁧ غير متوفر يجب تعيينها إلى out.
⁩الاسم⁧ غير متوفر اسم المتغيّر المستخدم في التعليمة البرمجية للوظيفة الخاصة برسالة مركز الإعلامات.
tagExpression TagExpression تسمح لك تعبيرات العلامات بتحديد تسليم الإعلامات إلى مجموعة من الأجهزة التي سجلت لتتلقى إعلامات تطابق تعبير العلامة. للمزيد من المعلومات، راجع التوجيه وتعبيرات العلامات.
hubName HubName اسم مورد مركز الإعلامات في مدخل Microsoft Azure.
الاتصال ConnectionStringSetting اسم إعداد تطبيق يحتوي على سلسلة اتصال مراكز إعلام. يجب تعيين سلسلة الاتصال إلى القيمة DefaultFullSharedAccessSignature لمركز الإعلامات لديك. راجع إعداد سلسلة الاتصال في جزء لاحق من هذه المقالة.
النظام الأساسي النظام الأساسي تشير خاصية النظام الأساسي إلى النظام الأساسي للعميل الذي تستهدفه إعلاماتك. بشكل افتراضي، إذا حُذفت خاصية النظام الأساسي من رابط المخرجات، يمكن استخدام إعلامات القوالب لاستهداف أي نظام أساسي تم تكوينه في مركز إعلامات Azure. لمزيد من المعلومات حول استخدام القوالب بشكل عام لإرسال إعلامات عبر النظام الأساسي باستخدام مركز إعلامات Azure، راجع القوالب. عند تعيين النظام الأساسي، يجب أن يكون إحدى القيم التالية:

عندما تقوم بالتطوير محلياً، أضف إعدادات التطبيق في ملف 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، واختر Application settings، وأضف مفتاحاً مثل MyHubConnectionString ، والصق DefaultFullSharedAccessSignature المنسوخة لمركز الإشعارات كقيمة، ثم انقر فوق Save.

اسم إعداد التطبيق هذا هو المستخدم في إعداد اتصال ربط الإخراج في function.json أو السمة .NET. راجع قسم التكوين في جزء سابق من هذه المقالة.

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

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

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

الخطوات التالية