首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Wit.ai机器人中删除会话结束时的上下文/会话id

如何在Wit.ai机器人中删除会话结束时的上下文/会话id
EN

Stack Overflow用户
提问于 2017-04-12 02:07:50
回答 2查看 259关注 0票数 0

我在使用Wit.ai时遇到了一些问题,我的Python机器人在结束对话后会保留上下文。这种行为在Facebook客户端和pywit交互式客户端中是相同的。

对话以简单的“Hi”开始,如果用户在成功查询后点击“谢谢,再见”,则可以在不同分支中的不同点结束。

如果会话再次以“Hi”开始,会话状态将从之前保存下来,这会导致错误的响应。在用户说再见后,删除上下文的最好方法是什么?

我试着创建一个在机器人发送最终消息后触发的告别函数,但它不起作用。

代码语言:javascript
复制
def goodbye(request):
    del request['context']    # or request.clear()
    return request

文档(https://wit.ai/docs/http/20160526#post--converse-link)建议您清除session_id并生成一个新的how,但没有给出如何生成的提示。

EN

回答 2

Stack Overflow用户

发布于 2017-04-27 14:56:56

您可以使用uuid生成新的会话Ids。会话ID必须是任何唯一的文本,甚至可以是系统日期。我建议您使用uuid

有关如何生成它,请查看here

票数 0
EN

Stack Overflow用户

发布于 2017-05-12 05:15:28

我遇到了同样的问题,我用下面的方法解决了它。

我首先创建了一个简单的end_session操作,将在每个会话路径的末尾调用:

代码语言:javascript
复制
def end_session(request):    
    return {'end_session': True}

然后,我在从run_actions返回后插入了以下代码:

代码语言:javascript
复制
if 'end_session' in context:
    context = {}
    session_hash = uuid.uuid1().hex

正如您所看到的,除了清除上下文之外,正如您所做的那样,我还重新创建了一个新的会话id (根据Swapnesh Khare的建议)。

我不确定这是不是最好的解决方案,但它对我来说是有效的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43353252

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档