Twilio-Bindung für Azure Functions
Dieser Artikel erläutert das Senden von Textnachrichten mithilfe von Twilio-Bindungen in Azure Functions. Azure Functions unterstützt Ausgabebindungen für Twilio.
Dies sind Referenzinformationen für Azure Functions-Entwickler. Falls Sie mit Azure Functions noch nicht vertraut sind, beginnen Sie mit den folgenden Ressourcen:
Referenzen für C#-Entwickler:
Installieren der Erweiterung
Das NuGet-Erweiterungspaket, das Sie installieren, hängt vom C#-Modus ab, den Sie in Ihrer Funktions-App verwenden:
Funktionen werden in einem isolierten C#-Workerprozess ausgeführt. Weitere Informationen finden Sie im Leitfaden zum Ausführen von Azure Functions (C#) in einem isolierten Workerprozess.
Die Funktionalität der Erweiterung ist abhängig von der Erweiterungsversion unterschiedlich:
Twilio wird derzeit für Apps in einem isolierten Workerprozess nicht unterstützt.
Installieren des Pakets
Ab Functions Version 2.x ist die HTTP-Erweiterung Teil eines Erweiterungspakets, das in Ihrer Projektdatei „host.json“ angegeben wird. Weitere Informationen finden Sie unter Erweiterungspakete.
Diese Version der Erweiterung sollte bereits für Ihre Funktions-App mit dem Erweiterungspaket, Version 2.x, verfügbar sein.
Beispiel
Sofern nicht anders angegeben, gelten diese Beispiele speziell für die Version 2.x und höhere Versionen der Functions-Runtime.
Eine C#-Funktion kann mit einem der folgenden C#-Modi erstellt werden:
- Isoliertes Workermodell: Kompilierte C#-Funktion, die in einem Workerprozess ausgeführt wird, der von der Runtime isoliert ist. Ein isolierter Workerprozess ist erforderlich, um C#-Funktionen zu unterstützen, die in LTS- und Nicht-LTS-Versionen von .NET und .NET Framework ausgeführt werden.
- In-Process-Modell: Kompilierte C#-Funktion, die im gleichen Prozess wie die Functions-Runtime ausgeführt wird.
- C#-Skript: Wird hauptsächlich beim Erstellen von C#-Funktionen im Azure-Portal verwendet.
Wichtig
Die Unterstützung für das In-Process-Modell endet am 10. November 2026. Es wird dringend empfohlen, Ihre Apps zum isolierten Workermodell zu migrieren, um den vollständigen Support zu ermöglichen.
Für Funktions-Apps, die in einem isolierten Workerprozess ausgeführt werden, wird die Twilio-Bindung derzeit nicht unterstützt.
Das folgende Beispiel zeigt eine Twilio-Ausgabebindung in einer Datei function.json sowie eine JavaScript-Funktion, die die Bindung verwendet.
Die Bindungsdaten in der Datei function.json:
Beispiel für „function.json“:
{
"type": "twilioSms",
"name": "message",
"accountSidSetting": "TwilioAccountSid",
"authTokenSetting": "TwilioAuthToken",
"from": "+1425XXXXXXX",
"direction": "out",
"body": "Azure Functions Testing"
}
Der JavaScript-Code sieht wie folgt aus:
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
};
};
Vollständige PowerShell-Beispiele sind derzeit für SendGrid-Bindungen nicht verfügbar.
Im folgenden Beispiel wird gezeigt, wie Sie eine SMS-Nachricht unter Verwendung der Ausgabebindung senden, wie im folgenden Code (function.json) definiert.
{
"type": "twilioSms",
"name": "twilioMessage",
"accountSidSetting": "TwilioAccountSID",
"authTokenSetting": "TwilioAuthToken",
"from": "+1XXXXXXXXXX",
"direction": "out",
"body": "Azure Functions Testing"
}
Sie können ein serialisiertes JSON-Objekt an den Parameter func.Out
übergeben, um die SMS-Nachricht zu senden.
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")
Im folgenden Beispiel wird gezeigt, wie Sie die Anmerkung TwilioSmsOutput verwenden, um eine SMS-Nachricht zu senden. In der Attributdefinition müssen Werte für to
, from
und body
angegeben werden, auch wenn Sie sie programmgesteuert überschreiben.
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
Sowohl von C#-Bibliotheken des Typs In-Process als auch des Typs Isolierter Workerprozess werden Attribute verwendet, um die Ausgabebindung zu definieren. Vom C#-Skript wird stattdessen die Konfigurationsdatei function.json verwendet.
Für Funktions-Apps, die in einem isolierten Workerprozess ausgeführt werden, wird die Twilio-Bindung derzeit nicht unterstützt.
Anmerkungen
Mit der Anmerkung TwilioSmsOutput können Sie die Twilio-Ausgabebindung deklarativ konfigurieren, indem Sie die folgenden Konfigurationswerte angeben:
+
Platzieren Sie die Anmerkung TwilioSmsOutput in einem Parameter vom Typ OutputBinding<T>
. T
kann hierbei ein beliebiger nativer Java-Typ (beispielsweise int
, String
oder byte[]
) oder ein POJO-Typ sein.
Konfiguration
Die folgende Tabelle gibt Aufschluss über die Bindungskonfigurationseigenschaften, die Sie in der Datei function.json festlegen (unterscheidet sich je nach Runtimeversion):
Eigenschaft von „function.json“ | BESCHREIBUNG |
---|---|
type | auf twilioSms festgelegt werden muss. |
direction | auf out festgelegt werden muss. |
name | Variablenname, der im Funktionscode für die Twilio-SMS-Textnachricht verwendet wird |
accountSidSetting | Dieser Wert muss auf den Namen einer App-Einstellung festgelegt werden, die Ihre Twilio-Konto-SID (TwilioAccountSid ) enthält. Wenn sie nicht festgelegt wird, lautet der Standardname der App-Einstellung AzureWebJobsTwilioAccountSid . |
authTokenSetting | Dieser Wert muss auf den Namen einer App-Einstellung festgelegt werden, die Ihr Twilio-Authentifizierungstoken (TwilioAccountAuthToken ) enthält. Wenn sie nicht festgelegt wird, lautet der Standardname der App-Einstellung AzureWebJobsTwilioAuthToken . |
from | Dieser Wert wird auf die Telefonnummer festgelegt, von der die SMS-Textnachricht gesendet wird. |
body | Dieser Wert kann verwendet werden, um die SMS-Textnachricht als vordefinierten Code festzulegen und nicht dynamisch im Code für die Funktion. |
Legen Sie den Wert to
in Version 2.x im Code fest.
Wenn Sie die Entwicklung lokal ausführen, fügen Sie Ihre Anwendungseinstellungen in der Datei local.settings.json in der Values
-Sammlung hinzu.