Watson Assistant V2 API:更改 session 超时
Watson Assistant V2 API: change session timeout
使用 Watson Assistant V2 API 需要先创建一个 session 句柄 (create_session(assistantid)) returns session在对 message(assistantid,sessionid,request) 的单独调用中使用的 ID。 session 维护会话状态,因此相当于 V1 API.
的上下文 ID 参数
不幸的是,默认情况下似乎有 5 分钟 session 超时。响应包含以下 header 属性:
{...,"x-watson-session-timeout": [
"x-watson-session-timeout",
"session_timeout=300"
],...}
任何尝试使用助手 object 的 set_default_headers() 方法或将可选的 header 参数添加到 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"})
没有任何效果。响应的header中参数的值仍然是300.
我是否使用了不正确的字典对来更新参数?是否有另一种方法可以使用 V2 API 将对话状态保持超过 5 分钟?是不是根本就改不了?
会话超时值不受调用方控制,实际上与您使用的助手计划有关。对于免费和标准,超时确实是 5 分钟。对于其他计划,超时时间更长。
见Retaining information across dialog turns
只要用户与助手交互,当前会话就会持续,然后对于 Plus 或 Premium 计划最多 60 分钟不活动(对于 Lite 或 Standard 计划为 5 分钟)。
您可以调用 watson 助手进行其他会话并重新发送您的消息。保持你的背景...
或者在 IBM Cloud 的助手设置中使用正确的计划增加超时限制。
function createSession(end) {
assistant.createSession({
assistantId: watsonID }).then(res => {
sessionId=res.result.session_id;
if(end){
console.log("\x1b[32m%s\x1b[0m","new session "+sessionId);
}else{
console.log("session id :"+ sessionId);
console.log("http://"+host+":"+port);
}
});
}
createSession();
function callWatsonClient(payload,res) {
assistant.message(payload,function(err, data) {
if(data == null){
createSession(true);
//this not keep the context
var data ={result:{context:"",output:{generic:[{text:"session expirée, renvoyez le message"}]}}};
res.send(data);
}else{
//normal job
console.log("\x1b[33m%s\x1b[0m" ,JSON.stringify(data.result.output));
}
使用 Watson Assistant V2 API 需要先创建一个 session 句柄 (create_session(assistantid)) returns session在对 message(assistantid,sessionid,request) 的单独调用中使用的 ID。 session 维护会话状态,因此相当于 V1 API.
的上下文 ID 参数不幸的是,默认情况下似乎有 5 分钟 session 超时。响应包含以下 header 属性:
{...,"x-watson-session-timeout": [
"x-watson-session-timeout",
"session_timeout=300"
],...}
任何尝试使用助手 object 的 set_default_headers() 方法或将可选的 header 参数添加到 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"})
没有任何效果。响应的header中参数的值仍然是300.
我是否使用了不正确的字典对来更新参数?是否有另一种方法可以使用 V2 API 将对话状态保持超过 5 分钟?是不是根本就改不了?
会话超时值不受调用方控制,实际上与您使用的助手计划有关。对于免费和标准,超时确实是 5 分钟。对于其他计划,超时时间更长。
见Retaining information across dialog turns
只要用户与助手交互,当前会话就会持续,然后对于 Plus 或 Premium 计划最多 60 分钟不活动(对于 Lite 或 Standard 计划为 5 分钟)。
您可以调用 watson 助手进行其他会话并重新发送您的消息。保持你的背景...
或者在 IBM Cloud 的助手设置中使用正确的计划增加超时限制。
function createSession(end) {
assistant.createSession({
assistantId: watsonID }).then(res => {
sessionId=res.result.session_id;
if(end){
console.log("\x1b[32m%s\x1b[0m","new session "+sessionId);
}else{
console.log("session id :"+ sessionId);
console.log("http://"+host+":"+port);
}
});
}
createSession();
function callWatsonClient(payload,res) {
assistant.message(payload,function(err, data) {
if(data == null){
createSession(true);
//this not keep the context
var data ={result:{context:"",output:{generic:[{text:"session expirée, renvoyez le message"}]}}};
res.send(data);
}else{
//normal job
console.log("\x1b[33m%s\x1b[0m" ,JSON.stringify(data.result.output));
}