我一直在与Wit.ai有问题,我的Python机器人会在结束对话后保留上下文。这种行为在Facebook客户端和pywit交互式客户端中是相同的。
对话从一个简单的'嗨'如果用户点击“谢谢”,“再见”,则可以在不同分支内的不同点结束。成功查询后快速回复。
如果会话开始于'嗨'再次,会话状态从之前保存,从而导致错误的响应。在用户说再见后删除上下文的最佳方法是什么?
我尝试创建一个再见函数,该函数在机器人发送了最终消息之后触发,但它没有工作,例如。
def goodbye(request):
del request['context'] # or request.clear()
return request
文档(https://wit.ai/docs/http/20160526#post--converse-link)建议您清除session_id并生成一个新的但不提供如何提示。
答案 0 :(得分:0)
您可以使用uuid
生成新的会话ID。会话ID必须是唯一的文本,甚至可以是系统日期。我建议你使用uuid
检查here如何生成它。
答案 1 :(得分:0)
我遇到了同样的问题,我通过以下方式解决了这个问题。
我首先创建了一个简单的def end_session(request):
return {'end_session': True}
操作,在每个会话路径的末尾调用:
if 'end_session' in context:
context = {}
session_hash = uuid.uuid1().hex
然后我从run_actions返回后插入以下代码:
export class MyObject{
date: Date;
}
let myDate= this.db.list('/my/path');//retrieving
this.db.list('/my/path').push(newItem)//inserting
如您所见,除了清除上下文之外,我还会重新创建新的会话ID(根据Swapnesh Khare的建议)。
我不确定这是最好的解决方案,但它对我有用。