我在使用Wit.ai时遇到了一些问题,我的Python机器人在结束对话后会保留上下文。这种行为在Facebook客户端和pywit交互式客户端中是相同的。
对话以简单的“Hi”开始,如果用户在成功查询后点击“谢谢,再见”,则可以在不同分支中的不同点结束。
如果会话再次以“Hi”开始,会话状态将从之前保存下来,这会导致错误的响应。在用户说再见后,删除上下文的最好方法是什么?
我试着创建一个在机器人发送最终消息后触发的告别函数,但它不起作用。
def goodbye(request):
del request['context'] # or request.clear()
return request文档(https://wit.ai/docs/http/20160526#post--converse-link)建议您清除session_id并生成一个新的how,但没有给出如何生成的提示。
发布于 2017-04-27 14:56:56
您可以使用uuid生成新的会话Ids。会话ID必须是任何唯一的文本,甚至可以是系统日期。我建议您使用uuid
有关如何生成它,请查看here。
发布于 2017-05-12 05:15:28
我遇到了同样的问题,我用下面的方法解决了它。
我首先创建了一个简单的end_session操作,将在每个会话路径的末尾调用:
def end_session(request):
return {'end_session': True}然后,我在从run_actions返回后插入了以下代码:
if 'end_session' in context:
context = {}
session_hash = uuid.uuid1().hex正如您所看到的,除了清除上下文之外,正如您所做的那样,我还重新创建了一个新的会话id (根据Swapnesh Khare的建议)。
我不确定这是不是最好的解决方案,但它对我来说是有效的。
https://stackoverflow.com/questions/43353252
复制相似问题