如何通过单个响应识别和处理多个请求

问题描述 投票:0回答:1

这肯定是一个常见问题,但我找不到任何讨论它的消息来源。有很多相反的情况(对单个请求发送多个响应)。

有一种常见的人与人聊天风格,其中 personA 快速发送第二条消息来添加或更正他们的第一条消息。这也经常尝试与聊天机器人一起使用,例如:

机器人:我们应该把披萨送到哪里?
用户:123 main street sprnigfelid
用户: 斯普林菲尔德
机器人:(响应输入#1)
机器人:(响应输入#2)

现在的问题是机器人是否足够聪明,能够识别拼写错误,或者足够开放,能够从第一个输入中接受它们。对话会这样进行:

用户:123 main street sprnigfeld
用户: 斯普林菲尔德
机器人:好的,地址:123 Main St., Springfield。那是什么状态?
机器人:知道了,我会送货到 123 Main St., Springfield, Springfield。这个位置正确吗?

还有很多其他情况和方式,机器人可能会错误地处理这些多个快速输入,而双重响应让用户想知道出了什么问题,并对他们在对话中所处的位置感到困惑。

那么有人尝试过处理这个问题吗?

我正在寻求一种方法的一般指导,但如果有人有具体的答案,我将在用户和 Lex 机器人之间使用 PHP 代理。我使用此代理来验证和解析传入消息,然后再将它们传递给 Lex。我还存储会话信息。我尝试过的一件事是存储一个 input_count #,以尝试在发送第一个响应之前检测是否有新输入进入。

但是,PHP 似乎可能会对第二个输入进行排队,直到第一个输入完成,因此我的 input_count # 永远不会发生变化。因此,即使用户发送许多快速输入,我的机器人也会对每个输入做出响应。

php artificial-intelligence chatbot
1个回答
1
投票

当前的聊天机器人开发系统没有机制(或者至少是明确的机制)来处理此类情况(如果我错了,请纠正我)。它通常是基于规则的问答。还同意向聊天机器人处理输入并不是一个好的通用解决方案。不过,您可以做的是创建一些包装器来检查这种情况。它可以按如下方式工作:

Bot: Where should we deliver the pizza?  
User: 123 main street sprnigfelid (you send first input to chatbot) 
User: springfield (you send second input to chatbot, you make a note that two inputs were sent before first answer) 
Bot: (response to input #1 ) (you receive answer, but you know there was a second input, you wait for second answer) 
Bot: (response to input #2 ) (you compare the answers from the chatbot - are they the same?)

棘手的一点是比较答案是否“相同” - 如果您知道聊天机器人正在使用地址进行响应,您可以比较该地址。您还可以通过比较两个输入消息来检测用户是否正在立即修复拼写错误 - 如果是这种情况,您可以尝试完全跳过机器人的第二个输入并使用第一个答案中的对话上下文来继续对话(大多数聊天机器人工具包都可以实现)。

总的来说,我认为这不是用户与聊天机器人交流时通常遇到的主要问题。在这个特定的示例中,聊天机器人给出了两个答案,但我想说用户答对了并且没有感到困惑 - 我认为这是聊天机器人的主要目标。

© www.soinside.com 2019 - 2024. All rights reserved.