使用Watson Assistant V2 API,必须首先创建一个会话句柄(create_session(assistantid)),它返回在单个消息调用中使用的会话ID(assistantid,sessionid,request)。会话维护会话状态,因此等效于V1 API的context id参数。
不幸的是,默认情况下似乎有5分钟的会话超时。响应包括以下标头属性:
{...,"x-watson-session-timeout": [
"x-watson-session-timeout",
"session_timeout=300"
],...}
通过使用助手对象的set_default_headers()方法或通过将可选的头参数添加到create_session()调用来尝试更改此参数似乎没有任何效果。由于我没有找到任何关于如何正确更新此参数的文档,我只是尝试了几种替代方法:
1)self.assistant.set_default_headers({'x-watson-session-timeout':"['x-watson-session-timeout','session_timeout=3600']"})
2)self.assistant.set_default_headers({'x-watson-session-timeout':"'x-watson-session-timeout','session_timeout=3600'"})
3)self.assistant.set_default_headers({'x-watson-session-timeout':"session_timeout=3600"})
4)self.assistant.set_default_headers({'x-watson-session-timeout':"3600"})
5)self.assistant.set_default_headers({'session_timeout':"3600"})
没有什么是有效的。响应标头中的参数值仍为300。
我是否使用不正确的dict对来更新参数?是否有另一种方法可以使用V2 API将对话状态维持超过5分钟?是不是可以改变它?
会话超时的值不在调用者的控制之下,实际上与您正在使用的Assistant计划相关。对于免费和标准,超时确实是5分钟。对于其他计划,超时更大。
见Retaining information across dialog turns
当前会话持续用户与助理交互的时间长,然后Plus或Premium计划长达60分钟不活动(Lite或标准计划为5分钟)。