Skip to main content

Iterar JSON para retornar mais de uma informação


ralsouza

Olá, pessoal!!!


Executando a seguinte function, teremos o seguinte retorno no Whatsapp:



function run(responseConsultaUsuario) {


var json = JSON.parse(responseConsultaUsuario).result;



return json;


}



Então obtenho o seguinte resultado:


[

   {

      "number":"INC0010141",

      "priority":"2",

      "business_duration":"1970-01-01 05:05:33",

      "short_description":"shipments issue",

   },

   {

      "number":"INC0010155",

      "priority":"2",

      "business_duration":"1970-01-01 00:00:00",

      "short_description":"shipments issue"

   },

   {

      "number":"INC0010008",

      "priority":"5",

      "sys_domain_path":"/",

      "business_duration":"1970-01-06 09:39:35",

      "short_description":"estou com problemas"

   }

]


Eu gostaria de extrair apenas number e priority de cada parte do JSON, e exibir para o usuário no Whatsapp. Mas não obtive sucesso.


Tentei fazer um loop for, mas parece que o builder não aceita o comando console.log.


Alguma dica de como eu poderia apresentar esses dados ao usuário?

O conteúdo deste tópico foi útil para você?

11 comentários

igor_junio_dos_santo

Ola @ralsouza fiz esse Script que acho que vai da certo para você:


function run(responseConsultaUsuario) {

  var newTxt = JSON.parse(responseConsultaUsuario);

  var consultas = "";

  for(i = 0; i < newTxt.length; i++){

    consultas += "Consulta " + (i+1) + " nº " + newTxt[i].number + ", Prioridade: " + newTxt[i].priority + "! \n"

  }

  return consultas;

}


O resultado dele imprime assim:



image



ralsouza
  • Autor
  • Inspiring
  • 8 comentários
  • 8 de outubro de 2019

Olá @igor_junio_dos_santo, baita solução!


Estou testando o script no builder, mas o bot não responde.


Será que existe alguma restrição com o uso de loops?


igor_junio_dos_santo

Cara não sei, eu me deparei uma vez com um problema de um rapaz aqui no grupo, e também não conseguia usar o loop, em node funcionava, no playcode.io funcionava, mas no builder não!


Mas deu certo? Não entendi! rs


Bruno
  • Specialist
  • 610 comentários
  • 8 de outubro de 2019

@ralsouza qual o tamanho que esse length retorna?


Por uma questão de segurança, o BLiP faz apenas 1000 operações por script. Levando em consideração que em um for desses são feitas umas 3 ou 4 operações, daria no máximo umas 200 e poucas iterações.


igor_junio_dos_santo

@ralsouza outro script seria esse:


function run(responseConsultaUsuario) {

  var newTxt = JSON.parse(responseConsultaUsuario);

  var consultas = "";



  for([i,txt]  of newTxt.entries()){

    consultas += "Consulta " + (i+1) + " nº " + txt.number + ", Prioridade: " + txt.priority + "! \n"

  }

  return consultas;

}

ralsouza
  • Autor
  • Inspiring
  • 8 comentários
  • 14 de outubro de 2019

Olá @igor_junio_dos_santo, obrigado pelo apoio.


Hoje tentei o script abaixo, mas quando adiciono o operador += o erro abaixo é gerado.


erro_blip


ralsouza
  • Autor
  • Inspiring
  • 8 comentários
  • 14 de outubro de 2019

Oi @BrunoC, estou limitando para apenas 10 loops no JSON.


ralsouza
  • Autor
  • Inspiring
  • 8 comentários
  • 14 de outubro de 2019

@igor_junio_dos_santo e @BrunoC, agora funcionou… Vai entender rs


erro_blip


@ralsouza muito bom o script.

Como você apresenta as informações deste parse para o usuário?


ralsouza
  • Autor
  • Inspiring
  • 8 comentários
  • 18 de outubro de 2019

Olá @UILIAM_MARCOS_MENON, obrigado!


O script final ficou assim:


function run(responseConsultaUsuario) {



  var json = JSON.parse(responseConsultaUsuario)



  var result = '';



  for(i = 0; i < 10; i++) {



    result += 'Ticket: ' + json.result[i]['number'] + '\n Descrição Resumida: ' + json.result[i]['short_description'] + '\n Aberto em: ' + json.result[i]['sys_updated_on'] + '\n'+'\n';

  }



  return result;



}


Como os dados são incrementados e existe a quebra de linha, a saída para o usuário fica assim:


Ticket: 1111111

Descrição Resumida: Está em atendimento

Aberto em: 2019-09-11



Ticket: 222222

Descrição Resumida: Está parado

Aberto em: 2019-09-11



Ticket: 333333333

Descrição Resumida: Está em análise

Aberto em: 2019-09-11



... Até os 10 mais recentes...


Quando o usuário solicita que sejam apresentados os tickets que estão abertos em seu nome, o bot responde esta estrutura:



Muito bom mesmo!!! Obrigado pelo retorno!!


Cookie Policy

We use cookies to enhance and personalize your experience. If you accept you agree to our full cookie policy. Learn more about our cookies.

 
Definições de cookies