Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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
Para poder usar essa extensão de associação em seu aplicativo, certifique-se de que o arquivo dehost.json na raiz do seu 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 de instrui o host Functions a usar uma versão de [4.0.0, 5.0.0) pacote que seja pelo menos 4.0.0 , mas 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 mais recente do pacote de extensão e permitir que o tempo de execução mantenha automaticamente a versão secundária mais recente. Você pode visualizar o conteúdo do pacote mais recente na página de lançamento dos pacotes de extensão. Para obter mais informações, consulte Pacotes de extensão do Azure Functions.
Example
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.
Você pode criar uma função C# 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. Um processo de trabalho isolado é necessário para dar suporte a funções C# executadas em versões LTS (long-term support) e não-LTS para .NET e .NET Framework.
- Modelo em processo: função C# compilada que é executada no mesmo processo que o tempo de execução do Azure Functions.
- Script C#: usado principalmente quando você cria funções C# no portal do Azure.
Important
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.jsona 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, frome 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();
}
}
Attributes
As bibliotecas C# do processo de trabalhoem 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.
Annotations
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.
Configuration
A tabela a seguir explica as propriedades de configuração de vinculação definidas no arquivo function.json , que diferem de acordo com a versão de tempo de execução:
| function.json propriedade | Description |
|---|---|
| type | 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 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. |
| body | 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 arquivolocal.settings.json na Values coleção.