Twilio-binding voor Azure Functions
In dit artikel wordt uitgelegd hoe u sms-berichten verzendt met behulp van Twilio-bindingen in Azure Functions. Azure Functions ondersteunt uitvoerbindingen voor Twilio.
Dit is referentie-informatie voor Azure Functions-ontwikkelaars. Als u nog geen ervaring hebt met Azure Functions, begint u met de volgende resources:
C#-verwijzingen voor ontwikkelaars:
De extensie installeren
Het NuGet-extensiepakket dat u installeert, is afhankelijk van de C#-modus die u gebruikt in uw functie-app:
Functies worden uitgevoerd in een geïsoleerd C#-werkproces. Zie De handleiding voor het uitvoeren van C# Azure Functions in een geïsoleerd werkproces voor meer informatie.
De functionaliteit van de extensie varieert afhankelijk van de extensieversie:
Er is momenteel geen ondersteuning voor Twilio voor een geïsoleerde werkproces-app.
Bundel installeren
Vanaf Functions versie 2.x maakt de HTTP-extensie deel uit van een extensiebundel, die is opgegeven in uw host.json projectbestand. Zie uitbreidingsbundel voor meer informatie.
Deze versie van de extensie moet al beschikbaar zijn voor uw functie-app met extensiebundel, versie 2.x.
Opmerking
Tenzij anders vermeld, zijn deze voorbeelden specifiek voor versie 2.x en latere versie van de Functions-runtime.
U kunt een C#-functie maken met behulp van een van de volgende C#-modi:
- Geïsoleerd werkrolmodel: gecompileerde C#-functie die wordt uitgevoerd in een werkproces dat is geïsoleerd van de runtime. Geïsoleerd werkproces is vereist voor de ondersteuning van C#-functies die worden uitgevoerd op LTS- en niet-LTS-versies .NET en .NET Framework.
- In-process model: gecompileerde C#-functie die wordt uitgevoerd in hetzelfde proces als de Functions-runtime.
- C#-script: wordt voornamelijk gebruikt wanneer u C#-functies maakt in Azure Portal.
Belangrijk
De ondersteuning wordt beëindigd voor het in-process model op 10 november 2026. We raden u ten zeerste aan uw apps te migreren naar het geïsoleerde werkrolmodel voor volledige ondersteuning.
De Twilio-binding wordt momenteel niet ondersteund voor een functie-app die wordt uitgevoerd in een geïsoleerd werkproces.
In het volgende voorbeeld ziet u een Twilio-uitvoerbinding in een function.json-bestand en een JavaScript-functie die gebruikmaakt van de binding.
Dit zijn bindingsgegevens in het function.json-bestand :
Voorbeeld function.json:
{
"type": "twilioSms",
"name": "message",
"accountSidSetting": "TwilioAccountSid",
"authTokenSetting": "TwilioAuthToken",
"from": "+1425XXXXXXX",
"direction": "out",
"body": "Azure Functions Testing"
}
Dit is de JavaScript-code:
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
};
};
Volledige PowerShell-voorbeelden zijn momenteel niet beschikbaar voor SendGrid-bindingen.
In het volgende voorbeeld ziet u hoe u een sms-bericht verzendt met behulp van de uitvoerbinding zoals gedefinieerd in de volgende function.json.
{
"type": "twilioSms",
"name": "twilioMessage",
"accountSidSetting": "TwilioAccountSID",
"authTokenSetting": "TwilioAuthToken",
"from": "+1XXXXXXXXXX",
"direction": "out",
"body": "Azure Functions Testing"
}
U kunt een geserialiseerd JSON-object doorgeven aan de func.Out
parameter om het SMS-bericht te verzenden.
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")
In het volgende voorbeeld ziet u hoe u de aantekening TwilioSmsOutput gebruikt om een SMS-bericht te verzenden. Waarden voor to
, from
en body
zijn vereist in de kenmerkdefinitie, zelfs als u deze programmatisch overschrijft.
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();
}
}
Kenmerken
Zowel in-process als geïsoleerde werkproces C#-bibliotheken gebruiken kenmerken om de uitvoerbinding te definiëren. C#-script maakt in plaats daarvan gebruik van een function.json configuratiebestand.
De Twilio-binding wordt momenteel niet ondersteund voor een functie-app die wordt uitgevoerd in een geïsoleerd werkproces.
Aantekeningen
Met de aantekening TwilioSmsOutput kunt u de Twilio-uitvoerbinding declaratief configureren door de volgende configuratiewaarden op te geven:
+
Plaats de aantekening voor TwilioSmsOutput op een OutputBinding<T>
parameter, waar T
mogelijk een systeemeigen Java-type is, zoals int
, String
of byte[]
een POJO-type.
Configuratie
In de volgende tabel worden de bindingsconfiguratie-eigenschappen beschreven die u hebt ingesteld in het function.json-bestand , wat verschilt per runtimeversie:
function.json-eigenschap | Beschrijving |
---|---|
type | moet zijn ingesteld op twilioSms . |
direction | moet zijn ingesteld op out . |
name | Variabelenaam die wordt gebruikt in functiecode voor het sms-bericht van Twilio. |
accountSidSetting | Deze waarde moet worden ingesteld op de naam van een app-instelling die uw Twilio-account-sid (TwilioAccountSid ) bevat. Als deze instelling niet is ingesteld, is AzureWebJobsTwilioAccountSid de standaardnaam van de app-instelling. |
authTokenSetting | Deze waarde moet worden ingesteld op de naam van een app-instelling die uw Twilio-verificatietoken (TwilioAccountAuthToken ) bevat. Als deze instelling niet is ingesteld, is AzureWebJobsTwilioAuthToken de standaardnaam van de app-instelling. |
van | Deze waarde wordt ingesteld op het telefoonnummer van waaruit de sms-tekst wordt verzonden. |
hoofdtekst | Deze waarde kan worden gebruikt om het sms-tekstbericht in code vast te stellen als u deze niet dynamisch hoeft in te stellen in de code voor uw functie. |
In versie 2.x stelt u de to
waarde in uw code in.
Wanneer u lokaal ontwikkelt, voegt u uw toepassingsinstellingen toe aan het local.settings.json-bestand in de Values
verzameling.