Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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
Para poder usar essa extensão de associação em seu aplicativo, verifique se o arquivo host.json na raiz do projeto contém esta extensionBundle referência:
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[4.0.0, 5.0.0)"
}
}
Neste exemplo, o version valor instrui o host do [4.0.0, 5.0.0) Functions a usar uma versão de pacote pelo menos 4.0.0 menor que 5.0.0, que inclui todas as versões potenciais do 4.x. Essa notação mantém efetivamente seu aplicativo na versão secundária mais recente disponível do pacote de extensão v4.x.
Quando possível, você deve usar a versão principal do pacote de extensão mais recente e permitir que o runtime mantenha automaticamente a versão secundária mais recente. Você pode exibir o conteúdo do pacote mais recente na página de lançamento dos pacotes de extensão. Para obter mais informações, consulte os pacotes de extensão do Azure Functions.
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.
Você pode criar uma função C# usando um dos seguintes modos C#:
- Modelo de trabalho isolado: função C# compilada executada em um processo de trabalho que está isolado do runtime. Um processo de trabalho isolado é necessário para dar suporte a funções C# em execução em LTS (suporte de longo prazo) e versões não LTS para .NET e .NET Framework.
- Modelo em processo: função C# compilada que é executada no mesmo processo que o runtime do Azure 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. |
| direção | deve ser definido como out. |
| nome | 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. |
| de | Esse valor é definido como o número de telefone com o qual será enviada a mensagem de texto SMS. |
| Corpo | 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.