AWS IoT Greengrass
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

Twilio 通知

Twilio 通知 连接器通过 Twilio 进行自动电话呼叫或发送文本消息。您可以使用该连接器来发送通知,以响应 Greengrass 组中的事件。对于电话呼叫,连接器可以将语音消息转发给收件人。

该连接器接收关于 MQTT 主题的 Twilio 消息信息,然后触发 Twilio 通知。

注意

有关介绍如何使用 Twilio 通知 连接器的教程,请参阅Greengrass 连接器入门(控制台)Greengrass 连接器入门 (CLI)

此连接器具有以下版本。

版本

ARN

2

arn:aws:greengrass:区域::/connectors/TwilioNotifications/versions/2

1

arn:aws:greengrass:区域::/connectors/TwilioNotifications/versions/1

有关版本更改的信息,请参阅更改日志

要求

此连接器具有以下要求:

  • AWS IoT Greengrass 核心软件 v1.7 or later。AWS IoT Greengrass 必须配置为支持本地密钥,如密钥要求中所述。

    注意

    其中包括允许访问您的 Secrets Manager 密钥。如果使用的是默认 Greengrass 服务角色,则Greengrass有权获得名称以 greengrass- 开头的密钥的值。

  • Python 版本 2.7 已安装在核心设备上并且已添加到 PATH 环境变量。

  • Twilio 账户 SID、身份验证令牌和支持 Twilio 的电话号码。创建 Twilio 项目后,项目控制面板上会显示这些值。

    注意

    您可以使用 Twilio 试用账户。如果您使用的是试用账户,则必须将非 Twilio 收件人电话号码添加到已验证电话号码列表中。 有关更多信息,请参阅如何使用您的免费 Twilio 试用账户

  • AWS Secrets Manager 中的文本类型密钥,用于存储 Twilio 身份验证令牌。有关更多信息,请参阅 AWS Secrets Manager 用户指南中的创建基本密钥

    注意

    要在 Secrets Manager 控制台中创建密钥,请在明文选项卡上输入您的令牌。不要加入引号或其他格式。在 API 中,将令牌指定为 SecretString 属性的值。

  • Greengrass 组中引用 Secrets Manager 密钥的密钥资源。有关更多信息,请参阅 将密钥部署到 AWS IoT Greengrass 核心

连接器参数

该连接器提供以下参数。

TWILIO_ACCOUNT_SID

Twilio 账户 SID,用于调用 Twilio API。

在控制台中显示名称:Twilio 账户 SID

必需:true

类型:string

有效模式:.+

TwilioAuthTokenSecretArn

存储 Twilio 身份验证令牌的 Secrets Manager 密钥的 ARN。

注意

这用于访问核心上的本地密钥的值。

在控制台中显示名称: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

Greengrass 组中密钥资源的 ID,该资源引用 Twilio 身份验证令牌的密钥。

在控制台中显示名称:Twilio 身份验证令牌资源

必需:true

类型:string

有效模式:.+

DefaultFromPhoneNumber

支持 Twilio 的默认电话号码,Twilio 用该电话号码发送消息。Twilio 用该号码来启动文本或呼叫。

  • 如果不配置默认电话号码,必须在输入消息正文的 from_number 属性中指定电话号码。

  • 如果配置默认电话号码,则可视情况通过指定输入消息正文中的 from_number 属性来覆盖默认值。

在控制台中显示名称:默认的来电号码

必需:false

类型:string

有效模式:^$|\+[0-9]+

创建连接器示例 (CLI)

以下示例 CLI 命令创建一个 ConnectorDefinition,它具有包含 Twilio 通知 连接器的初始版本。

aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{ "Connectors": [ { "Id": "MyTwilioNotificationsConnector", "ConnectorArn": "arn:aws:greengrass:区域::/connectors/TwilioNotifications/versions/2", "Parameters": { "TWILIO_ACCOUNT_SID": "abcd12345xyz", "TwilioAuthTokenSecretArn": "arn:aws-cn:secretsmanager:region:account-id:secret:greengrass-secret-hash", "TwilioAuthTokenSecretArn-ResourceId": "MyTwilioSecret", "DefaultFromPhoneNumber": "+19999999999" } } ] }'

有关介绍如何将 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" }

输出数据

此连接器将状态信息发布为输出数据。

主题筛选条件

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' } }

示例用法

以下是 Lambda 功能将输入消息发送到连接器的示例。 此示例触发文本消息。

注意

该 Python 功能使用 AWS IoT Greengrass Core 开发工具包 来发布 MQTT 消息。您可以使用以下 pip 命令在核心设备上安装 SDK 的 Python 版本:

pip install greengrasssdk
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 function_handler(event, context): return

许可证

Twilio 通知 连接器包含以下第三方软件/许可:

此连接器按照 Greengrass 核心软件许可协议发布。

Changelog

下表描述了连接器每个版本中所做的更改。

版本

更改

2

少量错误修复和改进。

1

首次发布。

Greengrass 组一次只能包含一个版本的连接器。

另请参阅