Powiązanie usługi Twilio dla usługi Azure Functions

W tym artykule wyjaśniono, jak wysyłać wiadomości tekstowe przy użyciu powiązań usługi Twilio w usłudze Azure Functions. Usługa Azure Functions obsługuje powiązania wyjściowe dla usługi Twilio.

Są to informacje referencyjne dla deweloperów usługi Azure Functions. Jeśli dopiero zaczynasz korzystać z usługi Azure Functions, zacznij od następujących zasobów:

Instalowanie rozszerzenia

Instalowany pakiet NuGet rozszerzenia zależy od trybu języka C#, którego używasz w aplikacji funkcji:

Funkcje są wykonywane w izolowanym procesie roboczym języka C#. Aby dowiedzieć się więcej, zobacz Przewodnik dotyczący uruchamiania usługi Azure Functions w języku C# w izolowanym procesie roboczym.

Funkcjonalność rozszerzenia różni się w zależności od wersji rozszerzenia:

Obecnie nie ma obsługi usługi Twilio dla izolowanej aplikacji procesu roboczego.

Instalowanie pakietu

Począwszy od usługi Functions w wersji 2.x, rozszerzenie HTTP jest częścią pakietu rozszerzeń określonego w pliku projektu host.json. Aby dowiedzieć się więcej, zobacz pakiet rozszerzeń.

Ta wersja rozszerzenia powinna być już dostępna dla aplikacji funkcji z pakietem rozszerzeń w wersji 2.x.

Przykład

O ile nie określono inaczej, te przykłady są specyficzne dla wersji 2.x i nowszej środowiska uruchomieniowego usługi Functions.

Funkcję języka C# można utworzyć przy użyciu jednego z następujących trybów języka C#:

  • Model izolowanego procesu roboczego: skompilowana funkcja języka C#, która jest uruchamiana w procesie roboczym izolowanym od środowiska uruchomieniowego. Proces izolowanego procesu roboczego jest wymagany do obsługi funkcji języka C# uruchomionych w wersjach LTS i innych niż LTS platformy .NET oraz programu .NET Framework.
  • Model przetwarzania: skompilowana funkcja języka C#, która działa w tym samym procesie co środowisko uruchomieniowe usługi Functions.
  • Skrypt języka C#: używany głównie podczas tworzenia funkcji języka C# w witrynie Azure Portal.

Ważne

Wsparcie zostanie zakończone dla modelu procesu 10 listopada 2026 r. Zdecydowanie zalecamy przeprowadzenie migracji aplikacji do izolowanego modelu procesu roboczego w celu uzyskania pełnej obsługi.

Powiązanie usługi Twilio nie jest obecnie obsługiwane dla aplikacji funkcji działającej w izolowanym procesie roboczym.

W poniższym przykładzie przedstawiono powiązanie wyjściowe usługi Twilio w pliku function.json i funkcję Języka JavaScript, która używa powiązania.

Oto dane powiązania w pliku function.json :

Przykład function.json:

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

Oto kod 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
    };
};

Kompletne przykłady programu PowerShell nie są obecnie dostępne dla powiązań usługi SendGrid.

W poniższym przykładzie pokazano, jak wysłać wiadomość SMS przy użyciu powiązania wyjściowego zgodnie z definicją w poniższej function.json.

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

Można przekazać serializowany obiekt JSON do parametru w func.Out celu wysłania wiadomości 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")

W poniższym przykładzie pokazano, jak wysłać wiadomość SMS przy użyciu adnotacji TwilioSmsOutput . Wartości , tofromi body są wymagane w definicji atrybutu, nawet jeśli zastąpisz je programowo.

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

Atrybuty

Zarówno w procesie przetwarzania, jak i izolowanym procesie roboczym biblioteki języka C# używają atrybutów do zdefiniowania powiązania wyjściowego. Zamiast tego skrypt języka C# używa pliku konfiguracji function.json.

Powiązanie usługi Twilio nie jest obecnie obsługiwane dla aplikacji funkcji działającej w izolowanym procesie roboczym.

Adnotacje

Adnotacja TwilioSmsOutput umożliwia deklaratywne konfigurowanie powiązania wyjściowego usługi Twilio przez podanie następujących wartości konfiguracji:

+

Umieść adnotację TwilioSmsOutput na parametrze, gdzie T może być dowolnym natywnym typem OutputBinding<T> języka Java, takim jak int, String, byte[]lub typ POJO.

Konfigurowanie

W poniższej tabeli opisano właściwości konfiguracji powiązania ustawione w pliku function.json , które różnią się wersją środowiska uruchomieniowego:

właściwość function.json opis
type musi być ustawiona na twilioSms.
direction musi być ustawiona na out.
name Nazwa zmiennej używana w kodzie funkcji dla wiadomości SMS usługi Twilio.
accountSidSetting Ta wartość musi być ustawiona na nazwę ustawienia aplikacji, które przechowuje identyfikator SID konta usługi Twilio (TwilioAccountSid). Jeśli nie zostanie ustawiona, domyślna nazwa ustawienia aplikacji to AzureWebJobsTwilioAccountSid.
authTokenSetting Ta wartość musi być ustawiona na nazwę ustawienia aplikacji, które przechowuje token uwierzytelniania usługi Twilio (TwilioAccountAuthToken). Jeśli nie zostanie ustawiona, domyślna nazwa ustawienia aplikacji to AzureWebJobsTwilioAuthToken.
z Ta wartość jest ustawiona na numer telefonu, z którego jest wysyłany tekst SMS.
treść Ta wartość może służyć do kodowania wiadomości SMS sms, jeśli nie musisz ustawiać jej dynamicznie w kodzie funkcji.

W wersji 2.x należy ustawić to wartość w kodzie.

Podczas tworzenia aplikacji lokalnie dodaj ustawienia aplikacji w pliku local.settings.json w kolekcji Values .

Następne kroki