[Resolvido] Iterar JSON para retornar mais de uma informação

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?

1 Curtida

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

1 Curtida

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?

1 Curtida

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

@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.

2 Curtidas

@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;
}

Olá @igor_junio_dos_santo, obrigado pelo apoio.

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

erro_blip

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

2 Curtidas

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

erro_blip

2 Curtidas

@ralsouza muito bom o script.
Como você apresenta as informações deste parse para o usuário?

2 Curtidas

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:

2 Curtidas

Muito bom mesmo!!! Obrigado pelo retorno!!

1 Curtida