Php Chatbot-如何识别和处理单个响应的多个请求

Php Chatbot-如何识别和处理单个响应的多个请求,php,artificial-intelligence,chatbot,Php,Artificial Intelligence,Chatbot,这一定是一个常见的问题,但我找不到任何讨论它的来源。相反的情况很多(对单个请求发送多个响应) 有一种常见的人与人之间的聊天方式,角色可以快速发送第二条消息来添加或更正他们的第一条消息。也经常尝试与聊天机器人一起使用,例如: 机器人:我们应该把比萨饼送到哪里去? 用户:123 main street sprnigfelid 用户:斯普林菲尔德 机器人:(对输入的响应#1) 机器人:(对输入的响应#2) 现在的问题是,机器人是否足够聪明,能够识别拼写错误,或者是否足够开放,能够接受来自第一次输入的拼

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

有一种常见的人与人之间的聊天方式,角色可以快速发送第二条消息来添加或更正他们的第一条消息。也经常尝试与聊天机器人一起使用,例如:

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

现在的问题是,机器人是否足够聪明,能够识别拼写错误,或者是否足够开放,能够接受来自第一次输入的拼写错误。车队将这样展开:

用户:斯普林菲尔德大街123号
用户:斯普林菲尔德
机器人:好的,斯普林菲尔德大街123号。那是什么状态?
机器人:明白了,我会送到斯普林菲尔德市斯普林菲尔德大街123号。那个位置对吗

还有很多其他情况和方式,机器人可能会错误地多次快速输入,而双重响应会让用户疑惑到底哪里出了问题,并对他们在对话中所处的位置感到困惑

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

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


但是,PHP似乎会在第一次输入完成之前对第二次输入进行排队,因此我的输入计数永远不会改变。因此,即使用户发送了许多快速输入,我的聊天机器人也会对每个输入做出响应。

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

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?)
棘手的一点是比较答案是否“相同”-如果你知道聊天机器人正在用地址响应,你可以比较地址。您还可以通过比较两条输入消息来检测用户是否正在纠正输入错误-如果是这种情况,您可以尝试完全跳过机器人的第二条输入,并使用第一个答案中的对话上下文继续对话(这在大多数聊天机器人工具包中都是可能的)


一般来说,我认为这不是用户与聊天机器人通信时通常遇到的主要问题。在这个特定的例子中,聊天机器人给出了两个答案,但我想说的是,用户是正确的,不会感到困惑-我认为这是聊天机器人的主要目标。

在将下一条消息发送给Lex之前,为它添加一段等待时间怎么样?在此期间,您将有两条消息,因此您可以将它们作为一条消息发送给Lex谢谢您的建议。我担心这会延迟所有响应,等待可能不会出现的第二个输入。而且,它可能会产生与我现在所做的相同的效果,因为输入1完成后才开始处理输入2。我不完全确定发生了什么,但从我的测试来看,情况似乎是这样。