Compartir a través de


Enlace de Twilio para Azure Functions

En este artículo se explica cómo enviar mensajes de texto mediante enlaces de Twilio en Azure Functions. Azure Functions admite los enlaces de salida para Twilio.

Esta es la información de referencia para desarrolladores de Azure Functions. Si está familiarizado con Azure Functions, comience con los siguientes recursos:

Instalación de la extensión

El paquete NuGet de la extensión que instale depende del modo de C# que esté usando en la aplicación de funciones:

Las funciones se ejecutan en un proceso de trabajo de C# aislado. Para más información, consulte Guía para ejecutar C# Azure Functions en un proceso de trabajo aislado.

La funcionalidad de la extensión varía en función de la versión de la extensión:

Actualmente no hay compatibilidad con Twilio para una aplicación de procesos de trabajo aislados.

Instalación de la agrupación

Para poder usar esta extensión de enlace en la aplicación, asegúrese de que el archivo host.json en la raíz del proyecto contiene esta extensionBundle referencia:

{
    "version": "2.0",
    "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[4.0.0, 5.0.0)"
    }
}

En este ejemplo, el version valor de [4.0.0, 5.0.0) indica al host de Functions que use una versión de agrupación que sea al menos 4.0.0 pero menor 5.0.0que , que incluye todas las versiones potenciales de 4.x. Esta notación mantiene eficazmente la aplicación en la versión secundaria más reciente disponible del paquete de extensiones v4.x.

Cuando sea posible, debe usar la versión principal del paquete de extensiones más reciente y permitir que el tiempo de ejecución mantenga automáticamente la versión secundaria más reciente. Puede ver el contenido de la agrupación más reciente en la página de versión de paquetes de extensiones. Para más información, consulte Paquetes de extensiones de Azure Functions.

Example

A menos que se indique lo contrario, estos ejemplos son específicos de la versión 2.x y versiones posteriores del runtime de Functions.

Puede crear una función de C# mediante uno de los siguientes modos de C#:

  • Modelo de trabajo aislado: función compilada en C# que se ejecuta en un proceso trabajador aislado del tiempo de ejecución. Se requiere un proceso de trabajo aislado para admitir funciones de C# que se ejecutan en versiones de soporte técnico a largo plazo (LTS) y no LTS para .NET y .NET Framework.
  • Modelo en proceso: función de C# compilada que se ejecuta en el mismo proceso que el tiempo de ejecución de Azure Functions.
  • Script de C#: se usa principalmente al crear funciones de C# en Azure Portal.

El enlace de Twilio no se admite actualmente para una aplicación de funciones que se ejecuta en un proceso de trabajo aislado.

En el ejemplo siguiente se muestra un enlace de salida de Twilio en un archivo function.json y una función de JavaScript que usa el enlace.

Estos son los datos de enlace del archivo function.json:

Function.json de ejemplo:

{
  "type": "twilioSms",
  "name": "message",
  "accountSidSetting": "TwilioAccountSid",
  "authTokenSetting": "TwilioAuthToken",
  "from": "+1425XXXXXXX",
  "direction": "out",
  "body": "Azure Functions Testing"
}

Este es el código de 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
    };
};

Los ejemplos completos de PowerShell no están disponibles actualmente para los enlaces de SendGrid.

En el ejemplo siguiente se muestra cómo enviar un mensaje SMS mediante el enlace de salida tal como se define en el siguiente function.json.

    {
      "type": "twilioSms",
      "name": "twilioMessage",
      "accountSidSetting": "TwilioAccountSID",
      "authTokenSetting": "TwilioAuthToken",
      "from": "+1XXXXXXXXXX",
      "direction": "out",
      "body": "Azure Functions Testing"
    }

Puede pasar un objeto JSON serializado al parámetro func.Out para enviar el mensaje 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")

En el ejemplo siguiente se muestra cómo usar la anotación TwilioSmsOutput para enviar un mensaje SMS. Los valores de to, from y body se requieren en la definición de atributo aunque se invaliden mediante programación.

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

Las bibliotecas de C# del proceso de trabajo en proceso y aislado usan atributos para definir el enlace de salida. El script de C#, en su lugar, usa un archivo de configuración function.json.

El enlace de Twilio no se admite actualmente para una aplicación de funciones que se ejecuta en un proceso de trabajo aislado.

Annotations

La anotación TwilioSmsOutput permite configurar mediante declaración el enlace de salida de Twilio proporcionando los siguientes valores de configuración:

+

Coloque la anotación TwilioSmsOutput en un OutputBinding<T> parámetro, donde T puede ser cualquier tipo nativo de Java, como int, String, byte[]o un tipo POJO.

Configuration

En la tabla siguiente se explican las propiedades de configuración de enlace que estableció en el archivo function.json , que difiere según la versión del entorno de ejecución:

propiedad function.json Description
type Se debe establecer en twilioSms.
direction Se debe establecer en out.
name Nombre de variable usado en el código de función para el mensaje de texto SMS de Twilio.
accountSidSetting Este valor debe establecerse en el nombre de una configuración de aplicación que contiene el SID de la cuenta de Twilio (TwilioAccountSid). Si no está establecido, el nombre predeterminado de la configuración de aplicación es AzureWebJobsTwilioAccountSid.
authTokenSetting Este valor debe establecerse en el nombre de una configuración de aplicación que contiene el token de autenticación de Twilio (TwilioAccountAuthToken). Si no está establecido, el nombre predeterminado de la configuración de aplicación es AzureWebJobsTwilioAuthToken.
from Este valor se establece en el número de teléfono desde el que se envía el mensaje de texto SMS.
body Este valor se puede usar para codificar el mensaje de texto SMS si no necesita establecerlo dinámicamente en el código de la función.

En la versión 2.x, el valor to se establece en el código.

Al desarrollar localmente, agregue la configuración de la aplicación en el archivolocal.settings.json de la Values colección.

Pasos siguientes