技术交流

学习资料

立即试用 商务报价
社区版
社区版 专业版 云服务 Edge Edge PE 网关 授权服务 Trendz分析 Mobile 应用程序 Mobile PE应用程序
文档 > 规则引擎 > 规则节点 > External节点
入门
指南 安装 架构 API 常见问题

本页目录

External

使用节点用于外部系统进行交互。

AWS SNS

支持TB版本2.0

image

外部节点指用来与外部系统交互的节点 AWS SNS (Amazon Simple Notification Service).

配置:

image

  • Topic ARN pattern - 可以为消息发布设置直接主题名,也可以使用模式,使用消息元数据将其解析为真正的主题名.
  • AWS Access Key ID and AWS Secret Access Key 是具有编程访问权限的AWS IAM用户凭据。更多关于AWS访问密钥的信息,请访问这里找到。
  • AWS Region 必须对应于创建SNS主题的区域。AWS区域当前列表可以在这里找到。

在下面的例子中,主题名取决于设备类型,在元数据中有一条消息包含deviceType字段

1
2
3
{
    deviceType: controller
}

我们将在Topic ARN pattern中设置controller的topic中发布消息:

1
arn:aws:sns:us-east-1:123456789012:${deviceType}

在运行时,模式将解析为 arn:aws:sns:us-east-1:123456789012:controller

Published payload - —节点将向SNS发布完整的有效消息负载。如果有需要的话,可以配置规则链,使用转换节点链向SNS发送正确的负载。

Outbound message 将包含消息元数据中的响应messageIdrequestId原始消息payload、类型和发送方不会被更改。


AWS SQS

支持TB版本2.0

image

节点将消息发布到AWS SQS (亚马逊简单队列服务)。

配置:

image

  • Queue Type -SQS队列类型可以是Standard,也可以是先进先出类型FIFO.
  • Queue URL Pattern - 用于构建队列URL的模式。例如,${deviceType}。可以为消息发布设置直接队列URL,或使用模式,使用消息元数据将该模式解析为真正的队列URL。
  • Delay - 以秒为单位的延迟,用于延迟特定的消息.
  • Message attributes - 可选的要发布的消息属性列表.
  • AWS Access Key ID and AWS Secret Access Key 是具有编程访问权限的AWS IAM用户的凭证。可以在此处找到有关AWS访问密钥的更多信息
  • AWS Region 必须与创建SQS队列的区域相对应。可在此处找到AWS区域的最新列表。

在以下示例中,队列URL取决于设备类型,并且在元数据中有一个包含 deviceType 字段的消息:

1
2
3
{
    deviceType: controller
}

为了在 controller’s 的Queue中发布消息,我们将在Queue URL pattern模式中设置此模式:

1
https://sqs.us-east-1.amazonaws.com/123456789012/${deviceType}

在运行时,模式将解析为https://sqs.us-east-1.amazonaws.com/123456789012/controller

Published body - 节点将向SQS发布完整的消息有效负载。如果需要,可以将规则链配置为使用转换节点链,以将正确的有效负载发送到SQS。

Published attributes - 可以添加可选的属性列表以在SQS中发布消息到集合NAME和VALUE都可以是静态值或模式,可以使用消息元数据进行解析。

如果选择了FIFO队列则消息ID将用作重复数据deduplication ID消息发起者将用作group ID

Outbound message 这个节点的出站消息将包含消息元数据中的响应messageId, requestId, messageBodyMd5, messageAttributesMd5sequenceNumber原始消息payload、类型和发送方不会被更改。


Kafka

支持TB版本2.0

image

Kafka节点向Kafka代理发送消息可具有任何消息类型。将通过Kafka生产者发送记录到Kafka服务器.

配置:

image

  • Topic pattern - 可以是静态字符串,也可以是使用消息元数据属性解析的模式。例如${deviceType}
  • bootstrap servers - 用逗号分隔的kafka代理列表。
  • Automatically retry times - 如果连接失败,尝试重发消息的次数。
  • Produces batch size - 以字节为单位的批处理大小,用于对具有相同分区的消息进行分组。
  • Time to buffer locally - ms中最大的本地缓冲窗口持续时间。
  • Client buffer max size - 发送消息的最大缓冲区大小(以字节为单位)。
  • Number of acknowledgments - 确认节点在考虑请求完成之前需要接收的数量。
  • Key serializer - 默认是org.apache.kafka.common.serialization.StringSerializer
  • Value serializer - 默认是org.apache.kafka.common.serialization.StringSerializer
  • Other properties - 可以为kafka代理连接提供任何其他属性。

Published body - Node将向Kafka主题发送完整的消息负载。如果需要可以配置规则链,使用转换节点链向Kafka发送正确的payload.

Outbound message 此节点的出站消息将在消息元数据中包含响应offset, partitiontopic属性原始消息payload、类型和发送方不会被更改。

Note - if you want to use Confluent cloud as a kafka broker you should add next properties:

