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:

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, 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();
    }
}

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.

Próximos passos