分享方式:


Azure Functions 的 Twilio 系結

本文說明如何在 Azure Functions 中使用 Twilio 系結來傳送簡訊。 Azure Functions 支援 Twilio 的輸出系結。

這是 Azure Functions 開發人員的參考資訊。 如果您不熟悉 Azure Functions,請從下列資源開始:

安裝擴充功能

您安裝的延伸模組 NuGet 套件取決於您在函式應用程式中使用的 C# 模式:

函式會在隔離的 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# 函式。
  • 同進程模型:在與 Functions 運行時間相同的進程中執行的已編譯 C# 函式。
  • C# 文稿:主要用於在 Azure 入口網站 中建立 C# 函式。

目前不支援在隔離背景工作進程中執行的函式應用程式使用 Twilio 系結。

下列範例示範function.json檔案中的 Twilio 輸出系結,以及使用系結的 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"
    }

您可以將串行化 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 訊息。 to即使以程式設計方式覆寫 、from、 和 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();
    }
}

屬性

進程內隔離的背景工作進程 C# 連結庫都會使用 屬性來定義輸出系結。 C# 文稿會改用 function.json組態檔

目前不支援在隔離背景工作進程中執行的函式應用程式使用 Twilio 系結。

註釋

TwilioSmsOutput 註釋可讓您藉由提供下列組態值,以宣告方式設定 Twilio 輸出系結:

+

TwilioSmsOutput 注釋放在參數上 OutputBinding<T> ,其中 T 可能是任何原生 Java 類型,例如 intStringbyte[]或 POJO 類型。

組態

下表說明您在 function.json 檔案中設定的系結組態屬性,其與運行時間版本不同:

function.json 屬性 描述
type 必須設定為 twilioSms
direction 必須設定為 out
name Twilio SMS 簡訊函式程式代碼中使用的變數名稱。
accountSidSetting 此值必須設定為保留 Twilio 帳戶 Sid 的應用程式設定名稱。TwilioAccountSid 未設定時,預設應用程式設定名稱為 AzureWebJobsTwilioAccountSid
authTokenSetting 此值必須設定為保存 Twilio 驗證令牌的應用程式設定名稱(TwilioAccountAuthToken)。 未設定時,預設應用程式設定名稱為 AzureWebJobsTwilioAuthToken
from 此值會設定為簡訊文字從中傳送的電話號碼。
body 如果您不需要在函式的程式碼中動態設定SMS簡訊,這個值就可以用來硬式編碼簡訊。

在 2.x 版中,您會在程式代碼中設定 to 值。

當您在本機開發時,請在集合中的 local.settings.json 檔案Values中新增應用程式設定。

下一步