Twilio 通知コネクタ - AWS IoT Greengrass

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

arn:aws:greengrass:region::/connectors/TwilioNotifications/versions/5

4

arn:aws:greengrass:region::/connectors/TwilioNotifications/versions/4

3

arn:aws:greengrass:region::/connectors/TwilioNotifications/versions/3

2

arn:aws:greengrass:region::/connectors/TwilioNotifications/versions/2

1

arn:aws:greengrass:region::/connectors/TwilioNotifications/versions/1

バージョンの変更については、「Changelog」を参照してください。

要件

このコネクタには以下の要件があります。

Version 4 - 5
  • AWS IoT Greengrass Core ソフトウェア v1.9.3 以降。シークレットの要件で説明されているように、AWS IoT Greengrass はローカルシークレットをサポートするように設定する必要があります。

    注記

    この要件には、Secrets Manager シークレットへのアクセス許可が含まれます。デフォルトの Greengrass サービスロールを使用している場合、Greengrass は greengrass- で始まる名前の付いたシークレット値にアクセスできます。

  • Python バージョン 3.7 または 3.8 が Core デバイスにインストールされ、PATH 環境変数に追加されている。

    注記

    Python 3.8 を使用するには、次のコマンドを実行して、Python 3.7 のデフォルトのインストールフォルダからインストール済みの Python 3.8 バイナリへのシンボリックリンクを作成します。

    sudo ln -s path-to-python-3.8/python3.8 /usr/bin/python3.7

    これにより、AWS IoT Greengrass の Python 要件を満たすようにデバイスが設定されます。

  • Twilio アカウントの SID、認証トークン、Twilio 対応の電話番号。Twilio プロジェクトを作成した後、これらの値をプロジェクトダッシュボードで使用できます。

    注記

    Twilio トライアルアカウントを使用できます。トライアルアカウントを使用している場合は、Twilio 以外の受信者の電話番号を、確認済みの電話番号リストに追加する必要があります。詳細については、「無料の Twilio トライアルアカウントを使用する方法」を参照してください。

  • Twilio 認証トークンを保存する AWS Secrets Manager のテキスト形式シークレット。詳細については、「AWS Secrets Manager ユーザーガイド」の「Creating a basic secret」(基本的なシークレットの作成) を参照してください。

    注記

    Secrets Manager コンソールでシークレットを作成するには、[Plaintext] (プレーンテキスト) タブにトークンを入力します。引用符やその他の書式は含めないでください。API で、SecretString プロパティの値としてトークンを指定します。

  • Secrets Manager シークレットを参照する Greengrass グループのシークレットリソース。詳細については、「AWS IoT Greengrass Core にシークレットをデプロイする」を参照してください。

Versions 1 - 3
  • AWS IoT Greengrass Core ソフトウェア v1.7 以降。シークレットの要件で説明されているように、AWS IoT Greengrass はローカルシークレットをサポートするように設定する必要があります。

    注記

    この要件には、Secrets Manager シークレットへのアクセス許可が含まれます。デフォルトの Greengrass サービスロールを使用している場合、Greengrass は greengrass- で始まる名前の付いたシークレット値にアクセスできます。

  • Python バージョン 2.7 が Core デバイスにインストールされ、PATH 環境変数に追加されている。

  • Twilio アカウントの SID、認証トークン、Twilio 対応の電話番号。Twilio プロジェクトを作成した後、これらの値をプロジェクトダッシュボードで使用できます。

    注記

    Twilio トライアルアカウントを使用できます。トライアルアカウントを使用している場合は、Twilio 以外の受信者の電話番号を、確認済みの電話番号リストに追加する必要があります。詳細については、「無料の Twilio トライアルアカウントを使用する方法」を参照してください。

  • Twilio 認証トークンを保存する AWS Secrets Manager のテキスト形式シークレット。詳細については、「AWS Secrets Manager ユーザーガイド」の「Creating a basic secret」(基本的なシークレットの作成) を参照してください。

    注記

    Secrets Manager コンソールでシークレットを作成するには、[Plaintext] (プレーンテキスト) タブにトークンを入力します。引用符やその他の書式は含めないでください。API で、SecretString プロパティの値としてトークンを指定します。

  • Secrets Manager シークレットを参照する Greengrass グループのシークレットリソース。詳細については、「AWS IoT Greengrass Core にシークレットをデプロイする」を参照してください。

コネクタパラメータ

このコネクタには、以下のパラメータが用意されています。

Version 5
TWILIO_ACCOUNT_SID

Twilio API を呼び出すために使用される Twilio アカウント SID。

AWS IoT コンソールでの表示名: [Twilio account SID] (Twilio アカウント SID)

必須: true

タイプ: string

有効なパターン: .+

TwilioAuthTokenSecretArn

Twilio 認証トークンを保存する Secrets Manager シークレットの ARN。

注記

この ARN は、Core 上のローカルシークレットの値にアクセスするために使用されます。

AWS IoT コンソールでの表示名: [ARN of Twilio auth token secret] (Twilio 認証トークンシークレットの ARN)

必須: true

タイプ: string

有効なパターン: arn:aws:secretsmanager:[a-z0-9\-]+:[0-9]{12}:secret:([a-zA-Z0-9\\]+/)*[a-zA-Z0-9/_+=,.@\-]+-[a-zA-Z0-9]+

TwilioAuthTokenSecretArn-ResourceId

Twilio 認証トークンのシークレットを参照する Greengrass グループのシークレットリソースの ID。

AWS IoT コンソールでの表示名: [Twilio auth token resource] (Twilio 認証トークンリソース)

