13
respostas

Erro na execução da aplicação

Após executar o comando (node aplicacao-conversation.js)

recebo a seguinte mensagem

{ Error: connect ETIMEDOUT 72.246.134.80:443
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1117:14)
  errno: 'ETIMEDOUT',
  code: 'ETIMEDOUT',
  syscall: 'connect',
  address: '72.246.134.80',
  port: 443 }
13 respostas

Oi Samuel,

esse erro de ETIMEDOUT indica que estamos abrindo uma conexão para receber dados, mas que ela não está sendo fechada.

Além disso, ele pode acontecer bastante se temos algum firewall que acaba bloqueando a execução da aplicação.

Geralmente é isso que acontece. Então, se for o segundo caso, ou você teria que desabilitar o firewall para rodar a aplicação ou talvez rodá-la em outra máquina.

Se você ainda achar que pode ser o código, você pode copiá-lo aqui ou passar um link para o github que damos uma olhada e testamos.

Só lembrando de tirar as suas chaves pessoais de conexão do workspace id se for mandar o código.

Estou no aguardo!

Muito obrigado Cássia.....vou fazer um teste em casa e depois digo se funcionou.

Pelo que você disse, acredito que o firewall da empresa esteja bloqueando o acesso.

Beleza! Só continuar postando aqui. :)

Acontece muito do firewall da empresa acabar bloqueando esse tipo de chamada. Eu espero que dê certo! ^^

Cássia, boa tarde! Quanto ao firewall, era isso mesmo. Estou fazendo o testes via (4G) celular.

-Estou com outro problema na parte de acessar pela url

http://primero-chat.mybluemix.net/

aparece isso na lateral

{
  "output": {
    "text": "The app has not been configured with a <b>WORKSPACE_ID</b> environment variable. Please refer to the <a href=\"https://github.com/watson-developer-cloud/assistant-simple\">README</a> documentation on how to set this variable. <br>Once a workspace has been defined the intents may be imported from <a href=\"https://github.com/watson-developer-cloud/assistant-simple/blob/master/training/car_workspace.json\">here</a> in order to get a working application."
  }
}

aparentemente em algum lugar ele não esta reconhecendo o WORKSPACE_ID (Alguma dica de qual arquivo olhar ou é melhor começar novamente?)

desde já muito obrigado pela atenção!

Ah, que bom, Samuel!

Olha, se você der uma olhada no arquivo aplicacao-conversation.js pode ser que esteja faltando a referência ao workspace ou que tenha esquecido as aspas simples.

Veja se onde está workspace_id o código está certinho.

Além disso, como o nome do serviço mudou de Conversation para Assistant, você pode renomear os arquivos e no código, fazer como abaixo:

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

var assistant = new AssistantV1({
  username: '<username>',
  password: '<password>',
  version: '2018-09-20'
});
var params = {
  workspace_id: '<workspace id>'
}; 

assistant.message(params, resposta);

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

A diferença nesse código é que a API do Assistant reformulou e começou a exigir que o workspace_id fosse passado dentro de message e não mais junto com o username e password.

Para algumas pessoas a API funciona como no curso e para algumas é necessário fazer essa mudança no código.

Se quiser dar uma olhada, este é o link da API.

Vai testando da solução mais simples e vendo o que funciona.

Bom dia Cássia, olha eu aqui novamente...rsrsrsr

tentei voltar todo o processo utilizando o código que você passou....a boa noticia é que o errou mudou.....rs

C:\Chatbot\chat> node chat.js
C:\Chatbot\chat\node_modules\watson-developer-cloud\assistant\v1.js:57
            throw new Error('Argument error: version was not specified');
            ^

Error: Argument error: version was not specified
    at new AssistantV1 (C:\Chatbot\chat\node_modules\watson-developer-cloud\assistant\v1.js:57:19)
    at Object.<anonymous> (C:\Chatbot\chat\chat.js:3:17)
    at Module._compile (internal/modules/cjs/loader.js:688:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:699:10)
    at Module.load (internal/modules/cjs/loader.js:598:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:537:12)
    at Function.Module._load (internal/modules/cjs/loader.js:529:3)
    at Function.Module.runMain (internal/modules/cjs/loader.js:741:12)
    at startup (internal/bootstrap/node.js:285:19)
    at bootstrapNodeJSCore (internal/bootstrap/node.js:739:3)

