Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Erro no prompt-sync.

insira seu código aqui
//watson, eu quero usar a sua api
//requerimento para essa api
var conversationV1 = require('watson-developer-cloud/conversation/v1');
var prompt = require('prompt-sync')();


//vou te passar o que você precisa acessar
//nome de usuario, senha, workspace, data de versao
var conversation = new conversationV1({
    username:'xxxx-xxxx-xxxx-xxxxxxxx',
    password:'xxxxxxxxxxx',
    path: {workspace_id:'xxxxx-xxxxx-xxxx-xxxx'},
    version_date:'2018-02-16'
});

//vou mandar uma mensagem vazia para receber a msg de boas vindas 
assistant.message({ }, processarResposta);

//o que é essa resposta, quero ver essa resposta
function processarResposta (erro, response){
    if (erro){
        console.log(erro)
    }

    //encerrar a conversa eh falso
    var encerrarConversa = false;

    //mas se voce achar encerrar
    if(response.output.acao === 'encerrar'){
        //fazer algo --> fazer o prompt parar de pedir mais msgs
        console.log(response.output.text[0]);
        //faca encerrar ser verdadeiro - é verdade que estou encerrando
        encerrarConversa = true;
    }

    else{

        if (response.output.text.length != 0){
            console.log(response.output.text[0])
        }
    }

    //se a gente nao encerrar a conversa
    if(!encerrarConversa){
        //manda um prompt
        var novaMensagemUsuario = prompt('>> ');
        assistant.message({ input: {text: novaMensagemUsuario },
            context : response.context
        }, processarResposta);

    }
};

Quando dou o comando node aplicacao-conversation.js ele responde assim:

//watson, eu quero usar a sua api //requerimento para essa api var conversationV1 = require('watson-developer-cloud/conversation/v1'); var prompt = require('prompt-sync')(); //vou te passar o que você precisa acessar //nome de usuario, senha, workspace, data de versao var conversation = new conversationV1({ username:'xxxxxx-xxxx-xxxxx-xxxxx', password:'xxxxxxxx', path: {workspace_id:'xxxx-xxxxx-xxxx-xxxx'}, version_date:'2018-02-16' }); //vou mandar uma mensagem vazia para receber a msg de boas vindas assistant.message({ }, processarResposta); //o que é essa resposta, quero ver essa resposta function processarResposta (erro, response){ if (erro){ console.log(erro) } //encerrar a conversa eh falso var encerrarConversa = false; //mas se voce achar encerrar if(response.output.acao === 'encerrar'){ //fazer algo --> fazer o prompt parar de pedir mais msgs console.log(response.output.text[0]); //faca encerrar ser verdadeiro - é verdade que estou encerrando encerrarConversa = true; } else{ if (response.output.text.length != 0){ console.log(response.output.text[0]) } } //se a gente nao encerrar a conversa if(!encerrarConversa){ //manda um prompt var novaMensagemUsuario = prompt('>> '); assistant.message({ input: {text: novaMensagemUsuario }, context : response.context }, processarResposta); } };

1 resposta
solução!

Oi Régis, :)

sobre o código, repare que ao fazer

assistant.message({ }, processarResposta);

não há nenhuma variável assistant previamente declarada. É essa variável que vai conter o objeto com as credenciais e versão para que você possa conectar, no caso, temos a variável conversation fazendo isso .

var conversation = new conversationV1({
    username:'xxxx-xxxx-xxxx-xxxxxxxx',
    password:'xxxxxxxxxxx',
    path: {workspace_id:'xxxxx-xxxxx-xxxx-xxxx'},
    version_date:'2018-02-16'
});

O que eu vejo no código é que parte está com o conversation e parte com o assistant, então, dadas as mudanças constantes do serviço, sugiro que já atualize para o assistant.

Logo, altere a primeira linha para

var AssistantV1 = require('watson-developer-cloud/assistant/v1');

E, ao invés de var conversation, você terá

var assistant = new AssistantV1({
  username:'xxxx-xxxx-xxxx-xxxxxxxx',
  password:'xxxxxxxxxxx',
  version: '2018-02-16'
});

e como a API agora não aceita que passemos o workspace_iddentro desse objeto, você precisará passá-lo dentro de message, como nos casos abaixo:

var novaMensagemUsuario = prompt('>> ');
 assistant.message({
      workspace_id: 'xxxx-xxxx-xxxx-xxxxxxxx',
      input: { input:{'text': novaMensagemUsuario}
    }, processarResposta)
if(!encerrarConversa){
    //manda um prompt
    var novaMensagemUsuario = prompt('>> ');
    assistant.message(
        {
          workspace_id: 'xxxx-xxxx-xxxx-xxxxxxxx',
          input: {'text': novaMensagemUsuario},
          context : response.context
        },
          processarResposta);
    }
};

Veja se com essas mudanças o código roda :).