1

我们使用 IBM watson 助手进行 NLU,后端使用 Nodejs 进行 API 调用。我能够连接并从 watson 助手获得 JSON 响应。为此,我使用了以下软件包“watson-developer-cloud/assistant/v2”。

我正在处理 watson 中的上下文/插槽,所以我只想在 JSON 响应中获取这些上下文变量/插槽的值。

我试图从 watson 发送文本响应(JSON 文件)中的上下文变量。

还尝试使用 watson 助手 V1 获取上下文,但问题在于会话处理,所以我更喜欢使用 watson 助手 V2

const AssistantV2 = require('watson-developer-cloud/assistant/v2');
const assistant = new AssistantV2({
  version: 'XXXX-XX-XX',
  iam_apikey: 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
  url: 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
});

var sess_id;

assistant.createSession({
    assistant_id: 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'
})
  .then(res => {
    sess_id=res.session_id;
})
  .catch(err => {
    console.log(err);
});

assistant.message({
    assistant_id: 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX',
    session_id: sess_id,
    input: {
        'message_type': 'text',
        'text': 'Message'},
    })
    .then(res => {
        console.log(JSON.stringify(res, null, 2))
        console.log(res)})

预期:我应该在 watson Json 响应中获得上下文

实际:我没有在 watson Json 响应中获得上下文

4

2 回答 2

1

请参阅IBM Watson Assistant 的 V2 API 文档Node.js SDK 中的第 473 行

有一个输入参数return_context。默认为。如果设置为true,它会告诉服务器返回带有消息响应的上下文数据。

  /** Whether to return session context with the response. If you specify `true`, the response will include the `context` property. */
    return_context?: boolean;
于 2019-04-22T12:29:26.687 回答
1

正如@data_henrik 正确提到的那样,您需要return_context作为请求的一部分传递才能MessageContext在响应中看到。

这是一个示例请求,其中包含从传递的上一个响应返回的上下文

const AssistantV2 = require('watson-developer-cloud/assistant/v2');

const service = new AssistantV2({
  iam_apikey: '{apikey}',
  version: '2019-02-28',
  url: '{url}'
});

service.message({
  assistant_id: '{assistant_id}',
  session_id: '{session_id}',
  input: {
    'message_type': 'text',
    'text': 'Hello',
    'options': {
      'return_context': true
    }
  },
  context: {
    'global': {
      'system': {
        'user_id': 'my_user_id'
      }
    },
    'skills': {
      'main skill': {
        'user_defined': {
          'account_number': '123456'
        }
      }
    }
  }
})
  .then(res => {
    console.log(JSON.stringify(res, null, 2));
  })
  .catch(err => {
    console.log(err);
  });

在 下input,可以看到return_context设置为true

于 2019-04-23T10:19:26.117 回答