Twilio-kötés az Azure Functionshez

Ez a cikk bemutatja, hogyan küldhet szöveges üzeneteket Twilio-kötések használatával az Azure Functionsben. Az Azure Functions támogatja a Twilio kimeneti kötéseit.

Ezek az Azure Functions-fejlesztők referenciaadatai. Ha még nem használja az Azure Functionst, kezdje a következő erőforrásokkal:

A bővítmény telepítése

A telepített NuGet-csomag a függvényalkalmazásban használt C# módtól függ:

A függvények izolált C# feldolgozói folyamatban futnak. További információ: Útmutató a C# Azure Functions izolált feldolgozói folyamatban való futtatásához.

A bővítmény funkciói a bővítmény verziójától függően változnak:

A Twilio jelenleg nem támogatott egy izolált feldolgozói folyamatalkalmazáshoz.

Csomag telepítése

A Functions 2.x-es verziójától kezdve a HTTP-bővítmény egy bővítménycsomag része, amely a host.json projektfájlban van megadva. További információkért tekintse meg a bővítménycsomagot.

A bővítmény ezen verziójának már elérhetőnek kell lennie a függvényalkalmazás számára a 2.x verziójú bővítménycsomaggal.

Példa

Ha másként nem jelenik meg, ezek a példák a Functions-futtatókörnyezet 2.x és újabb verziójára vonatkoznak.

A C#-függvények a következő C#-módok egyikével hozhatók létre:

  • Izolált feldolgozómodell: Lefordított C# függvény, amely a futtatókörnyezettől elkülönített feldolgozói folyamatban fut. Izolált feldolgozói folyamat szükséges az LTS- és nem LTS-verziókon futó C#-függvények támogatásához .NET és .NET-keretrendszer.
  • Folyamaton belüli modell: Lefordított C# függvény, amely ugyanabban a folyamatban fut, mint a Functions-futtatókörnyezet.
  • C#-szkript: Elsősorban C#-függvények Azure Portalon való létrehozásakor használatos.

A Twilio-kötés jelenleg nem támogatott izolált feldolgozói folyamatban futó függvényalkalmazások esetében.

Az alábbi példa egy Twilio kimeneti kötést mutat be egy function.json fájlban, és egy JavaScript-függvényt , amely a kötést használja.

Az alábbi kötési adatok a function.json fájlban:

Példa function.json:

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

A JavaScript-kód a következő:

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

A Teljes PowerShell-példák jelenleg nem érhetők el a SendGrid-kötésekhez.

Az alábbi példa bemutatja, hogyan küldhet SMS-üzenetet a következő function.json definiált kimeneti kötéssel.

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

Az SMS-üzenet elküldéséhez átadhat egy szerializált JSON-objektumot a func.Out paraméternek.

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

Az alábbi példa bemutatja, hogyan használható a TwilioSmsOutput széljegyzet sms-üzenetek küldésére. A , frombody értékeket toaz attribútumdefinícióban kell megadni, még akkor is, ha programozott módon felülbírálja őket.

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

Attribútumok

A folyamaton belüli és az izolált feldolgozói folyamat C#-kódtárai attribútumokkal határozzák meg a kimeneti kötést. A C#-szkript ehelyett function.json konfigurációs fájlt használ.

A Twilio-kötés jelenleg nem támogatott izolált feldolgozói folyamatban futó függvényalkalmazások esetében.

Jegyzetek

A TwilioSmsOutput megjegyzés lehetővé teszi a Twilio kimeneti kötés deklaratív konfigurálását a következő konfigurációs értékek megadásával:

+

Helyezze a TwilioSmsOutput megjegyzést egy OutputBinding<T> paraméterre, ahol T bármilyen natív Java-típus lehet, például int, String, byte[]vagy POJO-típus.

Konfiguráció

Az alábbi táblázat ismerteti a function.json fájlban beállított kötéskonfigurációs tulajdonságokat, amelyek futásidejű verziónként eltérnek:

function.json tulajdonság Leírás
type beállításnak a következőre kell állítania: twilioSms.
direction beállításnak a következőre kell állítania: out.
név A Twilio SMS szöveges üzenet függvénykódjában használt változónév.
accountSidSetting Ezt az értéket egy olyan alkalmazásbeállítás nevére kell állítani, amely a Twilio-fiók sid (TwilioAccountSid) azonosítóját tartalmazza. Ha nincs beállítva, az alapértelmezett alkalmazásbeállítás neve .AzureWebJobsTwilioAccountSid
authTokenSetting Ezt az értéket a Twilio-hitelesítési jogkivonatot (TwilioAccountAuthToken) tartalmazó alkalmazásbeállítás nevére kell állítani. Ha nincs beállítva, az alapértelmezett alkalmazásbeállítás neve .AzureWebJobsTwilioAuthToken
from Ez az érték arra a telefonszámra van állítva, amelyről az SMS-szöveget küldi.
Szervezet Ez az érték használható az SMS szöveges üzenet kódolásához, ha nem kell dinamikusan beállítania a függvény kódjában.

A 2.x verzióban a kódban adja meg az to értéket.

Helyi fejlesztéskor adja hozzá az alkalmazásbeállításokat a gyűjtemény local.settings.json fájljáhozValues.

Következő lépések