Vazba Twilio pro Azure Functions

Tento článek vysvětluje, jak odesílat textové zprávy pomocí vazeb Twilio ve službě Azure Functions. Azure Functions podporuje výstupní vazby pro Twilio.

Toto jsou referenční informace pro vývojáře Azure Functions. Pokud s Azure Functions začínáte, začněte s následujícími prostředky:

Instalace rozšíření

Balíček NuGet rozšíření, který nainstalujete, závisí na režimu jazyka C#, který používáte ve své aplikaci funkcí:

Funkce se spouštějí v izolovaném pracovním procesu C#. Další informace najdete v průvodci spuštěním služby Azure Functions v jazyce C# v izolovaném pracovním procesu.

Funkce rozšíření se liší v závislosti na verzi rozšíření:

V současné době pro aplikaci izolovaného pracovního procesu neexistuje žádná podpora pro Twilio.

Instalace sady

Počínaje funkcí verze 2.x je rozšíření HTTP součástí sady rozšíření, která je zadaná v souboru projektu host.json. Další informace najdete v sadě rozšíření.

Tato verze rozšíření by už měla být dostupná pro vaši aplikaci funkcí s sadou rozšíření verze 2.x.

Příklad

Pokud není uvedeno jinak, jsou tyto příklady specifické pro verzi 2.x a novější verzi modulu runtime Functions.

Funkci jazyka C# je možné vytvořit pomocí jednoho z následujících režimů jazyka C#:

  • Izolovaný model pracovního procesu: Kompilovaná funkce jazyka C#, která běží v pracovním procesu, který je izolovaný od modulu runtime. Izolovaný pracovní proces je nutný pro podporu funkcí C# spuštěných na LTS a jiných verzích než LTS .NET a rozhraní .NET Framework.
  • Model v procesu: Zkompilovaná funkce jazyka C#, která běží ve stejném procesu jako modul runtime služby Functions.
  • Skript jazyka C#: Používá se především při vytváření funkcí jazyka C# na webu Azure Portal.

Vazba Twilio se v současné době nepodporuje pro aplikaci funkcí spuštěnou v izolovaném pracovním procesu.

Následující příklad ukazuje výstupní vazbu Twilio v souboru function.json a funkci JavaScriptu, která používá vazbu.

Tady jsou data vazby v souboru function.json :

Příklad function.json:

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

Tady je javascriptový kód:

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

Kompletní příklady PowerShellu nejsou aktuálně k dispozici pro vazby SendGrid.

Následující příklad ukazuje, jak odeslat zprávu SMS pomocí výstupní vazby definované v následujícím function.json.

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

Serializovaný objekt JSON můžete předat parametru func.Out pro odeslání zprávy 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")

Následující příklad ukazuje, jak pomocí poznámky TwilioSmsOutput odeslat zprávu SMS. Hodnoty pro to, froma body jsou požadovány v definici atributu, i když je přepíšete programově.

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

Atributy

Knihovny C# v procesu i izolovaného pracovního procesu používají atributy k definování výstupní vazby. Skript jazyka C# místo toho používá konfigurační soubor function.json.

Vazba Twilio se v současné době nepodporuje pro aplikaci funkcí spuštěnou v izolovaném pracovním procesu.

Poznámky

Poznámka TwilioSmsOutput umožňuje deklarativní konfiguraci výstupní vazby Twilio zadáním následujících hodnot konfigurace:

+

Umístěte poznámku TwilioSmsOutput na OutputBinding<T> parametr, kde T může být jakýkoli nativní typ Javy, například int, String, byte[]nebo typ POJO.

Konfigurace

Následující tabulka vysvětluje vlastnosti konfigurace vazby, které jste nastavili v souboru function.json , které se liší podle verze modulu runtime:

vlastnost function.json Popis
type musí být nastavena na twilioSmshodnotu .
direction musí být nastavena na outhodnotu .
Jméno Název proměnné použitý v kódu funkce pro textovou zprávu Twilio SMS.
accountSidSetting Tato hodnota musí být nastavena na název nastavení aplikace, které obsahuje sid účtu Twilio (TwilioAccountSid). Pokud není nastavená, výchozí název nastavení aplikace je AzureWebJobsTwilioAccountSid.
authTokenSetting Tato hodnota musí být nastavená na název nastavení aplikace, které obsahuje ověřovací token Twilio (TwilioAccountAuthToken). Pokud není nastavená, výchozí název nastavení aplikace je AzureWebJobsTwilioAuthToken.
od Tato hodnota je nastavená na telefonní číslo, ze kterého se posílá text SMS.
tělo Tuto hodnotu můžete použít k pevnému kódování textové zprávy SMS, pokud ji nepotřebujete dynamicky nastavovat v kódu pro vaši funkci.

Ve verzi 2.x nastavíte to hodnotu v kódu.

Při místním vývoji přidejte nastavení aplikace do souboru local.settings.json v kolekci Values .

Další kroky