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

Aplicação não reconhece Parâmetro

Fiz o exemplo conforme explicado na aula.

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

var conversation = new conversationV1({
    username: 'username',
    password: 'password',
    path: { workspace_id: 'workspace_id' },
    version_date: '2017-05-26'
});

conversation.message({ }, resposta);

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

Porém estou recebendo um erro que a aplicação não está encontrando o parâmetro workspace_id.

Error: Missing required parameters: workspace_id
    at Object.getMissingParams (C:\Users\ADMIN\Documents\Alura\aplicacao-con
versation\node_modules\watson-developer-cloud\lib\helper.js:95:11)
    at ConversationV1.message (C:\Users\ADMIN\Documents\Alura\aplicacao-conv
ersation\node_modules\watson-developer-cloud\conversation\v1-generated.js:305:38
)
    at Object.<anonymous> (C:\Users\ADMIN\Documents\Alura\aplicacao-conversa
tion\aplicacao-conversation.js:11:14)
    at Module._compile (module.js:660:30)
    at Object.Module._extensions..js (module.js:671:10)
    at Module.load (module.js:573:32)
    at tryModuleLoad (module.js:513:12)
    at Function.Module._load (module.js:505:3)
    at Function.Module.runMain (module.js:701:10)
    at startup (bootstrap_node.js:194:16)

