Azure Functions の Twilio バインド
この記事では、Azure Functions の Twilio バインドを使用してテキスト メッセージを送信する方法について説明します。 Azure Functions は、Twilio の出力バインドをサポートします。
これは、Azure Functions の開発者向けリファレンス情報です。 Azure Functions を初めて使用する場合は、先に次のリソースを参照してください。
C# 開発者向けリファレンス:
拡張機能のインストール
インストールする拡張機能 NuGet パッケージは、関数アプリで使用している C# モードによって異なります。
関数は分離された C# ワーカー プロセスで実行されます。 詳しくは、「分離ワーカー プロセスにおける C# Azure Functions の実行のガイド」をご覧ください。
拡張機能の機能性は、拡張機能のバージョンによって異なります。
現在、分離ワーカー プロセス アプリに対して Twilio はサポートされていません。
バンドルのインストール
Functions バージョン 2.x から、HTTP 拡張機能は、host.json プロジェクト ファイルで指定されている拡張バンドルの一部です。 詳細については、「拡張機能のバンドル」を参照してください。
このバージョンの拡張機能は、拡張機能バンドル バージョン 2.x を使用して関数アプリで既に使用できる必要があります。
例
特に指定がない限り、これらの例はバージョン 2.x 以降のバージョンの Functions ランタイムに固有です。
A C# 関数は、次の C# モードのいずれかを使用して作成できます。
- 分離されたワーカー モデル: ランタイムから分離されたワーカー プロセスで実行されるコンパイル済みの C# 関数。 分離ワーカー プロセスは、LTS および 非 LTS バージョンの .NET および .NET Framework で実行されている C# 関数をサポートするために必要です。
- インプロセス モデル: Functions ランタイムと同じプロセスで実行されるコンパイル済みの C# 関数。
- C# スクリプト: Azure portal で C# 関数を作成するときに主に使用されます。
重要
インプロセス モデルのサポートは 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
};
};
現在、SendGrid バインドについての PowerShell の完全な例は利用できません。
次の例では、次の 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
には、int
、String
、byte[]
、POJO 型などの任意のネイティブ Java 型を使用できます。
構成
次の表は、function.json ファイルで設定するバインド構成プロパティの説明です。ランタイムのバージョンごとに異なります。
function.json のプロパティ | 説明 |
---|---|
type | twilioSms に設定する必要があります。 |
direction | out に設定する必要があります。 |
name | Twilio SMS テキスト メッセージの関数コードで使用される変数名です。 |
accountSidSetting | この値には、Twilio Account Sid (TwilioAccountSid ) を保持するアプリ設定の名前を指定する必要があります。 設定されていない場合、既定のアプリの設定名は AzureWebJobsTwilioAccountSid です。 |
authTokenSetting | この値には、Twilio 認証トークン (TwilioAccountAuthToken ) を保持するアプリ設定の名前を指定する必要があります。 設定されていない場合、既定のアプリの設定名は AzureWebJobsTwilioAuthToken です。 |
from | この値は、SMS テキストの送信元の電話番号に設定されます。 |
body | この値は、SMS テキスト メッセージを関数のコードで動的に設定する必要がない場合に、メッセージをハード コーディングするために使用できます。 |
バージョン 2.x では、値 to
をコードで設定します。
ローカルで開発する場合は、Values
コレクション内の local.settings.json ファイルにアプリケーション設定を追加します。