Script Switch


Script Switch 节点根据编写的 JavaScript 的结果路由传入的消息。

节点类型

Filter。

输入和输出能力

该节点具有 1 个入口点和 3 个出口点。3 个出口点的路由将根据脚本的返回值,即 “True”,“False” 和 “Failure”。

节点属性

../../../_images/script_switch.png


设置标签

名称

该节点的名称。


描述

该节点的描述。

Script 标签

用于路由传入消息的 JavaScript(支持ES8)。受支持的函数为 transform,带有两个参数,分别为 msgmetadatamsg 是输入消息,而 metadata 可以是 MQTT topic,该 topic 可在脚本中使用。


点击 测试 按钮,通过输入消息来测试 JavaScript,查看 JavaScript 是否能按设计意图工作。

使用限制

  • 不支持 Javascript ES6。

  • 脚本必须返回以下 3 个值之一:true、false 或 failure。

示例

输入示例

{
  "MetaData": {
    "messageType": "PostAttribute",
    "assetId": "nBTRDedF",
    "deviceKey": "l6FGAivrJ1",
    "productKey": "p1N2tYVi",
    "orgId": "o16109619073861404"
  },
  "Body": {
    "location":"Shanghai"
  }
}

输出示例

此节点不会修改消息,输出将与输入相同。

脚本示例

// productKey 需要属于 <Rule Entry 中运行输入的产品> 或 <绑定了 Rule Entry 中规定的网关的产品>
// 同时, 传入的消息中定义了 location 的值为 "Shanghai"
if (metadata.productKey == 'p1N2tYVi' && msg.location == 'Shanghai') {
  return true;
}

//location 在传入的消息中未定义
if (typeof msg.location === 'undefined') {
  throw new Error('location not defined in msg');
}

//以上两种情况皆不符合时
return false;