Bagikan melalui


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.

Menginstal bundel

Agar dapat menggunakan ekstensi pengikatan ini di aplikasi Anda, pastikan file host.json di akar proyek Anda berisi referensi ini extensionBundle :

{
    "version": "2.0",
    "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[4.0.0, 5.0.0)"
    }
}

Dalam contoh ini, version nilai [4.0.0, 5.0.0) menginstruksikan host Functions untuk menggunakan versi bundel yang setidaknya 4.0.0 tetapi kurang dari 5.0.0, yang mencakup semua versi potensial 4.x. Notasi ini secara efektif mempertahankan aplikasi Anda pada versi minor terbaru yang tersedia dari bundel ekstensi v4.x.

Jika memungkinkan, Anda harus menggunakan versi utama bundel ekstensi terbaru dan memungkinkan runtime untuk secara otomatis mempertahankan versi minor terbaru. Anda dapat melihat konten bundel terbaru pada halaman rilis bundel ekstensi. Untuk informasi selengkapnya, lihat Bundel ekstensi Azure Functions.

Example

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

Anda dapat membuat fungsi C# 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 dukungan jangka panjang (LTS) dan non-LTS untuk .NET dan .NET Framework.
  • Model dalam proses: Fungsi C# terkompilasi yang berjalan dalam proses yang sama dengan runtime Azure Functions.
  • Skrip C#: Digunakan terutama saat Anda membuat fungsi C# di portal Microsoft Azure.

Important

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 dalam 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.jsonberikut .

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

Attributes

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.

Annotations

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

+

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

Configuration

Tabel berikut menjelaskan properti konfigurasi pengikatan yang Anda tetapkan dalam file function.json , yang berbeda menurut versi runtime:

properti function.json Description
type harus diatur ke twilioSms.
direction harus diatur ke out.
name 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.
from 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.

Saat Anda mengembangkan secara lokal, tambahkan pengaturan aplikasi Anda di filelocal.settings.json dalam Values koleksi.

Langkah selanjutnya