Connected Field Service 自动化

已完成

在 CFS 中生成 IoT 警报以后,您需要确定应采取的下一步操作。 IoT 警报记录自带几项信息,包括警报类型、时间、设备 ID 和警报数据。 “Alert Data”字段由 JSON 数据构成,其中包含有关事件的具体详细信息。 所含数据可能因设备而异。 “Alert Data”字段中的信息通常可指示应采取的下一步具体操作。 在开始围绕后续步骤构建自动化功能时,必须了解有哪些可用的工具和信息,以及这些工具如何帮助您实现目标。

简化警报处理的一种方法是定义警报触发时,如何对警报进行分组。 默认情况下,将基于触发警报的设备将相似警报分组在一起。 但是,有时添加一个额外分组层可能很有帮助。 例如,组织可以选择按相关数据(如设备类别、帐户或客户资产)对警报进行分组。

这些设置可以从设置 - IoT 设置 - 警报聚合规则中使用。 可以基于 IoT 警报、相关设备或相关客户资产来定义警报聚合。

处理警报数据

Connected Field Service 解决方案提供多项现成的操作和工作流,可用于协助实现一些项目自动化功能,例如创建和注册设备,以及在记录中填充相关数据等。

与 IoT 警报相关的一些关键操作包括:

显示名称 描述
基于 JSON 的字段值 - Get Number 读取指定 JSON 对象中的数值属性。
基于 JSON 的字段值 - Get String 读取指定 JSON 对象中的字符串属性。
基于 JSON 的字段值 - Get Boolean 读取指定 JSON 对象中的布尔值属性。

“Alert Data”字段中的数据采用 JSON 格式。 以下文本是引发 IoT 警报时传递到“Alert Data”字段的示例。

{"deviceid":"smt-1298","readingtype":"Temperature","reading":113,"eventtoken":"c802338d-60f2-4a79-b45c-e164e2191ce0","threshold":70,"ruleoutput":"AlarmTemp","time":"2018-09-06T15:58:08.964Z"}

您通常不能直接使用“警报数据”字段的内容,因为您可能希望基于其中一个属性而不是全部属性进行查询。 您必须先分析要使用的相关参数,以便使用这些参数推动查询并支持后续步骤。

如果分析 JSON 字符串,可以看出它传达了以下参数和值:

参数
deviceid Smt-1298
readingtype Temperature
reading 113
eventtoken c802338d-60f2-4a79-b45c-e164e2191ce0
threshold 70
ruleoutput AlarmTemp
time 09/06/2018 06:58:08 AM

要帮助从 JSON 字符串中分析出您可能需要的特定参数,可以使用某项 JSON - Based Field Value 操作。

“JSON - Based Field Value”操作包含以下参数:

参数 类型 描述
JSON 输入 要检查的 JSON 对象。 (本例中为“警报数据”字段)
PropertyPath 输入 要读取的值的属性名称或路径。 (区分大小写)
DefaultReturnValue 输入 未找到指定属性时返回的默认值。
Response 输出 指定的属性的响应值。

根据“基于 JSON 的字段值”操作,您指定输出参数可能是文本字符串 (String)、数值 (Number) 或布尔值 (Boolean)。

例如:如果您之前使用 JSON - Based Field Value - Get Number 操作来提取此 Alert Data JSON 字符串的读取值:

{"deviceid":"smt-1298","readingtype":"Temperature","reading":113,"eventtoken":"c802338d-60f2-4a79-b45c-e164e2191ce0","threshold":70,"ruleoutput":"AlarmTemp","time":"2018-09-06T15:58:08.964Z"}

结果可能如这个表所示:

参数
JSON Alert Data(字段名称)
PropertyPath reading
DefaultReturnValue 70(表示当前温度阈值)
113

该值表示操作返回的值,在本例中为 113,因为它是与“reading”属性关联的值。 之所以使用“Get Number”操作,是因为如此一来我们可以将该值传递至一个数值字段,然后使用对于值的数值查询选项来确定如何处理该项。

实际应用

现在我们看一下本概念的实际应用。

假设,我们有一台智能恒温器注册为 IoT 设备。 如果警报上的读数超过 70 度,则在 CFS 中生成 IoT 警报。

  • 如果设备读数介于 70 度和 85 度之间,则让 Connected Field Service 自动向设备发送命令以重新启动该设备。

  • 如果设备读数大于 85 度,则需要技术人员进行人工故障排除。

我们可以创建执行以下操作的工作流来实现这一目标:

  • 首先执行 JSON -Based Field Value - Get Number 操作以捕获“reading”属性的值。

  • 然后,将返回的输出值写入到 IoT 警报记录上的自定义字段,例如“设备读数”字段。

  • “设备读数”字段的更新可以触发另一个工作流,该工作流执行以下操作:

    • 如果“设备读数”字段介于 70 和 85 之间:创建一个与 IoT 警报关联的命令,该命令向设备发出重启命令。

    • 如果设备读数字段大于 85 度,则工作流将以成功状态结束。

重要提示

虽然 Connected Field Service 解决方案包括上述工作流和操作,但许多组织并不使用 Dynamics 365 工作流功能。 许多组织将使用 Power Automate 解析 JSON,因为它提供了灵活性和可以使用的更多服务选择。

使用 Power Automate

这个相同的概念也可以用于 Power Automate。 我们可以在流中使用“分析 JSON”操作,而不是使用“JSON - Based Field Value”自定义操作。 当触发“分析 JSON”操作时,“Alert Data”字段中的 JSON 将分解为各个属性。 必须定义架构,以便指示命令如何分析数据。 IoT 警报中的示例有效负载可用于生成架构。

在下图中,我们使用了一条 IoT 警报中包含的相同 JSON 字符串来创建架构:

{"deviceid":"nest1234","readingtype":"Temperature","reading":80,"eventtoken":"cfd5e690-ee88-4ca8-a75d-3b86ac61295c","threshold":70,"ruleoutput":"AlarmTemp","time":"2019-10-19T16:42:26.457Z"}

可以看到,其创建了多个属性来表示传入 JSON 的每个项,如 deviceid、readingtype、reading 等。

表示传入 JSON 每个项的多个属性的屏幕截图。

就像我们在工作流中的操作一样,数据分析后可用于填充 IoT 警报中的其他字段。 现在,每个属性都可以用作工作流中任何后续步骤的动态内容。

IoT 警报中数据填充字段的屏幕截图。

如果回到前面的智能恒温器示例,我们可以在 Power Automate 中创建执行以下操作的流,实现相同的结果:

  • 首先,创建新的 IoT 警报记录时执行流。

  • 执行“分析 JSON”操作以将 JSON 分析为各个属性。

  • 然后,工作流使用某个返回属性的输出值更新 IoT 警报记录。 例如,Reading 属性可用于更新“设备读数”字段。

  • “设备读数”字段的更新可以触发另一个工作流,该工作流执行以下操作:

    • 如果“设备读数”字段介于 70 和 85 之间:创建一个与 IoT 警报关联的命令,该命令向设备发出重启命令。

    • 如果“设备读数”字段大于 85 度,工作流将以“成功”状态完成。