本文說明如何在 Azure Functions 中使用 Twilio 系結來傳送簡訊。 Azure Functions 支援 Twilio 的輸出系結。
這是 Azure Functions 開發人員的參考資訊。 如果您不熟悉 Azure Functions,請從下列資源開始:
C# 開發人員參考:
安裝擴充功能
您安裝的延伸模組 NuGet 套件取決於您在函式應用程式中使用的 C# 模式:
函式會在隔離的 C# 背景工作進程中執行。 若要深入瞭解,請參閱 在隔離背景工作程序中執行 C# Azure Functions 的指南。
擴充功能的功能會根據擴充功能版本而有所不同:
安裝套件組合
若要能夠在應用程式中使用這個繫結延伸模組,請確定專案根目錄中的 host.json 檔案包含下列 extensionBundle 參考:
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[4.0.0, 5.0.0)"
}
}
在此範例中, version 的 [4.0.0, 5.0.0) 值指示 Functions 主機使用至少 4.0.0 但小於 5.0.0的套件版本,其中包括 4.x 的所有潛在版本。 此表示法可有效地在 v4.x 擴充功能套件組合的最新可用次要版本上維護您的應用程式。
可能的話,您應該使用最新的延伸套件組合主要版本,並允許執行階段自動維護最新的次要版本。 您可以在 延伸套件組合發行頁面上檢視最新套件組合的內容。 如需詳細資訊,請參閱 Azure Functions 延伸模組套件組合。
Example
除非另有說明,否則這些範例僅適用於 2.x 版和更新版本的 Functions 運行時間。
您可以使用下列其中一種 C# 模式來建立 C# 函式:
- 隔離的背景工作模型:在與運行時間隔離的背景工作進程中執行的已編譯 C# 函式。 需要隔離的背景工作進程,才能支援在 .NET 和 .NET Framework 的長期支援 (LTS) 和非 LTS 版本上執行的 C# 函式。
- 同進程模型:在與 Azure Functions 運行時間相同的進程中執行的已編譯 C# 函式。
- C# 文稿:主要是在 Azure 入口網站中建立 C# 函式時使用。
Important
內含式模型支援將於 2026 年 11 月 10 日結束。 強烈建議您將應用程式移轉至隔離式背景工作角色模型,以取得完整支援。
目前不支援在隔離背景工作進程中執行的函式應用程式使用 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();
}
}
Attributes
進程內和隔離的背景工作進程 C# 連結庫都會使用 屬性來定義輸出系結。 C# 文稿會改用 function.json組態檔。
目前不支援在隔離背景工作進程中執行的函式應用程式使用 Twilio 系結。
Annotations
TwilioSmsOutput 註釋可讓您藉由提供下列組態值,以宣告方式設定 Twilio 輸出系結:
+
將 TwilioSmsOutput 注釋放在參數上 OutputBinding<T> ,其中 T 可能是任何原生 Java 類型,例如 int、 String、 byte[]或 POJO 類型。
Configuration
下表說明您在 function.json 檔案中設定的系結組態屬性,其與運行時間版本不同:
| function.json 屬性 | Description |
|---|---|
| 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中新增應用程式設定。