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

Conversa diferente no console e prompt-sync

Fala galera, tudo bem?

Existe alguma diferença de funcionamento entre um bot acionado por prompt -sync ou pelo "Try it out" na barra laterlal direita do Watson??

Pergunto pq no meu dialogo eu uso slots e a resposta no Try it out referencia essa variavel atraves de $ e tudo funciona perfeitamente.

Ja no prompt-sync o bot parece ser perder e dpa a resposta dizendo que não entendeu sobre o q falei.

Preciso fazer o deploy no Bluemix / IBM Cloud para que funcione??

Obrigado

5 respostas

Oi Anderson,

quando usamos o "try it out" estamos testando o próprio serviço dentro dele. Não há nada de fora do Watson se comunicando com ele. Eu buscaria olha mais como um teste para assegurarmos que nesse caso nosso diálogo funciona, do que como algo garantido.

E, quando usamos o prompt é diferente, pois estamos nos conectando ao serviço do Watson como em uma situação real, na qual você teria um site ou alguma outra aplicação buscando e enviando mensagens pra ele.

Além disso, para se conectar com o Watson Assistant, você não precisa ter feito um deploy, mas precisa ter as credenciais de conexão, que são o seu nome de usuário, senha e id da área de trabalho (workspace id) do serviço ao qual quer se conectar. Isso já é o bastante. Nesse momento, o deploy serve para que você tenha um endereço, uma url de acesso para que o chat seja acessado por outras pessoas.

Sobre essa parte na qual o bot se perde, você teria como me mandar um exemplo de pergunta para eu entender melhor como ele está se perdendo?

Ele deveria responder normalmente, então pode ser que tenhamos que alterar algo no código.

Espero ter esclarecido, qualquer coisa, só me falar :). Aguardo sua resposta.

Obrigado pelo retorno, Cassia. Entendi o que vc explicou, mas por incrível que pareça o bot está mais assertivo no Try it out do que no prompt conectado diretamente ao meu workspace.

Eu já havia feito toda config e já tenho conectividade com o meu workspace. O problema é no fluxo de diálogo mesmo.

Vamos lá, vou tentar explicar com mais clareza.

Codigo do backend Node

const params = {
    input: {},
    workspace_id: <WKSPC_ID>,
};

assistant.message(params, processarResposta);



function processarResposta(err, response) {
    if (err) console.log(err);
    // console.log(response)

    if (response.output.text.length > 0)
        console.log(response.output.text[0]);

    let novaMensagemUsuario = prompt('>> ');
    assistant.message({
        workspace_id: <WKSPC_ID>,
        input: {
            text: novaMensagemUsuario,
            context: response.context
        }
    }, processarResposta);
}

Diálogo no Try it out:

  • Bot >>Olá. Como posso te ajudar?
  • Usuario >> as instancias estao ok?
  • Bot >> Qual a maquina que deseja consultar?
  • Usuario >> maquina01
  • Bot >> Iniciar diagnostico na maquina01 ?
  • Usuario >> sim
  • Bot >> Ok, maquina01 esta operacional!

Considerações importantes aqui.

  • maquina01 faz uso de slot e está armazenado em uma variável $maquina

  • Apesar do trecho:

If bot recognizes : @confirmacao:sim
Respond with: Ok, $maquina esta operacional!

O diálogo no prompt-sync se comporta de maneira bem diferente.

Dialogo no Prompt:

  • Bot >>Olá. Como posso te ajudar?
  • Usuario >> as instancias estao ok?
  • Bot >> Qual a maquina que deseja consultar?
  • Usuario >> maquina01
  • Bot >> Eu não entendi. Você pode tentar reformular a frase.

Minha questão é essa, pq a diferença de comportamento se o Workspace é o mesmo?

solução!

Oi Anderson,

obrigada, agora entendi melhor a sua questão :p.

Veja, como é um projeto diferente do curso eu não consigo te dar certeza, mas não é para uma resposta estar diferente da outra. Então, se elas estão, tem algo que precisamos examinar.

Repare que é aqui, na leitura de maquina01, antes da confirmação, e indo para o próximo nó que o bot se perde

  • Bot >> Qual a maquina que deseja consultar?
  • Usuario >> maquina01

pois a próxima mensagem já é

  • Bot >> Eu não entendi. Você pode tentar reformular a frase.

Então eu olharia se ele está entendendo o maquina01 (me parece que ele não está), se é algo dessa estrutura que está faltando passar, como uma variável de contexto e também se não falta nada para "puxar" o próximo nó que é de diagnóstico.

O que me parece é que tem algum problema com as variáveis, eu arriscaria que ele está perdendo alguma referência e por isso não consegue encontrar o próximo nó.

Você vai precisar investigar, pois pode ser que seja um problema do tipo: ele não está entendendo o 0 em 01, então preciso usar um escape.

Ou algo como, não passei 3 variáveis de contexto, e agora como estão em falta, ele se perde. Não consigo dizer.

O que posso te passar são três coisas que funcionam pra mim na hora de "debugar" (um processo não tão legal no Watson por isso que bato na tecla de teste tudo sempre hehe):

  • fazer uma cópia desse nó que está pronto e então testar parte por parte dela usando o prompt para saber em que momento ele está se perdendo.

  • dar uma olhada nas variáveis de contexto que o try it out guarda para ver se não está esquecendo de passar alguma para o prompt.

  • exibir as variáveis, entidades e intenções do diálogo na resposta do Watson com <? ?> e colocar console.log no objeto de resposta.

Fazendo isso, em algum momento, algo vai estar fora do lugar para gerar essa confusão no Watson. Aí, identificando o problema, você vai conseguir corrigir.

Espero que isso te ajude! Qualquer coisa, só voltar aqui no Fórum. :)

Resolveu aqui:

"Então eu olharia se ele está entendendo o maquina01 (me parece que ele não está), se é algo dessa estrutura que está faltando passar, como uma variável de contexto..."

   if (response.output.text.length > 0) {
        context.maquina = 'maquina01';  //hardcoded so pra teste
        console.log(response.output.text[0]);
    }

Muito atenciosa vc, Cassia! Obrigado.

Aee Anderson,

que bom que deu certo! Imagine.

Mande bala aí!