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

Como gravar o retorno do serviço em uma variavel

Boa tarde,

Gostaria de saber como posso gravar o retorno de um serviço em uma variável dentro do watson conversation.

Exemplo:

Tenho a seguinte URL: http://www.asgroup-portal.com/api/app/contacts/list-t É um serviço de teste que criei que retorna uma string qualquer.

Eu gostaria de pegar esse resultado e armazenar em uma variável dentro do conversation. Tentei dessa maneira:

{
  "output": {
    "text": {
      "values": [
        ""
      ]
    }
  },
  "actions": [
    {
      "name": "http://www.asgroup-portal.com/api/app/contacts/list-t",
      "type": "client",
      "result_variable": "teste"
    }
  ]
}

Porém tentei usar depois a variável chamada "teste" no restante do dialog e veio vazio. =/

Aguem já precisou fazer isso? abs

1 resposta
solução!

Oi Bruno, :)

quando usamos o json dentro do Watson repare que é de output ou saída, então o que está colocando nas actions vale para o diálogo (vai aparecer como texto) ou vai ser acessível quando você usar uma variável de contexto e tratá-la na camada de aplicação, pois o json de dentro do serviço do Watson não serve para fazer chamadas REST.

Então, para "pegar" essa variável você precisa, por exemplo, passar uma variável de contexto para a aplicação, fazer uma chamada para a sua API lá, e retornar a variável para o Watson. Assim como fazemos nesta parte do curso: https://cursos.alura.com.br/course/chatbot-parte-2-comunicando-sua-app-com-o-bot/task/32298

Veja se o que está abaixo te esclarece um pouco. Por ser outro projeto, eu não consigo te dar certeza que esse é o código, mas deve ser algo bem parecido com isso:

{
  "actions": "chamar-api",
  "output": {
        "text": {
          "values": [""]
        }
    }
}

E na aplicação:

  if (response.output.action === 'chamar-api') {
    //código que conecta lá e recebe a variável
    //var teste = resposta da chamada
 conversation.message({
      input: { text: teste },
           context : response.context,
    }, processarResposta)
  }

Espero ter ajudado, qualquer outra dúvida, só mandar aqui o/.