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?


11 comentários

Reputação 5

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


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?

Reputação 5

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

Reputação 7

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

Reputação 5

@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 @BrunoC, estou limitando para apenas 10 loops no JSON.

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


erro_blip

Reputação 2

@ralsouza muito bom o script.

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

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:

Reputação 2

Muito bom mesmo!!! Obrigado pelo retorno!!

Comente