Как получить контекстные переменные из ответа IBM watson assistant V2 с помощью Nodejs? - PullRequest
1 голос
/ 22 апреля 2019

Мы используем IBM watson assistant для NLU, а бэкэнд мы используем Nodejs для вызова API.Я могу подключиться и получить ответ JSON от помощника Ватсона.Для этого я использовал следующий пакет 'watson-developer-cloud / assistant / v2'.

Я работаю с context / slots внутри watson, поэтому я просто хочу получить значения этих переменных / slots контекста в ответе JSON.

Я пытался отправить переменные контекста в текстовом ответе (файл JSON) от watson.

Также пытался получить контекст с помощью помощника watson V1, но проблема заключается в обработке сеанса, поэтому я предпочелидти с помощником Ватсона 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)})

Ожидаемый: я должен получить контекст в ответе Ватсона Джсона

Фактически: я не получаю контекст в ответе Ватсона Джсона

Ответы [ 2 ]

1 голос
/ 23 апреля 2019

Как правильно заметил @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

1 голос
/ 22 апреля 2019

См. Документацию V2 API для IBM Watson Assistant и , строка 473 в 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;
...