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 命令會建立ConnectorDefinition
含有 Twilio 通知連接器的最初版本。
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 連接器入門 (主控台)。
輸入資料
此連接器接受兩個 MQTT 主題上的 Twilio 訊息資訊。輸入訊息必須是 JSON 格式。
-
twilio/txt
主題上的文字訊息資訊。 -
twilio/call
主題上的電話訊息資訊。
注意
輸入訊息承載可包含文字訊息 (message
) 或語音訊息 (voice_message_location
),但非同時包含兩者。
- 主題篩選條件:
twilio/txt
-
- 訊息屬性
-
request
-
Twilio 通知的相關資訊。
必要:
true
類型:
object
含有以下屬性的:recipient
-
訊息收件人。僅支援一個收件人。
必要:
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
-
訊息收件人。僅支援一個收件人。
必要:
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
- 輸出範例:Success
-
{ "response": { "status": "success", "payload": { "from_number": "+19999999999", "messages": { "message_status": "queued", "to_number": "+12345000000", "name": "Darla" } } }, "id": "request123" }
- 輸出範例:Failure (失敗)
-
{ "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)主題包含 end-to-end 說明如何設定、部署和測試 Twilio 通知連接器的步驟。
確定您符合連接器的要求。
-
建立並發佈 Lambda 函數,以將輸入資料傳送至連接器。
將範例程式碼儲存為 PY 檔案。下載並解壓縮AWS IoT Greengrass適用於 Python 的核心。然後,建立在根層級包含 PY 檔案和
greengrasssdk
資料夾的 zip 套件。此 zip 套件是您上傳至的部署套件AWS Lambda。建立 Python 3.7 Lambda 函數後,請發佈函數版本並建立別名。
-
設定 Greengrass 群組。
-
部署群組。
-
在 中AWS IoT主控台、測試」頁面中,訂閱輸出資料主題以檢視來自連接器的狀態訊息。範例 Lambda 函數具有長時間的生命週期,而且在部署完群組後會立即開始傳送訊息。
完成測試後,您可以將 Lambda 生命週期設為隨需 (或
"Pinned": false
在 CLI 中) 並部署群組。這會讓函數停止傳送訊息。
範例
以下範例 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
license
Twilio 通知連接器包含以下第三方軟體/授權:
twilio-python
/MIT
此連接器會在Greengrass Core 軟體授權合約
Changelog
下表說明連接器每個版本的變更。
版本 |
變更 |
---|---|
5 |
已新增 |
4 |
已將 Lambda 執行時間升級至 Python 3.7,這會改變執行時間要求。 |
3 |
可減少過多記錄的修正。 |
2 |
少量错误修复和改进。 |
1 |
初始版本。 |
Greengrass 群組一次只能包含連接器的一個版本。若要取得有關升級連接器版本的資訊,請參閱升級連接器版本。