首页 > 解决方案 > MS Teams:我们应该如何判断活动事件是否来自机器人?

问题描述

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

我们希望依赖此处activity.from.role记录的内容,但似乎该字段从未设置过

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

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

标签: botframework

解决方案


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

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

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


推荐阅读