Watson Assistant 在嵌套节点内获取消息
Watson Assistant get message inside nested node
我想从嵌套在对话中的 Watson 获得响应
我可以从欢迎节点那里得到响应,当他们不理解文本输入时,因为它们是全球性的
这是我的代码
const AssistantV1 = require('ibm-watson/assistant/v1');
const { IamAuthenticator } = require ('ibm-watson/auth');
const { rejects } = require('assert');
const assistant = new AssistantV1({
authenticator: new IamAuthenticator({ apikey: '<>' }),
serviceUrl: 'https://gateway.watsonplatform.net/assistant/api/',
version: '2020-04-01'
});
let context = {} //I don't know what to put in context
assistant.message(
{
input: { text: '2' },//the answer "2" the nested node "Tramo Emision"
workspaceId: '<>',
context: context
}, function (err, response) {
if (err) {
rejects(err)
} else {
context = response.context;
}
})
.then(response => {
console.log(JSON.stringify(response.result, null, 2));
})
.catch(err => {
console.log(err);
});
但是这段代码只允许我获得全局响应而不是嵌套响应
我得到答案,这个
在上一轮对话中没有对话节点条件匹配为真 - context.nodes_visited 为空。下一轮回落到根节点。
在您的代码中,您在每个循环中都将上下文重置为一个空对象。这具有将对话重置回开头的效果。上下文用于管理对话状态。 IE。您的对话在对话流中的位置,以及已设置的任何变量。这允许对话进行。
在 V1 API 中,每次打开 message
return 上下文对象,您的应用程序可以查看和修改它,但它必须 return 完整上下文对象。因此,您的应用程序需要以某种方式缓存上下文对象,当它获得上下文对象时,然后 return 在下一次调用 message
时将其返回。您的应用需要在任何函数之外的文件全局级别启动缓存,因此它只会启动一次,而不是在每次对话时都启动。
在 V2 API 中,上下文管理由 API 代表您在会话级别执行。为了维护上下文,您需要创建一个会话并在每个会话轮次上使用该会话 ID。可以选择将上下文 return 编辑到您的应用程序,允许您的应用程序查看/修改已设置的任何上下文变量。
我想从嵌套在对话中的 Watson 获得响应
我可以从欢迎节点那里得到响应,当他们不理解文本输入时,因为它们是全球性的
这是我的代码
const AssistantV1 = require('ibm-watson/assistant/v1');
const { IamAuthenticator } = require ('ibm-watson/auth');
const { rejects } = require('assert');
const assistant = new AssistantV1({
authenticator: new IamAuthenticator({ apikey: '<>' }),
serviceUrl: 'https://gateway.watsonplatform.net/assistant/api/',
version: '2020-04-01'
});
let context = {} //I don't know what to put in context
assistant.message(
{
input: { text: '2' },//the answer "2" the nested node "Tramo Emision"
workspaceId: '<>',
context: context
}, function (err, response) {
if (err) {
rejects(err)
} else {
context = response.context;
}
})
.then(response => {
console.log(JSON.stringify(response.result, null, 2));
})
.catch(err => {
console.log(err);
});
但是这段代码只允许我获得全局响应而不是嵌套响应
我得到答案,这个
在上一轮对话中没有对话节点条件匹配为真 - context.nodes_visited 为空。下一轮回落到根节点。
在您的代码中,您在每个循环中都将上下文重置为一个空对象。这具有将对话重置回开头的效果。上下文用于管理对话状态。 IE。您的对话在对话流中的位置,以及已设置的任何变量。这允许对话进行。
在 V1 API 中,每次打开 message
return 上下文对象,您的应用程序可以查看和修改它,但它必须 return 完整上下文对象。因此,您的应用程序需要以某种方式缓存上下文对象,当它获得上下文对象时,然后 return 在下一次调用 message
时将其返回。您的应用需要在任何函数之外的文件全局级别启动缓存,因此它只会启动一次,而不是在每次对话时都启动。
在 V2 API 中,上下文管理由 API 代表您在会话级别执行。为了维护上下文,您需要创建一个会话并在每个会话轮次上使用该会话 ID。可以选择将上下文 return 编辑到您的应用程序,允许您的应用程序查看/修改已设置的任何上下文变量。