التشغيل السريع: تلقي الرسائل النصية القصيرة والرد عليها

توفر إمكانات Azure Communication Services SMS خيارات للمطورين لاستهلاك الأحداث المستلمة عبر الرسائل القصيرة. يتم نشر الأحداث إلى Azure Event Grid التي توفر عمليات تكامل خارج الصندوق لمعالجة أولئك الذين يستخدمون خطافات الويب ووظائف Azure وموصلات Power Automate / Logic App والمزيد.

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

في هذا التشغيل السريع، سنركز على عرض معالجة الأحداث المستلمة عبر الرسائل النصية القصيرة من خلال Azure Functions باستخدام مشغلات Event Grid وموصلات بدون تعليمات برمجية ل Power Automate / Logic Apps.

SMSReceived يتم تنسيق الحدث الذي يتم إنشاؤه عند إرسال رسالة نصية قصيرة إلى رقم هاتف Azure Communication Services بالطريقة التالية:

[{
  "id": "Incoming_20200918002745d29ebbea-3341-4466-9690-0a03af35228e",
  "topic": "/subscriptions/50ad1522-5c2c-4d9a-a6c8-67c11ecb75b8/resourcegroups/acse2e/providers/microsoft.communication/communicationservices/{communication-services-resource-name}",
  "subject": "/phonenumber/15555555555",
  "data": {
    "MessageId": "Incoming_20200918002745d29ebbea-3341-4466-9690-0a03af35228e",
    "From": "15555555555",
    "To": "15555555555",
    "Message": "Great to connect with Azure Communication Services events",
    "ReceivedTimestamp": "2020-09-18T00:27:45.32Z"
  },
  "eventType": "Microsoft.Communication.SMSReceived",
  "dataVersion": "1.0",
  "metadataVersion": "1",
  "eventTime": "2020-09-18T00:27:47Z"
}]

لبدء إنشاء الأحداث، يجب علينا تكوين Azure Event Grid لمورد Azure Communication Services.

ملاحظة

يؤدي استخدام Azure Event Grid إلى تكاليف إضافية. لمزيد من المعلومات، راجع أسعار Azure Event Grid.

المتطلبات الأساسية

توفر Event Grid دعما خارج الصندوق ل Azure Functions، ما يسهل إعداد مستمع حدث دون الحاجة إلى التعامل مع تعقيد تحليل الرؤوس أو تصحيح أخطاء خطافات الويب. باستخدام مشغل خارج الصندوق، يمكننا إعداد Azure Function التي يتم تشغيلها في كل مرة يتم فيها اكتشاف حدث يطابق المشغل. في هذا المستند، نركز على مشغلات الرسائل القصيرة المستلمة.

إعداد بيئتنا المحلية

  1. باستخدام Visual Studio Code، قم بتثبيت ملحق Azure Functions.

  2. باستخدام الملحق، قم بإنشاء Azure Function باتباع هذه الإرشادات.

    قم بتكوين الدالة بالإرشادات التالية:

    • اللغة: TypeScript
    • القالب: مشغل Azure Event Grid
    • اسم الدالة: تعريف المستخدم

    بمجرد الإنشاء، سترى دالة تم إنشاؤها في الدليل الخاص بك على النحو التالي:

    
    import { AzureFunction, Context } from "@azure/functions"
    
    const eventGridTrigger: AzureFunction = async function (context: Context, eventGridEvent: any): Promise<void> {
        context.log(eventGridEvent);
    
    };
    
    export default eventGridTrigger;
    
    

تكوين Azure Function لتلقي حدث SMS

  1. قم بتكوين Azure Function لتحليل القيم من الحدث مثل من أرسله، إلى أي رقم وما كانت الرسالة.

    
    import { AzureFunction, Context } from "@azure/functions"
    
    const eventGridTrigger: AzureFunction = async function (context: Context, eventGridEvent: any): Promise<void> {
       context.log(eventGridEvent);
       const to = eventGridEvent['data']['to'];
       const from = eventGridEvent['data']['from'];
       const message = eventGridEvent['data']['message'];
    
    };
    
    export default eventGridTrigger;
    
    

في هذه المرحلة، كنت قد تعاملت بنجاح مع تلقي رسالة نصية قصيرة من خلال الأحداث. الآن تتراوح إمكانيات ما يجب القيام به مع هذا الحدث من مجرد تسجيله إلى الاستجابة له. في القسم التالي، نركز على الاستجابة لتلك الرسائل النصية التي تلقيناها. إذا كنت لا تريد الرد على الرسائل النصية القصيرة، فانتقل إلى القسم التالي حول تشغيل الدالة محليا.