Encontrei outra pessoa com o mesmo problema mas sem solução (https://developer.ibm.com/answers/questions/422675/workspace-id-is-said-to-be-missingthough-it-is-pre/).

Fui pesquisar a documentação da IBM e o exemplo de como declarar os parâmetros parece estar correto (https://console.bluemix.net/docs/services/conversation/develop-app.html#communicating-with-the-conversation-service?cm_sp=dw-bluemix-_-nospace-_-answers).

Alguma ideia do que pode estar errado?

10 respostas

Oi Suéllen,

nesse caso, eu chegaria o Workspace Id lá no menu inicial para ver se está tudo certo.

No entanto, eu olhei seu código, está certinho, aí rodei o seu código aqui e consegui me conectar.

Só me confirme se a sua mensagem inicial é "Bem vindo ao Assistente Virtual da Alura Phone! O que você precisa?" ?

Se for, deu tudo certo! E pode ser alguma outra configuração entrando em conflito. Se puder, faça mais um teste.

Me fale se deu certo, do contrário, a gente vai investigando! :)

Essa é minha mensagem inicial sim. Eu tive problemas pra instalar o Node JS no Linux então estava em uma VM do Windows 7 tentando rodar o código. Achei que o problema poderia ser a VM, mas tentei em outro notebook com Windows 10, até testei com um Workspace diferente, e deu a mesma mensagem dizendo que há algo de errado com o Workspace ID.

Oi Suéllen,

bom, eu conectei no seu serviço usando o seu código. O que posso afirmar é que ele está certinho, senão eu não teria conseguido conectar e ver a mensagem.

Eu finalmente consegui abrir o link do DeveloperWorks, mas o pessoal não esclareceu muito lá.

Estou pensando se não poderia ser algo da estrutura do projeto. Acho que temos algumas opções.

A primeira é você baixar esse projeto do github, colocar as suas credenciais e tentar executá-lo aí.

Se der erro, com certeza é algum problema (talvez de permissão de arquivo) das máquinas, e eu ficaria com as mãos atadas para conseguir realmente te ajudar. :/

Se der certo, não é alguma configuração das máquinas, mas algum problema na estrutura do projeto, nesse caso, você teria como colocar o projeto no Github para eu dar uma olhada?

Faça o teste com o projeto do Github e me fala se deu certo. Estou na torcida. Se preferir, pode também me mandar o seu projeto inteiro.

Consegui executar o seu código sem problemas. Até tentei executar o meu como administrador, caso fosse algum problema de permissões, tentei usando outro workspace_id, mas não vai. Coloquei meu projeto no Github, se puder dar uma olhada: https://github.com/scaroline5/aplicacao-conversation.

Oi Suéllen,

pelo o que eu vi tudo certo também.

Só te aconselho e a tirar as suas credenciais do arquivo, e deixar como está aqui no Fórum se o repositório tiver público - senão qualquer pessoa pode conectar.

Além disso como o Github salva versões do arquivo, é uma boa você deletar essa versão de lá também.

Já sabemos que não é o seu código nem o seu projeto.

Outra pergunta, como você está fazendo para rodar o projeto?

Valeu pela dica, tinha esquecido disso.

Eu executo desta forma: Abro o Node.js command prompt. Vou até o diretório onde está localizado meu projeto. Executo o comando "node aplicacao-conversation.js" e é retornado o erro "Missing Required parameters: workspace_id". Quando faço o mesmo procedimento para o seu projeto, executa normalmente sem erros.

Decidi criar o projeto novamente. Novo código, nova estrutura de pastas... E fiz alguns testes. Vou colocar abaixo somente a parte da função, a var conversationV1 e conversation, permanecem igual antes.

Executando o código com esta função que foi a primeira versão feita na aula, recebi de retorno somente "undefined".

conversation.message({ }, resposta);

function resposta (erro, response){
    console.log(response)
};

Executando esta versão, um pouco mais incrementada...

conversation.message({ }, resposta);

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

... recebi como resposta:

TypeError: Cannot read property 'output' of undefined
    at resposta (D:\Documentos\Cursos\Alura\Projects\Chatbot\aplication-conversation\aplication-conversation.js:17:23)
    at ConversationV1.message (D:\Documentos\Cursos\Alura\Projects\Chatbot\aplication-conversation\node_modules\watson-developer-cloud\conversation\v1-generated.js:307:20)
    at Object.<anonymous> (D:\Documentos\Cursos\Alura\Projects\Chatbot\aplication-conversation\aplication-conversation.js:14:14)
    at Module._compile (module.js:643:30)
    at Object.Module._extensions..js (module.js:654:10)
    at Module.load (module.js:556:32)
    at tryModuleLoad (module.js:499:12)
    at Function.Module._load (module.js:491:3)
    at Function.Module.runMain (module.js:684:10)
    at startup (bootstrap_node.js:187:16)

Executando este abaixo, deu o mesmo erro que acima, indicando que o programa não consegue ler o output juntamente com o erro que eu vinha recebendo anteriormente "Missing required parameters: workspace_id"

conversation.message({ }, resposta);

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

Último teste feito... mesmos resultados acima, as duas mensagens de erro relacionadas ao workspace_id e ao output.

conversation.message({ }, processarResposta);

function processarResposta (erro, response){
    if (erro) {
        console.log(erro);
    }
    if (response.output.text != 0) {
        console.log(response.output.text[0])
    }
};

Caso queira saber como criei meu projeto, segui as instruções abaixo, que anotei conforme fui aprendendo no curso.

Criar o arquivo principal com código em JavaScript e salvar com extensão *.js.
Abrir o Node.js Command Prompt.
Navegar até a pasta do projeto (cd command)
Executar o comando "npm init" e configurar o projeto.
Executar o comando "npm install watson-developer-cloud -s", onde o "-s" é utilizado para salvar as alterações.
Executar o projeto usando o comando "node project_name.js".

Não faço ideia de porque somente o meu projeto não funciona, e ainda somente no meu computador. O seu projeto funciona perfeitamente.

:(

solução!

Finalmente consegui fazer meu código executar. Copiei a pasta node_modules do seu projeto e substituí a pasta node_modules no meu projeto. Executou de primeira sem erros. Eu notei que vários arquivos não existiam na minha pasta, mas não sei se são de alguma coisa que ainda vai ser instalado nas próximas aulas (pois o seu projeto contém mais coisas do que eu já fiz) ou se eram arquivos que estavam faltando mesmo. Mais aparentemente é algum problema com o Node.js e a geração do projeto.

Boa Suéllen!

Eu tinha olhado a sua node modules no Github e ela me pareceu ok, porque o que importa mesmo é o pacote do Watson Developer Cloud estar lá.

Deve ter sido algum problema ao dar o comando e o computador não executou direito - para resolver isso, você também pode deletar a sua node modules e fazer um npm install de novo para ver se vai :p.

Você mandou muito, continue assim :))).

Também estava com o mesmo problema, 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'
});

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