Amazon IoT Greengrass Version 12023 年 6 月 30 日进入延长寿命阶段。有关更多信息,请参阅Amazon IoT Greengrass V1维护政策。在此日期之后,Amazon IoT Greengrass V1不会发布提供功能、增强功能、错误修复或安全补丁的更新。在上运行的设备Amazon IoT Greengrass V1不会受到干扰,将继续运行并连接到云端。我们强烈建议你迁移到Amazon IoT Greengrass Version 2,它补充说重要的新功能和支持其他平台。
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
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)主题包含 end-to-end 说明如何设置、部署和测试 Twilio 通知连接器的步骤。
确保满足连接器的要求。
-
创建并发布将输入数据发送到连接器的 Lambda 函数。
将示例代码保存为 PY 文件。下载并解压缩Amazon IoT Greengrass适用于 Python 的工具包. 然后,创建一个 zip 包,其中在根级别包含 PY 文件和
greengrasssdk
文件夹。此 zip 包是您上传到的部署包Amazon Lambda.创建 Python 3.7 Lambda 函数后,发布函数版本并创建别名。
-
配置 Greengrass 组。
-
部署组。
-
在Amazon 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
许可证
Twilio 通知连接器包含以下第三方软件/许可:
twilio-python
/MIT
此连接器在Greengrass 核心软件许可协议
更改日志
下表介绍了连接器各个版本的更改。
版本 |
更改 |
---|---|
5 |
增加了用于配置连接器容器化模式的 |
4 |
已将 Lambda 运行时升级到 Python 3.7,这会更改运行时要求。 |
3 |
进行了修复,以减少过多的日志记录。 |
2 |
少量错误修复和改进。 |
1 |
首次发布。 |
Greengrass 组每次只能包含连接器的一个版本。有关升级连接器版本的信息,请参阅升级连接器版本。