الرد على الرسائل النصية القصيرة

  1. للرد على الرسائل القصيرة الواردة، نستخدم إمكانات خدمة اتصالات Azure SMS لإرسال الرسائل القصيرة. نبدأ باستدعاء SmsClient وتهيئته مع connection string لموردنا. يمكنك إما لصق سلسلة الاتصال مباشرة في التعليمات البرمجية أو وضعه داخل ملف local.settings.json في دليل Azure Function ضمن القيم.

{
  "IsEncrypted": false,
  "Values": {
    "FUNCTIONS_WORKER_RUNTIME": "node",
    "ACS_CONNECTION_STRING": "<<CONNECTION STRING>>"
  }
}

  1. ثم نؤلف رسالة نصية قصيرة لإرسالها استنادا to إلى قيم و from من الحدث الذي حصلنا عليه.

    import { AzureFunction, Context } from "@azure/functions"
    import { SmsClient } from "@azure/communication-sms";
    
    const connectionString = process.env.ACS_CONNECTION_STRING; //Replace with your connection string
    
    const eventGridTrigger: AzureFunction = async function (context: Context, eventGridEvent: any): Promise<void> {
        context.log(eventGridEvent);
        const to = eventGridEvent['data']['to'];
        const from = eventGridEvent['data']['from'];
        const message = eventGridEvent['data']['message'];
    
        const smsClient = new SmsClient(connectionString);
    
        const sendResults = await smsClient.send({
            from: to,
            to: [from],
            message: "Message received successfully. Will respond shortly."
        });
    
    };
    
    export default eventGridTrigger;
    

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

التشغيل محلياً

لتشغيل الدالة محليا، اضغط F5 في Visual Studio Code. نستخدم ngrok لربط Azure Function التي تعمل محليا مع Azure Event Grid.

  1. بمجرد تشغيل الدالة، نقوم بتكوين ngrok. (تحتاج إلى تنزيل ngrok لبيئتك.)

    ngrok http 7071
    

    انسخ ارتباط ngrok المتوفر حيث يتم تشغيل وظيفتك.

  2. تكوين أحداث SMS من خلال Event Grid داخل مورد Azure Communication Services. نقوم بذلك باستخدام Azure CLI. تحتاج إلى معرف المورد لمورد Azure Communication Services الموجود في مدخل Microsoft Azure. (سيبدو معرف المورد مثل: /subscriptions/<<AZURE SUBSCRIPTION ID>>/resourceGroups/<<RESOURCE GROUP NAME>>/providers/Microsoft.Communication/CommunicationServices/<<RESOURCE NAME>>)

    
    az eventgrid event-subscription create --name "<<EVENT_SUBSCRIPTION_NAME>>" --endpoint-type webhook --endpoint "<<NGROK URL>> " --source-resource-id "<<RESOURCE_ID>>"  --included-event-types Microsoft.Communication.SMSReceived 
    
    
  3. الآن بعد أن تم توصيل كل شيء، اختبر التدفق عن طريق إرسال رسالة نصية قصيرة إلى رقم الهاتف الذي لديك على مورد Azure Communication Services. يجب أن تشاهد سجلات وحدة التحكم على المحطة الطرفية الخاصة بك حيث يتم تشغيل الدالة. إذا قمت بإضافة التعليمات البرمجية للرد على الرسائل النصية القصيرة، يجب أن ترى أن الرسالة النصية تم تسليمها إليك.

نشر في Azure

لنشر Azure Function إلى Azure، تحتاج إلى اتباع هذه الإرشادات. بمجرد التوزيع، نقوم بتكوين Event Grid لمورد Azure Communication Services. باستخدام عنوان URL لدالة Azure التي تم توزيعها (تم العثور على عنوان URL في مدخل Microsoft Azure ضمن الدالة)، نقوم بتشغيل الأمر التالي:


az eventgrid event-subscription update --name "<<EVENT_SUBSCRIPTION_NAME>>" --endpoint-type azurefunction --endpoint "<<AZ FUNCTION URL>> " --source-resource-id "<<RESOURCE_ID>>"

نظرا لأننا نقوم بتحديث اشتراك الحدث الذي أنشأناه للاختبار المحلي، تأكد من استخدام نفس اسم اشتراك الحدث الذي استخدمته أعلاه.

يمكنك الاختبار عن طريق إرسال رسالة نصية قصيرة إلى رقم الهاتف الذي اشتريته من خلال مورد Azure Communication Services.

توفر Logic Apps وPower Automate موصلات خارج الصندوق للمساعدة في التعامل مع الأحداث التي تم إنشاؤها بواسطة Azure Communication Services من خلال Event Grid. يوفر كل من Logic Apps وPower Automate نفس مجموعة الموصلات. الأمر متروك لك لتحديد ما تفضله، والقراءة حول الاختلافات بين الخدمات لإبلاغ قرارك.

