Как получить имя намерения (из Watson API), используя NODEJS - PullRequest
0 голосов
/ 18 июня 2020

Я использую помощник IBM watson для NLU, а серверную часть я использую Nodejs для вызова API. Я могу подключиться и получить ответ JSON от помощника Watson. Для этого я использую приведенный ниже код.

Когда мое приложение отправляет текст сообщения в API и получает ответ мне нужно знать, какое было имя намерения, которое ответило на вопрос.

Я уже реализовал печать возвращенного JSON (см. Ниже), но я не могу идентифицировать на нем имя намерения.

Я был бы признателен за любую помощь в этом вопросе.

const AssistantV2 = require('ibm-watson/assistant/v2');
const { IamAuthenticator } = require('ibm-watson/auth');

// Configurar o wrapper de serviço do Assistente.
const service = new AssistantV2({
  version: '2019-02-28',
  authenticator: new IamAuthenticator({
    apikey: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', // replace with API key
  })
});

const assistantId = 'yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy'; // replace with assistant ID let sessionId;

// Create session.
service
  .createSession({
    assistantId,
  })
  .then (res =>{
    sessionId = res.result.session_id;
    zz = res.headers;
    zz1 = res.statusText;
    sendMessage({
      messageType: 'text',
      text: 'estou com muita dor', // start conversation with empty message
    });
  })
  .catch(err => {
    console.log(err)
  }); // something went wrong });

// Send message to assistant.
function sendMessage(messageInput) {
  service
    .message({
      assistantId,
      sessionId,
      input: {messageInput, options:{'return_context': true}}
    })
    .then (res =>{
      processResponse(res.result);
      console.log(JSON.stringify(res, null, 2));
    })
    .catch(err => {
      console.log(err)
    }); // something went wrong }); }
}
// Processe a resposta.
function processResponse(response) {
  // Display the output from assistant, if any. Supports only a single // text response.
  if (response.output.generic) {
    if (response.output.generic.length > 0) {
      if (response.output.generic[0].response_type === 'text') {
        console.log (response.output.generic [ 0 ] .text); }
    }
  }
}

* JSON *

{
  "status": 200,
  "statusText": "OK",
  "headers": {
    "content-type": "application/json; charset=utf-8",
    "content-length": "458",
    "access-control-allow-origin": "*",
    "access-control-allow-methods": "GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONS",
    "access-control-allow-headers": "Content-Type, Content-Length, Authorization, X-Watson-Authorization-Token,
X-WDC-PL-OPT-OUT, X-Watson-UserInfo, X-Watson-Learning-Opt-Out, X-Watson-Metadata",
    "access-control-max-age": "3600",
    "content-security-policy": "default-src 'none'",
    "x-dns-prefetch-control": "off",
    "x-frame-options": "SAMEORIGIN",
    "strict-transport-security": "max-age=31536000; includeSubDomains;",
    "x-download-options": "noopen",
    "x-content-type-options": "nosniff",
    "x-xss-protection": "1; mode=block",
    "x-watson-session-timeout": "session_timeout=300",
    "x-response-time": "40.583ms",
    "x-global-transaction-id": "5e03ba22807bb45fd8df7dc92eee618a",
    "x-dp-watson-tran-id": "5e03ba22807bb45fd8df7dc92eee618a",
    "x-edgeconnect-midmile-rtt": "47",
    "x-edgeconnect-origin-mex-latency": "172",
    "date": "Thu, 18 Jun 2020 15:53:31 GMT",
    "connection": "close"
  },
  "result": {
    "output": {
      "intents": [],
      "entities": [],
      "generic": [
        {
          "response_type": "text",
          "text": "Olá.. eu sou a Dra. Home. Estou aqui para te auxiliar em informações sobre a clínica."
        },
        {
          "source": "https://encrypted-tbn0.gstatic.com/images?q=tbn%3AANd9GcSraIoUCWfz9tqBQRpvxZq8umDa85wBK0vtELzbrzpU94QdKyV1",
          "response_type": "image"
        }
      ]
    },
    "context": {
      "global": {
        "system": {
          "turn_count": 1
        },
        "session_id": "52dbe39f-30b0-4eb1-ba34-f48d11c28270"
      },
      "skills": {
        "main skill": {
          "system": {}
        }
      }
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...