终止支持通知:2026 年 10 月 7 日, Amazon 将停止对的支持。 Amazon IoT Greengrass Version 1 2026 年 10 月 7 日之后,您将无法再访问这些 Amazon IoT Greengrass V1 资源。如需了解更多信息,请访问迁移自 Amazon IoT Greengrass Version 1。
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Twilio 通知连接器
警告
此连接器已进入生命周期延长阶段, Amazon IoT Greengrass 不会发布更新来提供功能、现有功能增强、安全补丁或错误修复。有关更多信息,请参阅 Amazon IoT Greengrass Version 1 维护政策。
Twilio 通知连接器通过 Twilio 进行自动电话呼叫或发送文本消息。您可以使用该连接器来发送通知,以响应 Greengrass 组中的事件。对于电话呼叫,连接器可以将语音消息转发给收件人。
该连接器接收关于 MQTT 主题的 Twilio 消息信息,然后触发 Twilio 通知。
注意
有关介绍如何使用 Twilio 通知连接器的教程,请参阅 Greengrass 连接器入门(控制台) 或 Greengrass 连接器入门 (CLI)。
此连接器具有以下版本。
版本 |
ARN |
|---|---|
5 |
|
4 |
|
3 |
|
2 |
|
1 |
|
有关版本更改的信息,请参阅更改日志。
要求
此连接器具有以下要求:
连接器参数
该连接器提供以下参数。
创建连接器示例 (Amazon 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 - 示例输出:成功
-
{ "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 通知连接器的 end-to-end步骤。
确保满足连接器的要求。
-
创建并发布将输入数据发送到连接器的 Lambda 函数。
将示例代码保存为 PY 文件。下载并解压适用于 Python 的Amazon IoT Greengrass Core 软件开发工具包。然后,创建一个 zip 包,其中在根级别包含 PY 文件和
greengrasssdk文件夹。此 zip 包是您上传到 Amazon Lambda的部署包。创建 Python 3.7 Lambda 函数后,请发布函数版本并创建别名。
-
配置 Greengrass 组。
-
部署组。
-
在 Amazon IoT 控制台的 “测试” 页面上,订阅输出数据主题以查看来自连接器的状态消息。示例 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 组在一个时间上只能包含一个版本的连接器。有关升级连接器版本的信息,请参阅升级连接器版本。