【问题标题】:How to get context variables from the response of IBM watson assistant V2 using Nodejs?如何使用 Nodejs 从 IBM watson assistant V2 的响应中获取上下文变量?
【发布时间】:2019-04-22 11:04:21
【问题描述】:

我们使用 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 响应中获得上下文

【问题讨论】:

  • 您能否向我们展示一下回复,最好是预期回复的示例?

标签: node.js ibm-cloud chatbot ibm-watson watson-assistant


【解决方案1】:

参见V2 API documentation for IBM Watson Assistantline 473 in the Node.js SDK

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

  /** Whether to return session context with the response. If you specify `true`, the response will include the `context` property. */
    return_context?: boolean;

【讨论】:

  • 太棒了!你的建议对我帮助很大。非常感谢 henrik。
【解决方案2】:

正如@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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多