Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

Erro com parâmetro workspace id

Também estava com o mesmo problema, solucionado neste tópico https://cursos.alura.com.br/forum/topico-aplicacao-nao-reconhece-parametro-52901, mas só consegui resolver o passando o workspace_id através de uma variável. Assim funcionou beleza.

var ConversationV1 = require('watson-developer-cloud/conversation/v1');

var conversation = new ConversationV1({
  username: '<username>',
  password: '<password>',
  version_date: '2017-05-26'
});
var params = {
  workspace_id: '<workspace id>'
}; 

conversation.message(params, resposta);

 function resposta(error, response) {
    if (error) {
      console.error(error);
    } else {
      console.log(response.output.text[0]);
    }
  };

Da seguinte forma colocada no exemplo não funciona, qual a diferença?

var conversation = new conversationV1({
    username: 'username',
    password: 'password',
    path: { workspace_id: 'workspace_id' },
    version_date: '2017-05-26'
});
6 respostas
solução!

Oi Cicinho, :)

a diferença da forma que escrevemos o código, é que no primeiro você está passando o workspace id como o conteúdo de uma variável params e no segundo você está passando como o valor de uma propriedade workspace id dentro de path em um objeto conversationV1.

Já a diferença do que isso faz, é que dentro do objeto, sempre que o serviço for criado, ele já vai se conectar ao workspace que estamos passando. Então, por exemplo, caso você tenha apenas um workspace para se conectar, esse modo é mais indicado.

E fora dele, na variável, o serviço só irá para aquele workspace quando você passar o valor de params. Ou seja, se você tivesse mais workspaces para se conectar, ou chamar em partes diferentes do código, é a melhor escolha.

Por exemplo, nesse código, apenas quando você manda a mensagem é que você se conecta a esse workspace.

Sobre o funcionamento, algo que pode estar acontecendo é uma mudança na API e então o Conversation não irá mais aceitar o workspace id dentro do objeto, eu não sei dizer. Mas, como os códigos que ainda estão com ele dentro do objeto funcionam, caso você queira testar, aconselho reinstalar a node modules.

E, de qualquer modo, pode continuar passando o id dentro de params, não tem problema nenhum. :)

Para mim foi o mesmo. Só resolvi passando dentro de variável.

Obrigado Cássia. Tentei reinstalar o node modules, mas continuou com o outro erro. Vou deixar assim por enquanto :)

Beleza gente. Obrigada! :)

Se isso tiver acontecendo com todo mundo, pode ser que a API tenha mudado mesmo e não esteja aceitando dentro do objeto.

Ah, sim, não se preocupe Cicinho. O que você está fazendo está certo, pode passar na variável sem problemas.

Comigo aconteceu a mesma coisa. Só consegui ao passar o workspace_id como parâmetro.

Bom dia a todos!

Complementando a solução...

Nessa parte da documentação, o workspace_id é passado como argumento do método message. Testei e funcionou.


Retirado da documentação: https://github.com/watson-developer-cloud/node-sdk

Conversation

Use the Conversation service to determine the intent of a message.

Note: you must first create a workspace via Bluemix. See the documentation for details.

var ConversationV1 = require('watson-developer-cloud/conversation/v1');

var conversation = new ConversationV1({
  username: '<username>',
  password: '<password>',
  url: 'https://gateway.watsonplatform.net/conversation/api/',
  version: '2017-05-26'
});

conversation.message(
  {
    input: { text: 'coloque a mensagem aqui' },
    workspace_id: 'workspace id'
  },
  function(err, response) {
    if (err) {
      console.error(err);
    } else {
      console.log(JSON.stringify(response, null, 2));
    }
  }
);

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software