AWS IoT Greengrass Version 1 は、2023 年 6 月 30 日に延長ライフフェーズに入りました。詳細については、「AWS IoT Greengrass V1 メンテナンスポリシー」を参照してください。この日以降、 AWS IoT Greengrass V1 は機能、機能強化、バグ修正、またはセキュリティパッチを提供する更新をリリースしません。で実行されるデバイスは中断 AWS IoT Greengrass V1 されず、引き続き運用され、クラウドに接続されます。への移行 AWS IoT Greengrass Version 2を強くお勧めします。これにより、重要な新機能が追加され、追加のプラットフォーム がサポートされます。
翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Twilio 通知コネクタ
警告
このコネクタは延長ライフサイクルフェーズに移行しており、AWS IoT Greengrass では、機能、既存機能の拡張、セキュリティパッチ、バグ修正を提供するアップデートはリリースされません。詳細については、「AWS IoT Greengrass Version 1 メンテナンスポリシー」を参照してください。
Twilio 通知コネクタは、電話の通話を自動化したり、Twilio を介してテキストメッセージを送信したりします。このコネクタを使用して、Greengrass グループのイベントに応じて通知を送信できます。通話の場合、コネクタは音声メッセージを受取人に転送できます。
このコネクタは、MQTT トピックに関する Twilio メッセージ情報を受信し、Twilio 通知をトリガーします。
注記
Twilio 通知コネクタを使用する方法のチュートリアルについては、「Greengrass コネクタの開始方法 (コンソール)」または「Greengrass コネクタの開始方法 (CLI)」を参照してください。
このコネクタには、次のバージョンがあります。
バージョン |
ARN |
---|---|
5 |
|
4 |
|
3 |
|
2 |
|
1 |
|
バージョンの変更については、「Changelog」を参照してください。
要件
このコネクタには以下の要件があります。
コネクタパラメータ
このコネクタには、以下のパラメータが用意されています。
サンプルコネクタを作成する (AWS CLI)
以下の CLI コマンドの例では、Twilio 通知コネクタを含む初期バージョンで ConnectorDefinition
を作成します。
aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{ "Connectors": [ { "Id": "MyTwilioNotificationsConnector", "ConnectorArn": "arn:aws:greengrass:
region
::/connectors/TwilioNotifications/versions/5", "Parameters": { "TWILIO_ACCOUNT_SID": "abcd12345xyz", "TwilioAuthTokenSecretArn": "arn:aws:secretsmanager:region
:account-id
:secret:greengrass-secret-hash
", "TwilioAuthTokenSecretArn-ResourceId": "MyTwilioSecret", "DefaultFromPhoneNumber": "+19999999999", "IsolationMode" : "GreengrassContainer" } } ] }'
グループに Twilio 通知コネクタを追加する方法を示すチュートリアルについては、「Greengrass コネクタの開始方法 (CLI)」および「Greengrass コネクタの開始方法 (コンソール)」を参照してください。
入力データ
このコネクタは、2 つの MQTT トピックに関する Twilio メッセージ情報を受け取ります。入力メッセージは JSON 形式である必要があります。
-
twilio/txt
トピックに関するテキストメッセージ情報。 -
twilio/call
トピックに関する電話メッセージ情報。
注記
入力メッセージのペイロードには、テキストメッセージ (message
) またはボイスメッセージ (voice_message_location
) を含めることができますが、両方を含めることはできません。
- トピックのフィルター:
twilio/txt
-
- メッセージのプロパティ
-
request
-
Twilio 通知に関する情報。
必須:
true
タイプ:
object
。以下のプロパティを含みます。recipient
-
メッセージ受取人。サポートされる受取人は 1 人のみです。
必須:
true
タイプ:
object
。以下のプロパティを含みます。name
-
受取人の名前。
必須:
true
タイプ:
string
有効なパターン:
.*
phone_number
-
受取人の電話番号。
必須:
true
タイプ:
string
有効なパターン:
\+[1-9]+
message
-
テキストメッセージのテキスト内容。このトピックでは、テキストメッセージのみがサポートされています。音声メッセージの場合は、
twilio/call
を使用します。必須:
true
タイプ:
string
有効なパターン:
.+
from_number
-
送信者の電話番号。Twilio はこの電話番号を使用してメッセージを開始します。このプロパティは、
DefaultFromPhoneNumber
パラメータが設定されていない場合に必須です。DefaultFromPhoneNumber
が設定されている場合は、このプロパティを使用してデフォルトを上書きできます。必須:
false
タイプ:
string
有効なパターン:
\+[1-9]+
retries
-
再試行の回数。デフォルトは 0 です。
必須:
false
タイプ:
integer
id
-
リクエストの任意の ID。このプロパティでは、入力リクエストを出力レスポンスにマッピングします。
必須:
true
タイプ:
string
有効なパターン:
.+
- 入力例
-
{ "request": { "recipient": { "name": "Darla", "phone_number": "+12345000000", "message": "Hello from the edge" }, "from_number": "+19999999999", "retries": 3 }, "id": "request123" }
- トピックのフィルター:
twilio/call
-
- メッセージのプロパティ
-
request
-
Twilio 通知に関する情報。
必須:
true
タイプ:
object
。以下のプロパティを含みます。recipient
-
メッセージ受取人。サポートされる受取人は 1 人のみです。
必須:
true
タイプ:
object
。以下のプロパティを含みます。name
-
受取人の名前。
必須:
true
タイプ:
string
有効なパターン:
.+
phone_number
-
受取人の電話番号。
必須:
true
タイプ:
string
有効なパターン:
\+[1-9]+
voice_message_location
-
音声メッセージのオーディオコンテンツの URL。これは TwiML 形式であることが必要です。このトピックでは、音声メッセージのみがサポートされています。テキストメッセージの場合は、
twilio/txt
を使用します。必須:
true
タイプ:
string
有効なパターン:
.+
from_number
-
送信者の電話番号。Twilio はこの電話番号を使用してメッセージを開始します。このプロパティは、
DefaultFromPhoneNumber
パラメータが設定されていない場合に必須です。DefaultFromPhoneNumber
が設定されている場合は、このプロパティを使用してデフォルトを上書きできます。必須:
false
タイプ:
string
有効なパターン:
\+[1-9]+
retries
-
再試行の回数。デフォルトは 0 です。
必須:
false
タイプ:
integer
id
-
リクエストの任意の ID。このプロパティでは、入力リクエストを出力レスポンスにマッピングします。
必須:
true
タイプ:
string
有効なパターン:
.+
- 入力例
-
{ "request": { "recipient": { "name": "Darla", "phone_number": "+12345000000", "voice_message_location": "https://some-public-TwiML" }, "from_number": "+19999999999", "retries": 3 }, "id": "request123" }
出力データ
このコネクターは、MQTT トピックで出力データとしてステータス情報を発行します。
- サブスクリプションのトピックフィルター
-
twilio/message/status
- 出力例: 成功
-
{ "response": { "status": "success", "payload": { "from_number": "+19999999999", "messages": { "message_status": "queued", "to_number": "+12345000000", "name": "Darla" } } }, "id": "request123" }
- 出力例: 失敗
-
{ "response": { "status": "fail", "error_message": "Recipient name cannot be None", "error": "InvalidParameter", "payload": None } }, "id": "request123" }
出力の
payload
プロパティは、メッセージが送信されたときの Twilio API からのレスポンスです。コネクタは、入力データが無効であること (必須の入力フィールドが指定されていないなど) を検出した場合、エラーを返し、値をNone
に設定します。以下に示しているのは、ペイロードの例です。{ 'from_number':'+19999999999', 'messages': { 'name':'Darla', 'to_number':'+12345000000', 'message_status':'undelivered' } }
{ 'from_number':'+19999999999', 'messages': { 'name':'Darla', 'to_number':'+12345000000', 'message_status':'queued' } }
使用例
コネクタの試用に利用できる Python 3.7 Lambda 関数の例を設定するには、次のステップ (概要) を使用します。
注記
Greengrass コネクタの開始方法 (コンソール) および Greengrass コネクタの開始方法 (CLI) のトピックには、Twilio 通知コネクタのセットアップ、デプロイ、およびテスト方法を示すエンドツーエンドのステップが含まれています。
コネクタの要件を満たしていることを確認します。
-
入力データをコネクタに送信する Lambda 関数を作成して発行します。
サンプルコードを PY ファイルとして保存します。AWS IoT Greengrass Core SDK for Python をダウンロードして解凍します。次に、PY ファイルとルートレベルの
greengrasssdk
フォルダを含む zip パッケージを作成します。この zip パッケージは、AWS Lambda にアップロードするデプロイパッケージです。Python 3.7 Lambda 関数を作成したら、関数バージョンを公開し、エイリアスを作成します。
-
Greengrass グループを設定します。
-
エイリアスで Lambda 関数を追加します (推奨)。Lambda ライフサイクルを長期間有効に (または CLI で
"Pinned": true
に) 設定します。 -
必要なシークレットリソースを追加し、Lambda 関数への読み取りアクセスを許可します。
-
コネクタを追加し、そのパラメータを設定します。
-
コネクタが入力データを受信し、サポートされているトピックフィルターで出力データを送信できるようにするサブスクリプションを追加します。
Lambda 関数をソースに、コネクタをターゲットに設定し、サポートされている入力トピックフィルターを使用します。
コネクタをソースとして、AWS IoT Core をターゲットとして設定し、サポートされている出力トピックフィルターを使用します。このサブスクリプションを使用して、AWS IoT コンソールでステータスメッセージを表示します。
-
-
グループをデプロイします。
-
AWS IoT コンソールの [Test] (テスト) ページで、出力データトピックをサブスクライブして、コネクタからのステータスメッセージを表示します。この例の Lambda 関数は長期間有効であり、グループがデプロイされた直後にメッセージの送信を開始します。
テストが終了したら、Lambda ライフサイクルをオンデマンドに (または CLI で
"Pinned": false
に) 設定して、グループをデプロイできます。これにより、関数がメッセージの送信を停止します。
例
次の例では、Lambda 関数で入力メッセージをコネクタに送信します。この例では、テキストメッセージがトリガーされます。
import greengrasssdk import json iot_client = greengrasssdk.client('iot-data') TXT_INPUT_TOPIC = 'twilio/txt' CALL_INPUT_TOPIC = 'twilio/call' def publish_basic_message(): txt = { "request": { "recipient" : { "name": "Darla", "phone_number": "+12345000000", "message": 'Hello from the edge' }, "from_number" : "+19999999999" }, "id" : "request123" } print("Message To Publish: ", txt) client.publish(topic=TXT_INPUT_TOPIC, payload=json.dumps(txt)) publish_basic_message() def lambda_handler(event, context): return
ライセンス
Twilio 通知コネクタには、以下のサードパーティーのソフトウェアおよびライセンスが含まれています。
twilio-python
/MIT
このコネクタは、Greengrass Core ソフトウェアライセンス契約
変更ログ
次の表に、コネクタの各バージョンにおける変更点を示します。
バージョン |
変更 |
---|---|
5 |
コネクタのコンテナ化モードを設定するための |
4 |
Lambda ランタイムを Python 3.7 にアップグレードしたことで、ランタイム要件が変更。 |
3 |
過剰なログ記録を減らすための修正。 |
2 |
小さなバグ修正と機能向上。 |
1 |
初回リリース。 |
Greengrass グループには、一度に 1 つのバージョンのコネクタしか含めることができません。コネクタのバージョンのアップグレードについては、「コネクタのバージョンのアップグレード」を参照してください。