MS团队:我们应该如何判断活动事件是否来自机器人程序



我们有一个聊天机器人,它似乎正在接收来自另一个机器人的消息。我们希望忽略这些消息,因为对它们的响应会导致两个机器人之间的乒乓球无限循环。

我们希望依赖这里记录的activity.from.role,但这个字段似乎从未设置过。

activity.from.id看起来有点像28:app:00000000-dfae-4fe1-a068-80fe8fc61f2b_62b732f7-fc71-40bc-b27d-35efcb000000,我们认为将帐户识别为机器人的唯一方法是检测这些ID中的:app:。这是次优的,因为此ID格式不是官方API的一部分,并且可能随时更改。

也就是说,我们应该如何检测活动事件是否来自机器人程序?

如果你必须处理来自组织外部的潜在机器人,一个简单的方法可以是在Activity对象中保留一个由userId或UserName索引的最近几次文本交换的字典。然后,在您的bot接收到的每个POST时,检查接收到的文本是否与该字典中的一个先前消息条目完全匹配。如果是这种情况,则将相关的userId/UserName标记为机器人角色的候选,但如果非机器人用户只打了两次招呼,则继续检查进一步的文本交换。

如果以下几个进一步的交换不再满足完全匹配要求,请取消将userId/UserName标记为潜在的机器人程序。如果已将userId/UserName标记为机器人程序角色的候选,则如果在完全匹配条目之后或在您选择的延迟之后没有更多的进一步交换,则将机器人程序角色应用于它们。对于后者来说,在推迟作出决定之后进行最后一次文本交流可能是有益的。

对于Watson/Eliza类型的机器人,我建议检查交换的速度,据我所知,没有人每秒可以交换超过20条信息。

最新更新