Key Value
ssl.endpoint.identification.algorithm https
sasl.mechanism PLAIN
sasl.jaas.config org.apache.kafka.common.security.plain.PlainLoginModule required username="CLUSTER_API_KEY" password="CLUSTER_API_SECRET";
security.protocol SASL_SSL
  • CLUSTER_API_KEY - your access key from Cluster settings.
  • CLUSTER_API_SECRET - your access secret from Cluster settings.


MQTT

支持TB版本2.0

image

使用QoS AT_LEAST_ONCE将传入消息有效负载发布到已配置的MQTT代理的主题

配置:

image

  • Topic pattern - 可以是静态字符串,也可以是使用消息元数据属性解析的模式。例如${deviceType}.
  • Host - MQTT代理主机.
  • Port - MQTT代理端口.
  • Connection timeout - 连接到MQTT代理的超时(秒).
  • Client ID - 可选的客户端标识符,用于连接到MQTT代理。如果没有指定,将使用默认生成的clientId.
  • SSL Enable/Disable - 启用/禁用安全通信.
  • Credentials - MQTT连接凭据。可以是匿名的,基本的或者PEM。

外部MQTT代理支持不同的身份验证凭证:

  • Anonymous - 没有身份验证
  • Basic - 用户名\密码对用于认证
  • PEM - PEM证书用于身份验证

PEM PEM证书用于身份验证 如果选择PEM凭证类型:

  • CA证书文件
  • 证书文件
  • 私钥文件
  • 私钥密码


Published body - 节点将向MQTT主题发送完整的消息payload如果需要可以将规则链配置为使用转换节点链以将正确的有效负载发送到MQTT代理.

在成功发布消息的情况下原始消息将通过Success链传递到下一个节点否则将使用Failure链。


Azure IoT Hub

支持TB版本2.5.3

image

Configuration:

image

  • Topic - 主题参考连接
  • Hostname - 主机名
  • Device ID - 设备ID
  • Credentials - 凭据可以是共享签名PEM

身份验证凭据:

  • Shared Access Signature - SAS 密钥用于身份验证
  • PEM - PEM 证书用于身份验证

如果选择了共享访问签名凭据类型则应提供以下配置:

  • SAS密钥 - 表示Azure IoT Hub中设备密钥
  • CA证书 - 默认使用Baltimore证书单击此处了解更多信息

如果选择了PEM凭据类型则应提供以下配置:

  • CA证书 - 默认使用Baltimore证书单击此处了解更多信息
  • 证书文件
  • 私钥文件
  • 私钥密码

X.509认证

CA认证


Published body - 节点会将完整的消息payload发送到Azure IoT中心设备如果需要可以将规则链配置为使用转换节点链将正确的payload发送到Azure IoT中心。

在消息发布成功的情况下原始消息将通过Success链传递到下一个节点否则使用Failure链。


RabbitMQ

支持TB版本2.0

image

将传入的消息有效负载发布到RabbitMQ.

配置:

image

  • Exchange name pattern - 发布消息时所做的交换。可以是静态字符串,也可以是使用消息元数据属性解析的模式。例如${deviceType} .
  • Routing key pattern - 路由密钥。可以是静态字符串,也可以是使用消息元数据属性解析的模式。例如 ${deviceType} .
  • Message properties - 可选的路由headers。支持TEXT_PLAIN, MINIMAL_BASIC, MINIMAL_PERSISTENT_BASIC, PERSISTENT_BASIC, PERSISTENT_TEXT_PLAIN
  • Host - 用于连接的默认主机
  • Port - 用于连接的默认端口
  • Virtual host - 连接代理时要使用的虚拟主机
  • Username - AMQP用户名,在连接代理时使用
  • Password - AMQP连接代理时使用的密码
  • Automatic recovery - 启用或禁用自动连接恢复
  • Connection timeout - 连接建立TCP超时,以毫秒为单位;零表示无限
  • Handshake timeout - AMQP0-9-1协议握手超时,以毫秒为单位
  • Client properties - 启动连接时发送到服务器的附加属性

Published body - 已发布的主体-节点将向RabbitMQ发送完整的消息有效负载。

如果需要可以配置规则链使用转换节点链发送正确的payload如果消息发布成功原始消息将通过Success链传递到下一个节点否则将使用Failure链。


REST API Call

支持TB版本2.0

image

REST API调用外部REST服务器。

配置:

image

  • Endpoint URL pattern - 可以是静态字符串,也可以是使用消息元数据属性解决的模式。例如 ${deviceType}
  • Request method - GET, POST, PUT, DELETE
  • Headers - 请求Headers、Headers或值可以是静态字符串,也可以是使用消息元数据属性解析的模式。

Endpoint URL

URL可以是静态字符串或patterns只使用消息元数据解析模式因此模式中使用的属性名必须存在于消息元数据中否则原始模式将被添加到URL中。