معالجة الأحداث باستخدام موصل Event Grid

  1. ابدأ بإنشاء تدفق جديد في بيئتك المفضلة. اختر المشغل When a resource event occurs للبدء.

    لقطة شاشة لاختيار المشغل ل Power Automate.

  2. الآن، يتيح تكوينه. يتطلب منك الموصل توفير اشتراك تريد استخدامه. (يجب أن يكون نفس الاشتراك حيث يوجد مورد Azure Communication Services). حدد نوع المورد. في هذه الحالة، اختر Microsoft.Communication.CommunicationServices. ثم تحتاج إلى توفير اسم مورد لمورد Azure Communication Services الذي تريد الاتصال به. وأخيرا، نحتاج إلى اختيار أنواع الأحداث التي نريد تلقيها، في هذه الحالة: Microsoft.Communication.SMSReceived.

    لقطة شاشة لموصل شبكة الحدث.

    يقوم الموصل تلقائيا بإعداد اشتراك الحدث نيابة عنك وتكوين الأحداث التي يريد تلقيها.

  3. لتسهيل حياتنا لاحقا، أضف Parse JSON connector لمعالجة الاستجابة القادمة من موصل Event Grid. قم بتكوين الموصل لأخذ Body الكائن من موصل Event Grid ومطابقته مع المخطط المتوقع للحدث:

    مخطط عينة (مفتوح لرؤية)
    
        {
            "properties": {
                "data": {
                    "properties": {
                        "From": {
                            "type": "string"
                        },
                        "Message": {
                            "type": "string"
                        },
                        "MessageId": {
                            "type": "string"
                        },
                        "ReceivedTimestamp": {
                            "type": "string"
                        },
                        "To": {
                            "type": "string"
                        }
                    },
                    "type": "object"
                },
                "dataVersion": {
                    "type": "string"
                },
                "eventTime": {
                    "type": "string"
                },
                "eventType": {
                    "type": "string"
                },
                "id": {
                    "type": "string"
                },
                "metadataVersion": {
                    "type": "string"
                },
                "subject": {
                    "type": "string"
                },
                "topic": {
                    "type": "string"
                }
            },
            "type": "object"
        }
    
    

    لقطة شاشة لموصل Parse JSON.

في هذه المرحلة، نجحت في التعامل مع حدث SMS. ثم لديك خيارات متعددة لما يجب فعله به بدءا من تسجيل الحدث إلى الاستجابة للرسائل النصية القصيرة. في سياق هذه الوثيقة، سنوضح كيفية الاستجابة لها. تابع القراءة لمعرفة خطوات الاستجابة للرسائل النصية القصيرة.

الرد على الرسائل النصية القصيرة

  1. ابدأ بإضافة موصل SMS إلى تدفقنا وتكوينه بالمعلومات الخاصة بمورد Azure Communication Services. يسمح للموصل بالوصول إلى المورد وإرسال الرسائل النصية نيابة عنا. تحتاج إلى connection string لموردك.

    لقطة شاشة لإعداد شاشة لموصل SMS.

  2. بعد ذلك، نقوم بتكوين الموصل بمعلومات المرسل والمستلم. نستخدم المعلومات من الحدث الذي تلقيناه لملئها. قم بتقريب to الأرقام و from لإرسال رسالة SMS مرة أخرى إلى المرسل الأصلي. وأخيرا، أضف رسالة.

    لقطة شاشة لتكوين موصل SMS.

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

من هنا، الاحتمالات لا نهاية لها. بدءا من الاستجابة لرسالة بإجابة م canned مسبقا، أو إضافة روبوت أو ببساطة تخزين الاستجابات، يمكنك إضافة المزيد من المنطق إلى التدفق.

تنظيف الموارد

إذا كنت ترغب في تنظيف وإزالة اشتراك في خدمات الاتصالات، فيمكنك حذف المورد أو مجموعة الموارد. يؤدي حذف مجموعة الموارد إلى حذف أية موارد أخرى مقترنة بها أيضًا. تعرف على المزيد بشأن تنظيف الموارد.

التحقق المجاني

إذا كان لديك رقم مجاني جديد وتريد إرسال عدد كبير من رسائل SMS أو إرسال رسائل SMS إلى أرقام الهواتف الكندية، فيرجى زيارة هنا لمعرفة كيفية التحقق من رقمك المجاني.

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

في هذا التشغيل السريع، تعلمت كيفية إرسال رسائل SMS باستخدام Communication Services.