다음을 통해 공유


Azure Functions에 대한 Twilio 바인딩

이 문서에서는 Azure Functions에서 Twilio 바인딩을 사용하여 문자 메시지를 보내는 방법에 대해 설명합니다. Azure Functions는 Twilio에 대한 출력 바인딩을 지원합니다.

Azure Functions 개발자를 위한 참조 정보입니다. Azure Functions를 새로 사용하는 경우 다음 리소스로 시작합니다.

확장 설치

설치하는 확장 NuGet 패키지는 함수 앱에서 사용 중인 C# 모드에 따라 다릅니다.

Functions는 격리된 C# 작업자 프로세스에서 실행됩니다. 자세한 내용은 격리된 작업자 프로세스에서 C# Azure Functions 실행 가이드를 참조하세요.

확장 기능의 기능은 확장 버전에 따라 다릅니다.

현재 격리된 작업자 프로세스 앱에 대한 Twilio는 지원되지 않습니다.

번들 설치

Functions 버전 2.x부터 HTTP 확장은 host.json 프로젝트 파일에 지정된 확장 번들의 일부입니다. 자세한 내용은 확장 번들을 참조하세요.

이 버전의 확장은 확장 번들 버전 2.x가 있는 함수 앱에서 이미 사용할 수 있어야 합니다.

예시

달리 명시되지 않는 한 이러한 예제는 버전 2.x 이상 버전의 Functions 런타임에만 해당됩니다.

C# 함수는 다음 C# 모드 중 하나를 사용하여 만들 수 있습니다.

  • 격리된 작업자 모델: 런타임에서 격리된 작업자 프로세스에서 실행되는 컴파일된 C# 함수입니다. LTS 및 비 LTS 버전 .NET 및 .NET Framework에서 실행되는 C# 함수를 지원하려면 격리된 작업자 프로세스가 필요합니다.
  • In Process 모델: Functions 런타임과 동일한 프로세스에서 실행되는 컴파일된 C# 함수입니다.
  • C# 스크립트: Azure Portal에서 C# 함수를 만들 때 주로 사용됩니다.

Twilio 바인딩은 현재 격리된 작업자 프로세스에서 실행되는 함수 앱에 대해 지원되지 않습니다.

다음 예에서는 Twilio 출력 바인딩을 사용하는 function.json 파일 및 JavaScript 함수에서 테이블 출력 바인딩을 보여줍니다.

function.json 파일의 바인딩 데이터는 다음과 같습니다.

예제 function.json:

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

JavaScript 코드는 다음과 같습니다.

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

전체 PowerShell 예제는 현재 SendGrid 바인딩에 사용할 수 없습니다.

다음 예제에서는 다음 function.json 정의된 대로 출력 바인딩을 사용하여 SMS 메시지를 보내는 방법을 보여줍니다.

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

SERIALIZE된 JSON 개체를 매개 변수에 func.Out 전달하여 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")

다음 예제에서는 TwilioSmsOutput 주석을 사용하여 SMS 메시지를 보내는 방법을 보여 줍니다. 에 from대한 to값은 body 프로그래밍 방식으로 재정의하는 경우에도 특성 정의에 필요합니다.

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

특성

In Process격리된 작업자 프로세스 C# 라이브러리는 모두 특성을 사용하여 출력 바인딩을 정의합니다. C# 스크립트는 대신 function.json 구성 파일을 사용합니다.

Twilio 바인딩은 현재 격리된 작업자 프로세스에서 실행되는 함수 앱에 대해 지원되지 않습니다.

주석

TwilioSmsOutput 주석을 사용하면 다음 구성 값을 제공하여 Twilio 출력 바인딩을 선언적으로 구성할 수 있습니다.

+

TwilioSmsOutput 주석을 OutputBinding<T> 매개 변수에 추가합니다. 여기서 Tint, String, byte[] 또는 POJO 형식과 같은 네이티브 Java 형식일 수 있습니다.

구성

다음 표에서는 런타임 버전에 따라 다른 function.json 파일에서 설정한 바인딩 구성 속성을 설명합니다.

function.json 속성 설명
type 를 으로 설정해야 합니다 twilioSms.
direction 를 으로 설정해야 합니다 out.
이름 Twilio SMS 텍스트 메시지에 대한 함수 코드에 사용되는 변수 이름입니다.
accountSidSetting 이 값은 Twilio 계정 Sid(TwilioAccountSid)를 보유하는 앱 설정의 이름으로 설정해야 합니다. 설정하지 않으면 기본 앱 설정 이름은 AzureWebJobsTwilioAccountSid입니다.
authTokenSetting 이 값은 Twilio 인증 토큰(TwilioAccountAuthToken)이 포함된 앱 설정의 이름으로 설정해야 합니다. 설정하지 않으면 기본 앱 설정 이름은 AzureWebJobsTwilioAuthToken입니다.
보낸 사람 이 값은 SMS 텍스트 메시지를 보낸 전화 번호로 설정됩니다.
body 이 값은 함수의 코드에서 동적으로 설정할 필요가 없는 경우 SMS 문자 메시지를 하드 코딩하는 데 사용할 수 있습니다.

버전 2.x에서는 코드에서 to 값을 설정합니다.

로컬에서 개발하는 경우 Values 컬렉션의 local.settings.json 파일에 애플리케이션 설정을 추가합니다.

다음 단계