como se a versão não estivesse sendo informada

segue meu código

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

var assistant = new AssistantV1 ({
    username:'digite-username-aqui',
    password:'digite-senha-aqui',
    version_date:'2018-09-20',
});

var params = {
    workspace_id:'digite-workspace_id-aqui'
};

assistant.message(params, resposta);

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

Boa Samuel, sem problemas!

Erros são os nossos melhores amigos hahaha

Eu reparei que tem uma vírgula depois da aspas simples da versão, aqui

version_date:'2018-09-20', });

veja se removendo a vírgula e alterando para

version_date:'2018-09-20'});

o código funciona.

Aguardo a resposta! Vamos lá.

vírgula removida e o erro continua!

Eu to achando que teve mais uma mudança, olha só como está o código lá na API.

Pelo o que estou entendendo, agora podemos fazer uma autenticação com o token iam_apikey:

var watson = require('watson-developer-cloud');

var assistant = new watson.AssistantV1({
  iam_apikey: '{apikey}',
  version: '2018-09-20'
});

Ou uma autenticação básica passando a url do serviço ao invés da versão, acho que deve ser isso que ele não está reconhecendo:

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

var assistant = new AssistantV1({
  version: '{version}',
  username: '{username}',
  password: '{password}',
  url: '{url}'
});

A url geralmente é a abaixo, eu sugiro tentar assim primeiro:

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

var assistant = new AssistantV1({
  version: '{version}',
  username: '{username}',
  password: '{password}',
  url: 'https://gateway-wdc.watsonplatform.net/assistant/api'
});

Veja se funciona. Continuo te aguardando aqui.

Usei conforme você falou. Pelo menos o erro mudou.....rs

segue o código var AssistantV1 = require('watson-developer-cloud/assistant/v1');

var assistant = new AssistantV1 ({ version:'{2018-09-20}', username:'{ }', password:'{**}', url: 'https://gateway.watsonplatform.net/assistant/api' });

OBS: tentei alterar a URL para https://gateway-wdc.watsonplatform.net/assistant/api mais o erro é o mesmo.

C:\Chatbot\chat> node chat.js
{ Error: Unauthorized: Access is denied due to invalid credentials.
    at Request._callback (C:\Chatbot\chat\node_modules\watson-developer-cloud\lib\requestwrapper.js:102:21)
    at Request.self.callback (C:\Chatbot\chat\node_modules\request\request.js:185:22)
    at Request.emit (events.js:182:13)
    at Request.<anonymous> (C:\Chatbot\chat\node_modules\request\request.js:1157:10)
    at Request.emit (events.js:182:13)
    at Gunzip.<anonymous> (C:\Chatbot\chat\node_modules\request\request.js:1079:12)
    at Object.onceWrapper (events.js:273:13)
    at Gunzip.emit (events.js:187:15)
    at endReadableNT (_stream_readable.js:1094:12)
    at process._tickCallback (internal/process/next_tick.js:63:19)
  code: 401,
  error: 'Unauthorized',
  body: 'Unauthorized',
  'x-global-transaction-id': 'ffea405d5bdb4c8311efbaf5' }

Oi Samuel,

assim ele reclama das credenciais, veja se está tudo certinho no copy e paste.

Caso não seja isso, acho que o jeito é testar o código aqui.

Você tem como compartilhar o código no Github ou alguma outra ferramenta?

seria isso

https://github.com/samukadias/chatbot/blob/master/chat.js

oi Samuel, quase.

Sugiro remover esse commit para tirar as credenciais e fazer novamente sem elas. Mas o projeto inteiro para eu rodar aqui. Sabe aquela pasta que criamos? Acho que esse arquivo deve estar dentro dela. Quando falo o projeto, digo essa pasta.

Eu posso inserir sim esse arquivo para testar, mas aí se tiver mais alguma outra configuração do seu projeto, pode continuar a dar erro.