这肯定是一个常见问题,但是我找不到任何讨论它的消息来源。相反(将多个响应发送到单个请求)有很多相反的事情。
有一种常见的人与人聊天风格,其中personA快速发送第二条消息以添加或纠正他们的第一条消息。也经常尝试将其与聊天机器人一起使用,例如:
Bot:我们应该在哪里运送披萨?
用户:大街123号sprnigfelid
用户:springfield
Bot :(响应输入#1)
Bot :(响应输入#2)
现在的问题是,机器人是否足够聪明地识别拼写错误或打开得足够多,可以从第一个输入中接受它们。战斗将像这样播放:
用户:斯普尼格菲尔德大街123号
用户:springfield
机器人:好的,斯普林菲尔德大街123号。处于什么状态?
Bot:知道了,我将运送到Springfield的Springfield 123 Main St.。该位置正确吗?
机器人有很多其他情况和方式会误以为这些多个快速输入,而双重响应使用户想知道哪里出了问题,并对他们在对话中的位置感到困惑。
那么有没有人尝试处理这个问题?
我正在寻求一种方法的一般指导,但是如果有人有特定的答案,我将在用户和Lex机器人之间使用PHP代理。我使用此代理来验证和解析传入的消息,然后再将它们传递给Lex。我还存储会话信息。我尝试过的一件事是存储一个input_count#,以尝试在发送第一个响应之前检测是否有新输入。
但是,似乎PHP可能正在排队第二个输入,直到第一个输入完成为止,因此,我的input_count#从未更改。因此,即使用户发送了许多快速输入,我的机器人也会对每个输入做出响应。
答案 0 :(得分:1)
当前用于聊天机器人开发的系统没有机制(或至少是显式机制)来处理此类情况(如果我做错了,请纠正我)。通常是基于规则的Q / A。还同意将输入处理到聊天机器人不是一个好的通用解决方案。但是,您可以做的是创建一些包装来检查这种情况。它可以按如下方式工作:
df['Pcp_3day'] = df['Pcp'].shift().rolling(3).sum()
棘手的一点是比较答案是否相同(如果答案相同)-如果您知道聊天机器人正在使用该地址进行响应,则可以比较该地址。您还可以通过比较两个输入消息来检测用户是否正在立即修正拼写错误-如果是这种情况,您可以尝试完全跳过对机器人的第二个输入,并使用第一个答案中的对话内容来继续对话(大多数chatbot工具包都可以实现)。
总的来说,我认为这并不是用户与聊天机器人通信时通常遇到的主要问题。在这个特定示例中,聊天机器人给出了两个答案,但我想说的是用户正确无误,不要感到困惑-我认为这是聊天机器人的主要目标。