ربط Twilio لدوال Azure

يوضح هذا المقال كيفية إرسال رسائل نصية باستخدام روابط ⁦⁩Twilio⁦⁩ في دوال Azure. تدعم دوال Azure روابط الإخراج لـ Twilio.

هذه معلومات مرجعية لمطوري Azure Functions. إذا كنت مستخدما جديدا لوظائف Azure، فابدأ بالموارد التالية:

تثبيت الإضافة

تعتمد حزمة NuGet الإضافية التي تقوم بتثبيتها على وضع C # الذي تستخدمه في تطبيق الوظائف:

يتم تنفيذ الوظائف في نفس العملية مثل مضيف الوظائف. لمعرفة المزيد، راجع تطوير دالات مكتبة الفئة C# باستخدام وظائف Azure.

تختلف وظائف الإضافة وفقا لإصدار الملحق:

أضف الامتداد إلى مشروعك عن طريق تثبيت حزمة NuGet ، الإصدار 3.x.

تثبيت الحزمة

بدءا من الإصدار 2.x من الوظائف، يعد ملحق HTTP جزءا من حزمة امتداد، والتي يتم تحديدها في ملف مشروع host.json. لمعرفة المزيد، راجع حزمة الإضافات.

يجب أن يكون هذا الإصدار من الإضافة متاحا بالفعل لتطبيق الوظائف الخاص بك مع حزمة الإضافات، الإصدار 2.x.


::: نهاية المنطقة

مثال

ما لم يذكر خلاف ذلك، هذه الأمثلة خاصة بالإصدار 2.x والإصدار الأحدث من وقت تشغيل الوظائف.

يمكن إنشاء الدالة C # باستخدام أحد أوضاع C # التالية:

يبين المثال التالي ⁦⁩دالة C#⁦⁩ التي ترسل رسالة نصية عند تشغيلها بواسطة رسالة قائمة انتظار.

using Microsoft.Azure.WebJobs;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json.Linq;
using Twilio.Rest.Api.V2010.Account;
using Twilio.Types;
namespace TwilioQueueOutput
{
    public static class QueueTwilio
    {
        [FunctionName("QueueTwilio")]
        [return: TwilioSms(AccountSidSetting = "TwilioAccountSid", AuthTokenSetting = "TwilioAuthToken", From = "+1425XXXXXXX")]
        public static CreateMessageOptions Run(
        [QueueTrigger("myqueue-items", Connection = "AzureWebJobsStorage")] JObject order,
        ILogger log)
        {
            log.LogInformation($"C# Queue trigger function processed: {order}");

            var message = new CreateMessageOptions(new PhoneNumber(order["mobileNumber"].ToString()))
            {
                Body = $"Hello {order["name"]}, thanks for your order!"
            };

            return message;
        }
    }
}

يستخدم هذا المثال السمة ⁦TwilioSms⁩ مع القيمة العائدة للأسلوب. هناك بديل باستخدام السمة مع المعلمة ⁦out CreateMessageOptions⁩ أو المعلمة ⁦ICollector<CreateMessageOptions>⁩ أو ⁦IAsyncCollector<CreateMessageOptions>⁩.

يبين المثال التالي رابط إخراج Twilio في ملف ⁦⁩function.json⁦⁩⁦ودالة ⁦⁩JavaScript function⁦⁩ تستخدم الرابط.

إليك بيانات ربط في ملف ⁦⁩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.

في تطبيقات الوظائف قيد المعالجة ، استخدم TwilioSmsAttribute، الذي يدعم المعلمات التالية.

خاصية السمة / التعليق التوضيحي الوصف
⁩AccountSidSetting⁦ يجب تعيين هذه القيمة إلى اسم إعداد تطبيق يحمل حساب Twilio الخاص بك Sid (⁦TwilioAccountSid⁩). عند عدم التعيين، يكون اسم إعداد التطبيق الافتراضي هو AzureWebJobsTwilioAccountSid.
⁩AuthTokenSetting⁦ يجب تعيين هذه القيمة إلى اسم إعداد تطبيق يحمل رمز مصادقة Twilio الخاص بك (⁦TwilioAccountAuthToken⁩). عند عدم التعيين، يكون اسم إعداد التطبيق الافتراضي هو AzureWebJobsTwilioAuthToken.
لكي تتمكن من يتم تعيين هذه القيمة إلى رقم الهاتف الذي يتم إرسال نص SMS إليه.
من يتم تعيين هذه القيمة إلى رقم الهاتف الذي يتم إرسال نص SMS منه.
النص الأساسي يمكن استخدام هذه القيمة لتثبيت الرسالة النصية SMS برمجيًا إذا لم تكن بحاجة إلى تعيينها بشكل حيوي في التعليمة البرمجية لدالتك.

تعليقات توضيحية

يسمح لك التعليق التوضيحي TwilioSmsOutput بتكوين ربط إخراج Twilio بشكل معلن من خلال توفير قيم التكوين التالية:

+

ضع التعليق التوضيحي TwilioSmsOutput على OutputBinding<T> معلمة، حيث T قد يكون أي نوع Java أصلي مثل int، ، Stringbyte[]أو نوع POJO.

التكوين

يشرح الجدول التالي خصائص تكوين الربط التي قمت بتعيينها في الملف function.json ، والتي تختلف حسب إصدار وقت التشغيل:

خاصية function.json الوصف
النوع يجب تعيينها على⁦twilioSms⁩.
⁩الاتجاه⁧ يجب تعيينها على⁦out⁩.
⁩الاسم⁧ اسم المتغير المستخدم في رمز الدالة للرسالة النصية Twilio SMS.
⁩accountSidSetting⁦ يجب تعيين هذه القيمة إلى اسم إعداد تطبيق يحمل حساب Twilio الخاص بك Sid (⁦TwilioAccountSid⁩). عند عدم التعيين، يكون اسم إعداد التطبيق الافتراضي هو AzureWebJobsTwilioAccountSid.
⁩authTokenSetting⁦ يجب تعيين هذه القيمة إلى اسم إعداد تطبيق يحمل رمز مصادقة Twilio الخاص بك (⁦TwilioAccountAuthToken⁩). عند عدم التعيين، يكون اسم إعداد التطبيق الافتراضي هو AzureWebJobsTwilioAuthToken.
⁩من⁦ يتم تعيين هذه القيمة إلى رقم الهاتف الذي يتم إرسال نص SMS منه.
⁩النص الأساسي⁦ يمكن استخدام هذه القيمة لتثبيت الرسالة النصية SMS برمجيًا إذا لم تكن بحاجة إلى تعيينها بشكل حيوي في التعليمة البرمجية لدالتك.

في الإصدار 2.x، يمكنك تعيين القيمة في to التعليمات البرمجية الخاصة بك.

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

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