Vinculação do Twilio para o Azure Functions
Este artigo explica como enviar mensagens de texto usando associações do Twilio no Azure Functions. O Azure Functions dá suporte a associações de saída para Twilio.
Estas são informações de referência para desenvolvedores do Azure Functions. Se você é novo no Azure Functions, comece com os seguintes recursos:
Referências do desenvolvedor C#:
Instalar a extensão
O pacote de extensão NuGet que você instala depende do modo C# que você está usando em seu aplicativo de função:
As funções são executadas em um processo de trabalho C# isolado. Para saber mais, consulte Guia para executar o C# Azure Functions em um processo de trabalho isolado.
A funcionalidade da extensão varia dependendo da versão da extensão:
Atualmente, não há suporte para o Twilio para um aplicativo de processo de trabalho isolado.
Instalar pacote
A partir do Functions versão 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, consulte Pacote de extensão.
Esta versão da extensão já deve estar disponível para o seu aplicativo de função com pacote de extensão, versão 2.x.
Exemplo
Salvo indicação em contrário, estes exemplos são específicos da versão 2.x e da versão posterior do tempo de execução do Functions.
Uma função C# pode ser criada usando um dos seguintes modos C#:
- Modelo de trabalho isolado: função C# compilada que é executada em um processo de trabalho isolado do tempo de execução. O processo de trabalho isolado é necessário para suportar funções C# em execução nas versões LTS e não-LTS .NET e .NET Framework.
- Modelo em processo: função C# compilada que é executada no mesmo processo que o tempo de execução do Functions.
- Script C#: usado principalmente quando você cria funções C# no portal do Azure.
Importante
O suporte para o modelo em processo terminará em 10 de novembro de 2026. É altamente recomendável que você migre seus aplicativos para o modelo de trabalho isolado para obter suporte total.
A associação Twilio não é suportada atualmente para um aplicativo de função em execução em um processo de trabalho isolado.
O exemplo a seguir mostra uma ligação de saída Twilio em um arquivo function.json e uma função JavaScript que usa a ligação.
Aqui estão os dados de vinculação no arquivo function.json :
Exemplo function.json:
{
"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 atualmente disponíveis para associações do SendGrid.
O exemplo a seguir mostra como enviar uma mensagem SMS usando a associação de saída, conforme definido no function.json a seguir.
{
"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 func.Out
parâmetro 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 para to
, from
e body
são necessários na definição de 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
As bibliotecas C# do processo de trabalho em processo e isoladas usam atributos para definir a ligação de saída. Em vez disso, o script C# usa um arquivo de configuração function.json.
A associação Twilio não é suportada atualmente para um aplicativo de função em execução em um processo de trabalho isolado.
Anotações
A anotação TwilioSmsOutput permite configurar declarativamente a ligação de saída do Twilio fornecendo os seguintes valores de configuração:
+
Coloque a anotação TwilioSmsOutput em um OutputBinding<T>
parâmetro, onde T
pode ser qualquer tipo Java nativo, como int
, String
, byte[]
ou um tipo POJO.
Configuração
A tabela a seguir explica as propriedades de configuração de vinculação definidas no arquivo function.json, que difere de acordo com a versão de tempo de execução:
function.json propriedade | Description |
---|---|
type | deve ser definido como twilioSms . |
direção | deve ser definido como out . |
Designação | Nome da variável usada no código de função para a mensagem de texto SMS Twilio. |
accountSidSetting | Esse valor deve ser definido como o nome de uma configuração de aplicativo que contém seu Sid de Conta Twilio (TwilioAccountSid ). Quando não está definido, o nome da configuração padrão do aplicativo é AzureWebJobsTwilioAccountSid . |
authTokenSetting | Esse valor deve ser definido como o nome de uma configuração de aplicativo que contém seu token de autenticação Twilio (TwilioAccountAuthToken ). Quando não está definido, o nome da configuração padrão do aplicativo é AzureWebJobsTwilioAuthToken . |
from | Esse valor é definido como o número de telefone do qual o texto SMS é enviado. |
corpo | Esse valor pode ser usado para codificar a mensagem de texto SMS se você não precisar defini-lo dinamicamente no código para sua função. |
Na versão 2.x, você define o to
valor em seu código.
Quando estiver desenvolvendo localmente, adicione as configurações do aplicativo no arquivo local.settings.json na Values
coleção.