Share via


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

Als u deze bindingsextensie in uw app wilt kunnen gebruiken, moet u ervoor zorgen dat het host.json bestand in de hoofdmap van uw project deze extensionBundle verwijzing bevat:

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

In dit voorbeeld geeft de version waarde van [4.0.0, 5.0.0) de Functions-host opdracht om een bundelversie te gebruiken die ten minste 4.0.0 maar kleiner is dan 5.0.0, die alle mogelijke versies van 4.x bevat. Deze notatie onderhoudt uw app effectief op de nieuwste beschikbare secundaire versie van de v4.x-extensiebundel.

Indien mogelijk moet u de meest recente primaire versie van de extensiebundel gebruiken en toestaan dat de runtime automatisch de meest recente secundaire versie onderhoudt. U kunt de inhoud van de meest recente bundel bekijken op de releasepagina voor extensiebundels. Zie Azure Functions-extensiebundels voor meer informatie.

Example

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. Er is een geïsoleerd werkproces vereist om C#-functies te ondersteunen die worden uitgevoerd op langetermijnondersteuning (LTS) en niet-LTS-versies voor .NET en .NET Framework.
  • In-process model: gecompileerde C#-functie die wordt uitgevoerd in hetzelfde proces als de Azure 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();
    }
}

Attributes

Zowel in-process alsgeï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.

Annotations

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.

Configuration

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

eigenschap function.json Description
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.
from Deze waarde wordt ingesteld op het telefoonnummer van waaruit de sms-tekst wordt verzonden.
body 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