Javascript Watson助手在嵌套节点内获取消息

Javascript Watson助手在嵌套节点内获取消息,javascript,node.js,ibm-cloud,chatbot,ibm-watson,Javascript,Node.js,Ibm Cloud,Chatbot,Ibm Watson,我想从沃森那里得到嵌套在对话中的回应 我可以从欢迎节点得到响应,当它们不理解文本输入时,因为它们是全局的 这是我的密码 const AssistantV1 = require('ibm-watson/assistant/v1'); const { IamAuthenticator } = require ('ibm-watson/auth'); const { rejects } = require('assert'); const assistant = new AssistantV1({

我想从沃森那里得到嵌套在对话中的回应

我可以从欢迎节点得到响应,当它们不理解文本输入时,因为它们是全局的

这是我的密码

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);
  });
const-AssistantV1=require('ibm-watson/assistant/v1');
const{iamsauthenticator}=require('ibm-watson/auth');
const{rejects}=require('assert');
施工助理=新助理1({
验证器:新的IAM验证器({apikey:''}),
服务URL:'https://gateway.watsonplatform.net/assistant/api/',
版本:'2020-04-01'
});
让context={}//我不知道在上下文中放什么
助理。留言(
{
输入:{text:'2'},//答案“2”嵌套节点“Tramo Emision”
工作空间ID:“”,
上下文:上下文
},函数(错误,响应){
如果(错误){
拒绝(错误)
}否则{
context=response.context;
}
})
。然后(响应=>{
log(JSON.stringify(response.result,null,2));
})
.catch(错误=>{
控制台日志(err);
});
但这段代码只允许我获取全局响应,而不允许获取嵌套响应

我得到的答案是:


在上一轮对话中没有与true匹配的对话节点条件-context.nodes\u为空。在下一轮中返回到根节点。

在您的代码中,您在每个循环中将上下文重置为空对象。这会将对话重置回开始位置。上下文用于管理会话状态。即,对话在对话框流中的位置,以及已设置的任何变量。这使谈话得以进行

在v1api中,每次打开
消息
都会返回上下文对象,应用程序可以查看和修改该对象,但它必须返回完整的上下文对象。因此,应用程序需要在获取上下文对象时以某种方式缓存它,然后在下次调用
message
时将其返回。您的应用程序需要在任何功能之外的文件全局级别启动缓存,因此它只能启动一次,而不是每次会话都启动


在V2 API中,上下文管理由API代表您在会话级别执行。为了维护上下文,您需要创建一个会话,并在每个会话回合中使用该会话id。可以选择将上下文返回到应用程序,允许应用程序查看/修改已设置的任何上下文变量。

不清楚您的意思。V1 API已弃用,您应该使用V2 API。您正在构建一个对话框树,对话从顶部节点开始。根据用户输入,对话框切换到子树及其节点-或返回到topI。我想获取消息“tramo emision”,该消息由消息“2”激活,但在上一轮对话框中,我没有得到与true匹配的对话框节点条件-context.nodes_visted为空。下一轮回到根节点。我不明白你的问题。你说的“我想得到信息”是什么意思?从哪里来?您是在V2上创建了会话,还是在V1上自己处理会话上下文?我在V1中我想得到watson assistant返回的消息,在V1中我不知道如何处理上下文,我该怎么做?您遵循了哪些文档?有什么具体问题吗?它指出,如果使用V1,则必须将上一个响应接收到的上下文发送回WA