例如,如果消息payload包含带有值container的属性deviceType则此模式:

http://localhost/api/${deviceType}/update

被解析为

http://localhost/api/container/update

Headers

可以配置标题名称/值的集合。 这些标题将被添加到Rest请求中。 模式应用于配置标头名称和标头值。 例如 ${deviceType}. 仅消息元数据用于解决模式。因此,模式中使用的属性名称必须存在于消息元数据中,否则原始模式将添加到标头中。

Request body -节点将向配置的REST端点发送完整的消息Payload。如果需要,可以将规则链配置为使用转换节点链来发送正确的Payload。

Outbound message 将在消息元数据中包含响应状态,status, statusCode, statusReasonheaders。 出站消息有效负载将与响应正文相同。原始邮件类型和原始发件人将不会更改。

如果请求成功则出站消息将通过Success链传递到下一个节点否则将使用Failure链。


若要将单个文件作为请求正文发送请将字段attachments添加到消息metadata中其中包含存储在数据库中的文件uuid在这种情况下将忽略任何消息数据仅发送文件内容。
若要定义请求内容类型请使用标头设置例如:

Content-Type: application/json; charset=UTF-8

下面是发送单个文件的消息metadata示例:

1
2
3
{
  "attachments": "e18b6950-dfca-11eb-affb-8db134b46d68"
}

注意:ThingsBoard专业版支持文件存储功能。

如果请求成功出站消息将通过Success链传递到下一个节点否则使用Failure链。


发送邮件

支持TB版本2.0

image

节点通过已配置的邮件服务器发送传入消息。此节点只适用于在创建时使用Email的消息,请使用Success链将此节点与To Email节点连接。

Configuration:

image

  • Use system SMTP settings - 如果启用,将使用在系统级别配置的默认邮件服务器
  • Protocol - 邮件服务器传输协议:SMTPSMTPS
  • SMTP host - 邮件服务器主机
  • SMTP port - 邮件服务器端口
  • Timeout ms - 读取超时,以毫秒为单位
  • Enable TLS - 如果为true,则启用STARTTLS命令的使用(如果服务器支持)
  • Username - 邮件主机上帐户的用户名(如果有)
  • Password - 邮件主机上帐户的密码(如果有)

如果此节点需要特定的邮件服务器,请禁用Use system SMTP settings复选框,并手动配置邮件服务器。 该节点可以与在系统级别配置的默认邮件服务器一起使用。有关如何配置默认系统SMTP设置请找到的更多详细信息。 如果此节点需要特定的邮件服务器,请禁用使用系统SMTP设置复选框并手动配置邮件服务器


如果传入消息已参考数据库中存储的文件准备了附件字段,则此节点可以创建电子邮件附件。

使用逗号分隔支持多个附件的无空间参考(UUID)发送许多文件消息metadata的示例:

1
2
3
{
  "attachments": "e18b6950-dfca-11eb-affb-8db134b46d68,17383b4c-6000-4bb8-be04-b1cb15aa18c5"
}

注意: 这是ThingsBoard Professional Edition支持的文件存储功能。

如果成功发送邮件,原始消息将通过Success链传递到下一个节点,否则将使用Failure链。

在下一个教程中,你可以看到使用该节点的真实示例:


发送短信

支持TB版本3.2

根据传入消息中的元数据字段构造SMS消息并使用AWS SNS或Twilio SMS提供程序发送建议为规则节点启用调试模式。

配置:

image

  • 系统 SMS 提供程序 - 如果启用将使用在系统级别配置的默认SMS提供程序服务器。有关更多详细信息请参阅SMS提供程序设置;
  • Phone Numbers To template - 允许配置多个短信电话号码可以引用消息元数据中的字段。
  • SMS message template - 允许配置短信的正文或者引用消息元数据中的字段。

此节点可以使用在系统级别配置的默认SMS提供程序,如果SMS消息成功发送给所有收件人则原始消息将通过Success链传递到下一个节点否则使用Failure链。

Twilio SMS

支持TB版本2.0.2
Professional Rule Node

Only Professional Edition supports Twilio SMS Rule Node.
Use ThingsBoard Cloud or install your own platform instance.

image

通过Twilio服务将传入消息有效负载作为SMS消息发送。

配置:

image

  • Phone Number From - 可以设置直接电话号码,因为可以使用SMS的号码发件人或可以使用模式,将其解析为使用消息元数据的真实号码发件人。
  • Phone Numbers To - 逗号分隔的收件人电话号码列表。可以设置直接电话号码,也可以使用模式,这将使用消息元数据解析为真实电话号码。
  • Twilio Account SID - 位于twilio.com/console的Sid帐号
  • Twilio Account Token - 位于twilio.com/console的令牌

SMS消息将发送至电话号码至列表中的所有收件人。

如果将SMS消息成功发送给所有收件人,则原始消息将通过Success链传递到下一个节点,否则将使用Failure链。