Pengikatan Twilio untuk Azure Functions

Artikel ini menjelaskan cara mengirim pesan teks dengan menggunakan pengikatan Twilio di Azure Functions. Azure Functions mendukung pengikatan output untuk Twilio.

Ini adalah informasi referensi untuk pengembang Azure Functions. Jika Anda baru menggunakan Azure Functions, mulailah dengan sumber daya berikut ini:

Menginstal ekstensi

Paket NuGet ekstensi yang Anda instal bergantung pada mode C# yang Anda gunakan di aplikasi fungsi Anda:

Functions dijalankan dalam proses pekerja C# yang terisolasi. Untuk mempelajari selengkapnya, lihat Panduan untuk menjalankan C# Azure Functions dalam proses pekerja yang terisolasi.

Fungsionalitas ekstensi tersebut bervariasi tergantung pada versi ekstensi:

Saat ini tidak ada dukungan untuk Twilio untuk aplikasi proses pekerja yang terisolasi.

Memasang bundel

Dimulai dengan Functions versi 2.x, ekstensi HTTP adalah bagian dari bundel ekstensi, yang ditentukan dalam file proyek host.json. Untuk mempelajari lebih lanjut, lihat bundel ekstensi.

Versi ekstensi ini akan tersedia untuk aplikasi fungsi dengan bundel ekstensi, versi 2.x.

Contoh

Contoh-contoh ini khusus untuk runtime Functions versi 2.x dan versi yang lebih baru, kecuali dinyatakan lain.

Fungsi C# dapat dibuat dengan menggunakan salah satu mode C# berikut:

  • Model pekerja terisolasi: Fungsi C# terkompilasi yang berjalan dalam proses pekerja yang terisolasi dari runtime. Proses pekerja terisolasi diperlukan untuk mendukung fungsi C# yang berjalan pada versi LTS dan non-LTS .NET dan .NET Framework.
  • Model dalam proses: Fungsi C# yang dikompilasi yang berjalan dalam proses yang sama dengan runtime Functions.
  • Skrip C#: Digunakan terutama saat Anda membuat fungsi C# di portal Azure.

Penting

Dukungan akan berakhir untuk model dalam proses pada 10 November 2026. Kami sangat menyarankan Agar Anda memigrasikan aplikasi Anda ke model pekerja yang terisolasi untuk dukungan penuh.

Pengikatan Twilio saat ini tidak didukung untuk aplikasi fungsi yang berjalan dalam proses pekerja yang terisolasi.

Contoh berikut menunjukkan pengikatan output Twilio di file function.json dan fungsi JavaScript yang menggunakan pengikatan.

Berikut data pengikatan dalam file function.json:

Contoh function.json:

{
  "type": "twilioSms",
  "name": "message",
  "accountSidSetting": "TwilioAccountSid",
  "authTokenSetting": "TwilioAuthToken",
  "from": "+1425XXXXXXX",
  "direction": "out",
  "body": "Azure Functions Testing"
}

Berikut kode 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
    };
};

Contoh PowerShell lengkap untuk pengikatan SendGrid saat ini tidak tersedia.

Contoh berikut menunjukkan cara mengirim pesan SMS menggunakan pengikatan output seperti yang ditentukan dalam function.json berikut.

    {
      "type": "twilioSms",
      "name": "twilioMessage",
      "accountSidSetting": "TwilioAccountSID",
      "authTokenSetting": "TwilioAuthToken",
      "from": "+1XXXXXXXXXX",
      "direction": "out",
      "body": "Azure Functions Testing"
    }

Anda dapat meneruskan objek JSON yang diserialkan ke parameter func.Out untuk mengirim pesan 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")

Contoh berikut menunjukkan cara menggunakan anotasi TwilioSmsOutput untuk mengirim pesan SMS. Nilai untuk to, from, dan body diperlukan dalam penentuan atribut meskipun Anda menimpanya secara terprogram.

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

Atribut

Pustaka C# proses dalam proses dan terisolasi menggunakan atribut untuk menentukan pengikatan output. Sebagai gantinya, skrip C# menggunakan file konfigurasi function.json.

Pengikatan Twilio saat ini tidak didukung untuk aplikasi fungsi yang berjalan dalam proses pekerja yang terisolasi.

Anotasi

Anotasi TwilioSmsOutput memungkinkan Anda untuk mengonfigurasi pengikatan output Twilio secara deklaratif dengan memberikan nilai konfigurasi berikut:

+

Tempatkan anotasi TwilioSmsOutput pada parameter OutputBinding<T>, di mana T bisa berupa jenis Java asli seperti int, String, byte[], atau jenis POJO.

Konfigurasi

Tabel berikut menjelaskan properti konfigurasi pengikatan yang Anda atur di file function.json dengan versi runtime berbeda:

Properti function.json Deskripsi
jenis harus diatur ke twilioSms.
arah harus diatur ke out.
nama Nama variabel yang digunakan dalam kode fungsi untuk pesan teks SMS Twilio.
accountSidSetting Nilai ini harus diatur ke nama pengaturan aplikasi yang menahan Sid Akun Twilio Anda (TwilioAccountSid). Jika tidak diatur, nama pengaturan aplikasi default adalah AzureWebJobsTwilioAccountSid.
authTokenSetting Nilai ini harus diatur ke nama pengaturan aplikasi yang menahan token autentikasi Twilio Anda (TwilioAccountAuthToken). Jika tidak diatur, nama pengaturan aplikasi default adalah AzureWebJobsTwilioAuthToken.
dari Nilai ini diatur ke nomor telepon asal pengiriman teks SMS.
body Nilai ini dapat digunakan untuk kode keras pesan teks SMS jika Anda tidak perlu mengaturnya secara dinamis dalam kode untuk fungsi Anda.

Di versi 2.x, atur nilai to dalam kode Anda.

Ketika Anda mengembangkan secara lokal, tambahkan pengaturan aplikasi di file local.settings.json dalam koleksi Values.

Langkah berikutnya