[英]How to delete context/session_id at end of conversation in Wit.ai bot
我在Wit.ai遇到问题,在结束对话后,我的Python机器人将保留上下文。 在Facebook客户端和pywit交互式客户端中,此行为相同。
对话以简单的“嗨”开始,如果用户在成功查询后点击“谢谢,再见”快速回复,则可以在不同分支中的不同点结束。
如果对话随后再次以“ Hi”开始,则会话状态从之前保存下来,从而导致错误的响应。 用户说再见后删除上下文的最佳方法是什么?
我尝试创建一个再见功能,该功能在机器人发送了最终消息后触发,但是它没有用,例如
def goodbye(request):
del request['context'] # or request.clear()
return request
该文档( https://wit.ai/docs/http/20160526#post--converse-link )建议您清除session_id并生成一个新的session_id,但没有给出任何提示。
您可以使用uuid
生成新的会话ID。 会话ID必须是唯一的任何文本,甚至可以是系统日期。 我建议你使用uuid
在这里检查如何生成它。
我遇到了同样的问题,并通过以下方式解决了这个问题。
我首先创建了一个简单的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的建议)。
我不确定这是否是最好的解决方案,但它对我有用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.