ربط Twilio لدوال Azure
تشرح هذه المقالة كيفية إرسال رسائل نصية باستخدام روابط Twilio في Azure Functions. تدعم دوال Azure روابط الإخراج لـ Twilio.
هذه معلومات مرجعية لمطوري Azure Functions. إذا كنت جديداً على Azure Functions، فابدأ بالموارد التالية:
تثبيت الملحق
تعتمد حزمة NuGet الملحق التي تقوم بتثبيتها على وضع C# الذي تستخدمه في تطبيق الوظائف:
يتم تنفيذ الوظائف في عملية عامل C# معزولة. لمعرفة المزيد، راجع دليل تشغيل وظائف C# Azure في عملية عامل معزولة.
تختلف وظيفة الملحق باختلاف إصدار الملحق:
لا يوجد حاليا أي دعم ل Twilio لتطبيق معالجة عامل معزول.
تثبيت الحزمة
بدءاً من الإصدار 2.x من الوظائف، يعد ملحق HTTP جزءاً من حزمة الملحقات المحددة في ملف مشروع host.json الخاص بك. لمعرفة المزيد، راجع حزمة الإضافات.
من المفترض أن يكون هذا الإصدار من الإضافة متاحاً بالفعل لتطبيق وظيفتك باستخدام حزمة الإضافات، الإصدار 2.x.
مثال
ما لم يُذكر خلاف ذلك، فإن هذه الأمثلة خاصة بالإصدار 2.x والإصدار الأحدث من وقت تشغيل الوظائف.
يمكن إنشاء دالة C# باستخدام أحد أوضاع C# التالية:
- نموذج العامل المعزول: دالة C# المترجمة التي يتم تشغيلها في عملية عامل معزولة عن وقت التشغيل. عملية العامل المعزولة مطلوبة لدعم وظائف C# التي تعمل على إصدارات LTS وغير LTS .NET و.NET Framework.
- نموذج قيد المعالجة: دالة C# المحولة برمجيا التي تعمل في نفس العملية مثل وقت تشغيل الوظائف.
- البرنامج النصي C#: يستخدم بشكل أساسي عند إنشاء وظائف C# في مدخل Microsoft Azure.
هام
سينتهي الدعم للنموذج قيد التنفيذ في 10 نوفمبر 2026. نوصي بشدة بترحيل تطبيقاتك إلى نموذج العامل المعزول للحصول على الدعم الكامل.
ربط Twilio غير مدعوم حاليا لتطبيق دالة يعمل في عملية عامل معزولة.
يظهر المثال التالي ربط إخراج Twilio في ملف function.json ودالة JavaScript التي تستخدم الربط.
إليك بيانات الربط في ملف function.json:
مثال function.json:
{
"type": "twilioSms",
"name": "message",
"accountSidSetting": "TwilioAccountSid",
"authTokenSetting": "TwilioAuthToken",
"from": "+1425XXXXXXX",
"direction": "out",
"body": "Azure Functions Testing"
}
ها هي كود JavaScript:
module.exports = async function (context, myQueueItem) {
context.log('Node.js queue trigger function processed work item', myQueueItem);
// In this example the queue item is a JSON string representing an order that contains the name of a
// customer and a mobile number to send text updates to.
var msg = "Hello " + myQueueItem.name + ", thank you for your order.";
// Even if you want to use a hard coded message in the binding, you must at least
// initialize the message binding.
context.bindings.message = {};
// A dynamic message can be set instead of the body in the output binding. The "To" number
// must be specified in code.
context.bindings.message = {
body : msg,
to : myQueueItem.mobileNumber
};
};
لا تتوفر أمثلة PowerShell الكاملة حالياً لربط SendGrid.
يوضح المثال التالي كيفية إرسال رسالة SMS باستخدام ربط الإخراج كما هو محدد في function.json التالية.
{
"type": "twilioSms",
"name": "twilioMessage",
"accountSidSetting": "TwilioAccountSID",
"authTokenSetting": "TwilioAuthToken",
"from": "+1XXXXXXXXXX",
"direction": "out",
"body": "Azure Functions Testing"
}
يمكنك تمرير كائن JSON متسلسل إلى المعلمة func.Out
لإرسال رسالة SMS.
import logging
import json
import azure.functions as func
def main(req: func.HttpRequest, twilioMessage: func.Out[str]) -> func.HttpResponse:
message = req.params.get('message')
to = req.params.get('to')
value = {
"body": message,
"to": to
}
twilioMessage.set(json.dumps(value))
return func.HttpResponse(f"Message sent")
يوضح المثال التالي كيفية استخدام التعليق التوضيحي TwilioSmsOutput لإرسال رسالة SMS. قيم و to
from
و body
مطلوبة في تعريف السمة حتى إذا تجاوزتها برمجيا.
package com.function;
import java.util.*;
import com.microsoft.azure.functions.annotation.*;
import com.microsoft.azure.functions.*;
public class TwilioOutput {
@FunctionName("TwilioOutput")
public HttpResponseMessage run(
@HttpTrigger(name = "req", methods = { HttpMethod.GET, HttpMethod.POST },
authLevel = AuthorizationLevel.FUNCTION) HttpRequestMessage<Optional<String>> request,
@TwilioSmsOutput(
name = "twilioMessage",
accountSid = "AzureWebJobsTwilioAccountSID",
authToken = "AzureWebJobsTwilioAuthToken",
to = "+1XXXXXXXXXX",
body = "From Azure Functions",
from = "+1XXXXXXXXXX") OutputBinding<String> twilioMessage,
final ExecutionContext context) {
String message = request.getQueryParameters().get("message");
String to = request.getQueryParameters().get("to");
StringBuilder builder = new StringBuilder()
.append("{")
.append("\"body\": \"%s\",")
.append("\"to\": \"%s\"")
.append("}");
final String body = String.format(builder.toString(), message, to);
twilioMessage.setValue(body);
return request.createResponseBuilder(HttpStatus.OK).body("Message sent").build();
}
}
السمات
تستخدم كل من مكتبات المعالجة والعامل المعزول C# السمات لتعريف ربط الإخراج. يستخدم البرنامج النصي C# بدلاً من ذلك ملف تكوين function.json.
ربط Twilio غير مدعوم حاليا لتطبيق دالة يعمل في عملية عامل معزولة.
تعليقات توضيحية
يتيح لك التعليق التوضيحي TwilioSmsOutput تكوين ربط مخرجات Twilio بشكل تصريحي من خلال توفير قيم التكوين التالية:
+
ضع التعليق التوضيحي TwilioSmsOutput على معلمة OutputBinding<T>
، حيث قد يكون T
أي نوع Java أصلي مثل int
أو String
byte[]
نوع POJO.
التكوين
يوضح الجدول التالي خصائص تكوين الربط التي قمت بتعيينها في ملف function.json، والذي يختلف باختلاف إصدار وقت التشغيل:
خاصية function.json | الوصف |
---|---|
النوع | يجب تعيين إلى twilioSms . |
الاتجاه | يجب تعيين إلى out . |
الاسم | اسم المتغير المستخدم في رمز الدالة للرسالة النصية Twilio SMS. |
accountSidSetting | يجب تعيين هذه القيمة إلى اسم إعداد تطبيق يحتوي على Twilio Account Sid (TwilioAccountSid ). عند عدم التعيين، يكون اسم إعداد التطبيق الافتراضي هو AzureWebJobsTwilioAccountSid . |
authTokenSetting | يجب تعيين هذه القيمة إلى اسم إعداد تطبيق يحتوي على رمز مصادقة Twilio المميز (TwilioAccountAuthToken ). عند عدم التعيين، يكون اسم إعداد التطبيق الافتراضي هو AzureWebJobsTwilioAuthToken . |
من | يتم تعيين هذه القيمة إلى رقم الهاتف الذي يتم إرسال نص SMS منه. |
النص الأساسي | يمكن استخدام هذه القيمة لتثبيت الرسالة النصية SMS برمجيًا إذا لم تكن بحاجة إلى تعيينها بشكل حيوي في التعليمة البرمجية لدالتك. |
في الإصدار 2.x، يمكنك تعيين قيمة to
في تعليمتك البرمجية.
عندما تقوم بالتطوير محليًا، أضف إعدادات التطبيق في ملف local.settings.json في المجموعة Values
.