Twilio-binding voor Azure Functions

In dit artikel wordt uitgelegd hoe u sms-berichten verzendt met behulp van Twilio-bindingen in Azure Functions. Azure Functions ondersteunt uitvoerbindingen voor Twilio.

Dit is referentie-informatie voor Azure Functions-ontwikkelaars. Als u nog geen ervaring hebt met Azure Functions, begint u met de volgende resources:

De extensie installeren

Het NuGet-extensiepakket dat u installeert, is afhankelijk van de C#-modus die u gebruikt in uw functie-app:

Functies worden uitgevoerd in een geïsoleerd C#-werkproces. Zie De handleiding voor het uitvoeren van C# Azure Functions in een geïsoleerd werkproces voor meer informatie.

De functionaliteit van de extensie varieert afhankelijk van de extensieversie:

Er is momenteel geen ondersteuning voor Twilio voor een geïsoleerde werkproces-app.

Bundel installeren

Vanaf Functions versie 2.x maakt de HTTP-extensie deel uit van een extensiebundel, die is opgegeven in uw host.json projectbestand. Zie uitbreidingsbundel voor meer informatie.

Deze versie van de extensie moet al beschikbaar zijn voor uw functie-app met extensiebundel, versie 2.x.

Opmerking

Tenzij anders vermeld, zijn deze voorbeelden specifiek voor versie 2.x en latere versie van de Functions-runtime.

U kunt een C#-functie maken met behulp van een van de volgende C#-modi:

  • Geïsoleerd werkrolmodel: gecompileerde C#-functie die wordt uitgevoerd in een werkproces dat is geïsoleerd van de runtime. Geïsoleerd werkproces is vereist voor de ondersteuning van C#-functies die worden uitgevoerd op LTS- en niet-LTS-versies .NET en .NET Framework.
  • In-process model: gecompileerde C#-functie die wordt uitgevoerd in hetzelfde proces als de Functions-runtime.
  • C#-script: wordt voornamelijk gebruikt wanneer u C#-functies maakt in Azure Portal.

De Twilio-binding wordt momenteel niet ondersteund voor een functie-app die wordt uitgevoerd in een geïsoleerd werkproces.

In het volgende voorbeeld ziet u een Twilio-uitvoerbinding in een function.json-bestand en een JavaScript-functie die gebruikmaakt van de binding.

Dit zijn bindingsgegevens in het function.json-bestand :

Voorbeeld function.json:

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

Dit is de JavaScript-code:

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

Volledige PowerShell-voorbeelden zijn momenteel niet beschikbaar voor SendGrid-bindingen.

In het volgende voorbeeld ziet u hoe u een sms-bericht verzendt met behulp van de uitvoerbinding zoals gedefinieerd in de volgende function.json.

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

U kunt een geserialiseerd JSON-object doorgeven aan de func.Out parameter om het SMS-bericht te verzenden.

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

In het volgende voorbeeld ziet u hoe u de aantekening TwilioSmsOutput gebruikt om een SMS-bericht te verzenden. Waarden voor to, fromen body zijn vereist in de kenmerkdefinitie, zelfs als u deze programmatisch overschrijft.

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

Kenmerken

Zowel in-processals geïsoleerde werkproces C#-bibliotheken gebruiken kenmerken om de uitvoerbinding te definiëren. C#-script maakt in plaats daarvan gebruik van een function.json configuratiebestand.

De Twilio-binding wordt momenteel niet ondersteund voor een functie-app die wordt uitgevoerd in een geïsoleerd werkproces.

Aantekeningen

Met de aantekening TwilioSmsOutput kunt u de Twilio-uitvoerbinding declaratief configureren door de volgende configuratiewaarden op te geven:

+

Plaats de aantekening voor TwilioSmsOutput op een OutputBinding<T> parameter, waar T mogelijk een systeemeigen Java-type is, zoals int, Stringof byte[]een POJO-type.

Configuratie

In de volgende tabel worden de bindingsconfiguratie-eigenschappen beschreven die u hebt ingesteld in het function.json-bestand , wat verschilt per runtimeversie:

function.json-eigenschap Beschrijving
type moet zijn ingesteld op twilioSms.
direction moet zijn ingesteld op out.
name Variabelenaam die wordt gebruikt in functiecode voor het sms-bericht van Twilio.
accountSidSetting Deze waarde moet worden ingesteld op de naam van een app-instelling die uw Twilio-account-sid (TwilioAccountSid) bevat. Als deze instelling niet is ingesteld, is AzureWebJobsTwilioAccountSidde standaardnaam van de app-instelling.
authTokenSetting Deze waarde moet worden ingesteld op de naam van een app-instelling die uw Twilio-verificatietoken (TwilioAccountAuthToken) bevat. Als deze instelling niet is ingesteld, is AzureWebJobsTwilioAuthTokende standaardnaam van de app-instelling.
van Deze waarde wordt ingesteld op het telefoonnummer van waaruit de sms-tekst wordt verzonden.
hoofdtekst Deze waarde kan worden gebruikt om het sms-tekstbericht in code vast te stellen als u deze niet dynamisch hoeft in te stellen in de code voor uw functie.

In versie 2.x stelt u de to waarde in uw code in.

Wanneer u lokaal ontwikkelt, voegt u uw toepassingsinstellingen toe aan het local.settings.json-bestand in de Values verzameling.

Volgende stappen