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:
Dokumentacja dla deweloperów języka C#:
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ń.
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 , to
from
i 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
.