必須: true

タイプ: string

有効なパターン: .+

DefaultFromPhoneNumber

Twilio がメッセージの送信に使用するデフォルトの Twilio 対応電話番号。Twilio はこの番号を使用してテキストまたは通話を開始します。

  • デフォルトの電話番号を設定しない場合は、入力メッセージ本文の from_number プロパティに電話番号を指定する必要があります。

  • デフォルトの電話番号を設定する場合は、オプションで、入力メッセージ本文の from_number プロパティを指定してデフォルトを上書きすることができます。

AWS IoT コンソールでの表示名: [Default from phone number] (電話番号からのデフォルト)

必須: false

タイプ: string

有効なパターン: ^$|\+[0-9]+

IsolationMode

このコネクタのコンテナ化モード。デフォルトは GreengrassContainer です。つまり、コネクタは AWS IoT Greengrass コンテナ内の分離されたランタイム環境で実行されます。

注記

グループの既定のコンテナ化設定は、コネクタには適用されません。

AWS IoT コンソールでの表示名: [Container isolation mode] (コンテナ分離モード) 

必須: false

タイプ: string

有効な値: GreengrassContainer または NoContainer

有効なパターン: ^NoContainer$|^GreengrassContainer$

Version 1 - 4
TWILIO_ACCOUNT_SID

Twilio API を呼び出すために使用される Twilio アカウント SID。

AWS IoT コンソールでの表示名: [Twilio account SID] (Twilio アカウント SID)

必須: true

タイプ: string

有効なパターン: .+

TwilioAuthTokenSecretArn

Twilio 認証トークンを保存する Secrets Manager シークレットの ARN。

注記

この ARN は、Core 上のローカルシークレットの値にアクセスするために使用されます。

AWS IoT コンソールでの表示名: [ARN of Twilio auth token secret] (Twilio 認証トークンシークレットの ARN)

必須: true

タイプ: string

有効なパターン: arn:aws:secretsmanager:[a-z0-9\-]+:[0-9]{12}:secret:([a-zA-Z0-9\\]+/)*[a-zA-Z0-9/_+=,.@\-]+-[a-zA-Z0-9]+

TwilioAuthTokenSecretArn-ResourceId

Twilio 認証トークンのシークレットを参照する Greengrass グループのシークレットリソースの ID。

AWS IoT コンソールでの表示名: [Twilio auth token resource] (Twilio 認証トークンリソース)

必須: true

タイプ: string

有効なパターン: .+

DefaultFromPhoneNumber

Twilio がメッセージの送信に使用するデフォルトの Twilio 対応電話番号。Twilio はこの番号を使用してテキストまたは通話を開始します。

  • デフォルトの電話番号を設定しない場合は、入力メッセージ本文の from_number プロパティに電話番号を指定する必要があります。

  • デフォルトの電話番号を設定する場合は、オプションで、入力メッセージ本文の from_number プロパティを指定してデフォルトを上書きすることができます。

AWS IoT コンソールでの表示名: [Default from phone number] (電話番号からのデフォルト)

必須: false

タイプ: string

有効なパターン: ^$|\+[0-9]+

サンプルコネクタを作成する (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 通知コネクタのセットアップ、デプロイ、およびテスト方法を示すエンドツーエンドのステップが含まれています。

  1. コネクタの要件を満たしていることを確認します。

  2. 入力データをコネクタに送信する Lambda 関数を作成して発行します。

    サンプルコードを PY ファイルとして保存します。AWS IoT Greengrass Core SDK for Python をダウンロードして解凍します。次に、PY ファイルとルートレベルの greengrasssdk フォルダを含む zip パッケージを作成します。この zip パッケージは、AWS Lambda にアップロードするデプロイパッケージです。

    Python 3.7 Lambda 関数を作成したら、関数バージョンを公開し、エイリアスを作成します。

  3. Greengrass グループを設定します。

    1. エイリアスで Lambda 関数を追加します (推奨)。Lambda ライフサイクルを長期間有効に (または CLI で "Pinned": true に) 設定します。

    2. 必要なシークレットリソースを追加し、Lambda 関数への読み取りアクセスを許可します。

    3. コネクタを追加し、そのパラメータを設定します。

    4. コネクタが入力データを受信し、サポートされているトピックフィルターで出力データを送信できるようにするサブスクリプションを追加します。

      • Lambda 関数をソースに、コネクタをターゲットに設定し、サポートされている入力トピックフィルターを使用します。

      • コネクタをソースとして、AWS IoT Core をターゲットとして設定し、サポートされている出力トピックフィルターを使用します。このサブスクリプションを使用して、AWS IoT コンソールでステータスメッセージを表示します。

  4. グループをデプロイします。

  5. 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 通知コネクタには、以下のサードパーティーのソフトウェアおよびライセンスが含まれています。

このコネクタは、Greengrass Core ソフトウェアライセンス契約に従ってリリースされます。

変更ログ

次の表に、コネクタの各バージョンにおける変更点を示します。

バージョン

変更

5

コネクタのコンテナ化モードを設定するための IsolationMode パラメータが追加されました。

4

Lambda ランタイムを Python 3.7 にアップグレードしたことで、ランタイム要件が変更。

3

過剰なログ記録を減らすための修正。

2

小さなバグ修正と機能向上。

1

初回リリース。

Greengrass グループには、一度に 1 つのバージョンのコネクタしか含めることができません。コネクタのバージョンのアップグレードについては、「コネクタのバージョンのアップグレード」を参照してください。

以下も参照してください。