Twilio-bindning för Azure Functions

Den här artikeln beskriver hur du skickar textmeddelanden med hjälp av Twilio-bindningar i Azure Functions. Azure Functions stöder utdatabindningar för Twilio.

Det här är referensinformation för Azure Functions-utvecklare. Om du inte har använt Azure Functions tidigare börjar du med följande resurser:

Installera tillägget

Vilket NuGet-tilläggspaket du installerar beror på vilket C#-läge du använder i funktionsappen:

Funktioner körs i en isolerad C#-arbetsprocess. Mer information finns i Guide för att köra C# Azure Functions i en isolerad arbetsprocess.

Funktionerna i tillägget varierar beroende på tilläggsversionen:

Det finns för närvarande inget stöd för Twilio för en isolerad arbetsprocessapp.

Installera paket

Från och med Functions version 2.x är HTTP-tillägget en del av ett tilläggspaket som anges i din host.json projektfil. Mer information finns i tilläggspaketet.

Den här versionen av tillägget bör redan vara tillgänglig för funktionsappen med tilläggspaketet version 2.x.

Exempel

Om inget annat anges är dessa exempel specifika för version 2.x och senare version av Functions-körningen.

En C#-funktion kan skapas med något av följande C#-lägen:

  • Isolerad arbetsmodell: Kompilerad C#-funktion som körs i en arbetsprocess som är isolerad från körningen. Isolerad arbetsprocess krävs för att stödja C#-funktioner som körs på LTS- och icke-LTS-versioner .NET och .NET Framework.
  • Processmodell: Kompilerad C#-funktion som körs i samma process som Functions-körningen.
  • C#-skript: Används främst när du skapar C#-funktioner i Azure-portalen.

Twilio-bindningen stöds för närvarande inte för en funktionsapp som körs i en isolerad arbetsprocess.

I följande exempel visas en Twilio-utdatabindning i en function.json-fil och en JavaScript-funktion som använder bindningen.

Här är bindningsdata i filen function.json :

Exempel function.json:

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

Här är JavaScript-koden:

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
    };
};

Fullständiga PowerShell-exempel är för närvarande inte tillgängliga för SendGrid-bindningar.

I följande exempel visas hur du skickar ett SMS med hjälp av utdatabindningen enligt definitionen i följande function.json.

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

Du kan skicka ett serialiserat JSON-objekt till parametern func.Out för att skicka SMS-meddelandet.

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")

I följande exempel visas hur du använder TwilioSmsOutput-kommentaren för att skicka ett SMS. Värden för to, fromoch body krävs i attributdefinitionen även om du åsidosätter dem programmatiskt.

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

Attribut

C#-bibliotek i både processprocess och isolerad arbetsprocess använder attribut för att definiera utdatabindningen. C#-skriptet använder i stället en function.json konfigurationsfil.

Twilio-bindningen stöds för närvarande inte för en funktionsapp som körs i en isolerad arbetsprocess.

Kommentarer

Med TwilioSmsOutput-kommentaren kan du deklarativt konfigurera Twilio-utdatabindningen genom att ange följande konfigurationsvärden:

+

Placera TwilioSmsOutput-kommentaren på en OutputBinding<T> parameter, där T kan vara valfri inbyggd Java-typ, till exempel int, String, byte[]eller en POJO-typ.

Konfiguration

I följande tabell förklaras de bindningskonfigurationsegenskaper som du anger i function.json-filen, som skiljer sig beroende på körningsversion:

function.json egenskap beskrivning
typ måste anges till twilioSms.
riktning måste anges till out.
Namn Variabelnamn som används i funktionskoden för SMS-meddelandet Twilio.
accountSidSetting Det här värdet måste anges till namnet på en appinställning som innehåller ditt Twilio-konto-sid (TwilioAccountSid). När den inte har angetts är AzureWebJobsTwilioAccountSidstandardnamnet för appinställningen .
authTokenSetting Det här värdet måste anges till namnet på en appinställning som innehåller din Twilio-autentiseringstoken (TwilioAccountAuthToken). När den inte har angetts är AzureWebJobsTwilioAuthTokenstandardnamnet för appinställningen .
från Det här värdet är inställt på det telefonnummer som SMS-texten skickas från.
brödtext Det här värdet kan användas för att hårdkoda SMS-meddelandet om du inte behöver ange det dynamiskt i koden för din funktion.

I version 2.x anger to du värdet i koden.

När du utvecklar lokalt lägger du till dina programinställningar i den local.settings.json filen i Values samlingen.

Nästa steg