Associação de Twilio para o Azure Functions
Este artigo explica como enviar mensagens de texto usando-se as associações de Twilio no Azure Functions. O Azure Functions oferece suporte a uma associação de saída para o Twilio.
Essas são as informações de referência para desenvolvedores do Azure Functions. Se for novo no Azure Functions, comece com os seguintes recursos:
Referências para desenvolvedores C#:
Instalar a extensão
O pacote NuGet da extensão instalado depende do modo C# usado no aplicativo de funções:
As funções são executadas em um processo de trabalho do C# isolado. Para saber mais, confira o Guia para executar C# do Azure Functions em um processo de trabalho isolado.
A funcionalidade da extensão varia de acordo com a versão da extensão:
Atualmente, não há compatibilidade com o Twilio para um aplicativo de processo de trabalho isolado.
Instalar pacote
A partir da versão Funções 2.x, a extensão HTTP faz parte de um pacote de extensão, que é especificado no arquivo de projeto host.json. Para saber mais, confira pacotes de extensão.
Esta versão da extensão já deve estar disponível para seu aplicativo de funções com o pacote de extensão na versão 2.x.
Exemplo
Salvo indicação em contrário, esses exemplos são específicos da versão 2.x e versões posteriores do runtime do Functions.
A função C# pode ser criada por meio de um dos seguintes modos C#:
- Modelo de trabalho isolado: função C# compilada executada em um processo de trabalho que está isolado do runtime. É necessário um processo de trabalho isolado para dar suporte às funções C# executadas nas versões LTS e não LTS do .NET e do .NET Framework.
- Modelo em processo: função C# compilada no mesmo processo que o runtime do Functions.
- Script C#: usado principalmente ao criar funções C# no portal do Azure.
Importante
O suporte terminará para o modelo em processo em 10 de novembro de 2026. É altamente recomendável migrar seus aplicativos para o modelo de trabalho isolado para obter suporte completo.
Atualmente, a associação do Twilio não é compatível com um aplicativo de funções em execução em um processo de trabalho isolado.
O exemplo a seguir mostra uma associação de saída do Twilio em um arquivo function.json e código script C# que usa a associação.
Aqui estão os dados de associação no arquivo function.json:
function.json de exemplo:
{
"type": "twilioSms",
"name": "message",
"accountSidSetting": "TwilioAccountSid",
"authTokenSetting": "TwilioAuthToken",
"from": "+1425XXXXXXX",
"direction": "out",
"body": "Azure Functions Testing"
}
Aqui está o código 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
};
};
Exemplos completos do PowerShell não estão disponíveis atualmente para as associações do SendGrid.
O exemplo a seguir mostra como enviar uma mensagem SMS usando a associação de saída, conforme definido no seguinte function.json.
{
"type": "twilioSms",
"name": "twilioMessage",
"accountSidSetting": "TwilioAccountSID",
"authTokenSetting": "TwilioAuthToken",
"from": "+1XXXXXXXXXX",
"direction": "out",
"body": "Azure Functions Testing"
}
Você pode passar um objeto JSON serializado para o parâmetro func.Out
para enviar a mensagem 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")
O exemplo a seguir mostra como usar a anotação TwilioSmsOutput para enviar uma mensagem SMS. Os valores de to
, from
e body
são necessários na definição do atributo, mesmo que você os substitua programaticamente.
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();
}
}
Atributos
Ambas as bibliotecas C# em processo e no processo de trabalho isolado usam atributos para definir a associação de saída. Em vez disso, o script C# usa um arquivo de configuração function.json.
Atualmente, a associação do Twilio não é compatível com um aplicativo de funções em execução em um processo de trabalho isolado.
Anotações
A anotação TwilioSmsOutput permite configurar declarativamente a associação de saída do Twilio fornecendo os seguintes valores de configuração:
+
Insira a anotação TwilioSmsOutput em um parâmetro OutputBinding<T>
em que T
pode ser qualquer tipo Java nativo, como int
, String
, byte[]
ou um tipo POJO.
Configuração
A seguinte tabela explica as propriedades de configuração de associação que você define no arquivo function.json, que difere pela versão do runtime:
Propriedade function.json | Descrição |
---|---|
tipo | deve ser definido como twilioSms . |
direction | deve ser definido como out . |
name | Nome da variável usada no código de função para a mensagem de texto SMS do Twilio. |
accountSidSetting | Esse valor deve ser definido como o nome de uma Configuração de aplicativo que contém a SID da sua conta do Twilio (TwilioAccountSid ). Se não estiver configurado, o nome da configuração do aplicativo padrão será AzureWebJobsTwilioAccountSid . |
authTokenSetting | Esse valor deve ser definido como o nome de uma Configuração de aplicativo que contém seu token de autenticação do Twilio (TwilioAccountAuthToken ). Se não estiver configurado, o nome da configuração do aplicativo padrão será AzureWebJobsTwilioAuthToken . |
from | Esse valor é definido como o número de telefone com o qual será enviada a mensagem de texto SMS. |
body | Esse valor pode ser usado para fixar a mensagem de texto SMS no código se você não precisa defini-la dinamicamente no código de sua função. |
Na versão 2.x, você definirá o valor to
em seu código.
Quando você estiver desenvolvendo localmente, adicione as configurações do aplicativo no arquivo local.settings.json na coleção Values
.