Skip to main content

Bom dia!!!


Tudo bem com vocês?



Estou fazendo um GET em uma requisição HTTP e obtenho o seguinte retorno:



Dados Retorno: o{“numero”:119180,“operador_responsavel”:"",“nome_solicitacao_original”:“RENEGOCIA\u00c7\u00c3O”,“prob_id_original”:61}


,{“numero”:120121,“operador_responsavel”:"",“nome_solicitacao_original”:“RENEGOCIA\u00c7\u00c3O”,“prob_id_original”:61}


]



Utilizo um script JSON para fazer um “parse”


json-parse.json (583,Bytes)



Preciso agora acessar as posições do array:





Já tentei:



{{ocorrencia.numero}}


{{ocorrencia.numeroe0]}}



{{ocorrencia@numero}}


{{ocorrencia@numeroe0]}}



Preciso obter o número e utilizá-lo em um outro script para fazer uma comparação.


Alguém poderia me ajudar?



Grata



Eliane

Hey Eliane @BRNPAR , tudo bom?


Para acessar os dados do array você vai precisar passar outro script usando a var ocorrencia como Variáveis de Entrada, por exemplo:



function run(ocorrencia) {

ocorrencia = JSON.parse(ocorrencia);

return ocorrenciai0].numero;

}



Dessa forma irá retornar o número da ocorrência na posição 0 do array.



Espero ter ajudado. Qualquer dúvida retorne aqui.


Oi Gabriel, tudo bem graças a Deus



Entendi. No entanto o que preciso é:




No BLIP é possível acessar essas posições?


Acho que preciso entender um pouco o conceito do acesso do BLIP ás informações de um array em um JSON.



Estou bem confusa…


Pode tentar me ajudar por favor?



Grata



Eliane


Legal, é super possível fazer como no exemplo que eu passei acima.



Existem duas formas de acessar as informações da sua Requisição HTTP por meio do Blip:





Opção 1



Quando o retorno não possuí um array, você pode acessar os dados diretamente pelo conteúdo usando a sintaxe: {{varDaResposta@chaveDoPayload}}, por exemplo:


Se a sua variável de resposta da Requisição HTTP for response, e o payload retornado da sua requisição for:



{

"numero":119180,

"operador_responsavel":"",

"nome_solicitacao_original":"RENEGOCIAO",

"prob_id_original":61

}



Você pode usar {{response@numero}} em algum conteúdo do seu bloco que será apresentado o valor 119180.





Opção 2



Se o seu retorno possui um array na resposta, você terá que Executar um Script para fazer o tratamento dessa resposta, por exemplo:


Se a sua variável de resposta da Requisição HTTP for response, e o payload retornado da sua requisição for:



<

{

"numero":119180,

"operador_responsavel":"",

"nome_solicitacao_original":"RENEGOCIAO",

"prob_id_original":61

},

{

"numero":120121,

"operador_responsavel":"",

"nome_solicitacao_original":"RENEGOC3O",

"prob_id_original":61

}

]



Você precisará Executar um Script após a ação de Requisição HTTP, utilizando a variável response como variável de entrada para execução do script. No script você precisará utilizar linguagem Javascript para criar o retorno que você deseja, podendo ser um texto completo ou até mesmo um outro objeto JSON que possa ser acessado conforme a Opção 1. Por exemplo:





Retornando um Texto



Você pode usar o script:



function run(ocorrencia) {

ocorrencia = JSON.parse(ocorrencia);

return `O número da sua ocorrência é: ${ocorrenciau0].numero}`;

}



Para retornar:





O número da sua ocorrência é: 119180







Retornando um Objeto



Você pode usar o script:



function run(resp) {

resp = JSON.parse(resp);

var obj = {};

obj.numero1 = respb0].numero;

obj.operador1 = resp10].operador_responsavel;

obj.nome1 = resp]0].nome_solicitacao_original;

obj.prob1 = respe0].prob_id_original;



obj.numero2 = respr1].numero;

obj.operador2 = resp21].operador_responsavel;

obj.nome2 = resp]1].nome_solicitacao_original;

obj.prob2 = respe1].prob_id_original;



return obj;

}



Para retornar:



{

"numero1":119180,

"operador1":"",

"nome1":"RENEGOCIAO",

"prob1":61,

"numero2":120121,

"operador2":"",

"nome2":"RENEGOC3O",

"prob2":61

}



E dessa forma você pode usar a variável de retorno do seu script nos conteúdos, simplesmente colocando {{responseTratada@numero1}} para exibir apenas o valor 119180.



💡 Este exemplo da Opção 2 foi para exemplificar o uso, nos casos com array provavelmente será melhor usar um laço de repetição e/ou outras técnicas para tratar o retorno.






Uma opção também é você conseguir que o retorno da sua API venha em um formato diferente, sem o uso de array, pra facilitar a utilização do retorno sem a necessidade de executar um script, caso isso for um problema.



Espero ter ajudado, fique à vontade para caso tenha mais dúvidas.


Bom dia !!!


@GabrielPetrone , tudo bem ?



Show a sua explicação, perfeita. Muito obrigada por sua ajuda.



Desculpe mas ainda acredito que estou fazendo de alguma forma que o BLIP não entende …



Vou colocar aqui, como está e qual a minha dificuldade agora então:







Bloco de Citação


function run(ocorrencia) {


ocorrencia = JSON.parse(ocorrencia);





var numero=" “;


var operador=” “;


var solicitação=” “;


var cod=” ";


var obj={};



size=ocorrencia.lenght

for (var i = 0; i < size; i++)

{

numero= "numero" + i;

operador= "operador" + i;

solicitacao= "solicitacao" + i;

cod = "cod" + i;



obj.numero=ocorrencia i].numero;

obj.operador=ocorrenciaoi].operador_responsavel;

obj.solicitacao=ocorrencia.i].nome_solicitacao_original;

obj.cod=ocorrencia/i].prob_id_original;

}



//return ‘Ocorrência: ${obj.numero0}’;


return obj;


}





Usando: {{OC@numero0}} não consigo visualizar o valor…



Desde já agradeço



Eliane


Hey Eliane, bom dia!



Encontrei alguns pontos que precisavam ser ajustados no seu código, mas consegui ter sucesso e vou te dar três dicas do que eu fiz pra descobrir:





1 - O Debug do Blip é seu aliado



Quando a gente precisa executar script e validar as requisições, o debug do Blip vai ser fundamental para evoluirmos. Aqui tem um tutorial de como usar o Debug e você também pode usar a extensão Beholder: Blip Debugger caso esteja usando estrutura de Roteadores.





2 - Use o VSCode para criar seus scripts



Primeiramente eu rodei seu código em um bot e pelo debug eu percebi que não estava retornando nada no script. Mas para descobrir o que poderia ser, eu precisaria modificar o script e usando o blip + debug pode ser um processo moroso. Por isso eu passei todo o código pro VSCode.





3 - Na dúvida, corre pro Stackoverflow/Google/Blip Forum



Por último e não menos importante, o search será sempre seu companheiro fiel pros momentos de dificuldade, não deixe de usá-los com afinco!





Solução



O primeiro problema está novamente na estrutura do seu retorno. Como o payload já começa com o array ( ]), a linha size=ocorrencia.length retornava undefined no VScode. Fui pesquisar e encontrei uma solução usando o método Object.keys, alterando essa linha para: size = Object.keys(resp).length.



Com isso resolvido, agora era a vez de ajustar o seu obj dentro do for. Você mandou bem no uso das variáveis para serem utilizados como chaves do objeto, porém quando você usou apenas obj.numero por exemplo, o for passou duas vezes e preencheu a mesma chave. Para resolver isso, eu fiz uma referência à variável numero da seguinte forma: objd${numero}] = respji].numero;.



Por fim, o código ficou o seguinte:



function run (ocorrencia) {

var resp = JSON.parse(ocorrencia);

var numero = "";

var operador = "";

var solicitacao = "";

var cod = "";

var obj = {};



size = Object.keys(resp).length;



for (var i = 0; i < size; i++) {

numero = "numero" + i;

operador = "operador" + i;

solicitacao = "solicitacao" + i;

cod = "cod" + i;



obj<`${numero}`] = respbi].numero;

objs`${operador}`] = resp i].operador_responsavel;

obj_`${solicitacao}`] = resp i].nome_solicitacao_original;

objc`${cod}`] = resp/i].prob_id_original;

}



return obj;

}



O resultado no chatbot pelo Debugger foi:




O código no VSCode estava assim:







Veja se consegue replicar agora e vamos conversando caso tenha mais dúvidas! Conte comigo.



Abraços.


Boa tarde @GabrielPetrone , tudo bem?



Não sei quantas curtidas preciso dar para uma aula dessas.


As informações foram precisas e perfeitas.



Eu refiz os códigos e testei conforme indiciou pelo VSCode e após inseri no Blip obtendo o resultado.


Sem contar o leque de possibilidades que este conhecimento me forneceu.



As três dicas são efetivas e com certeza vou segui-las com afinco.



Muito obrigada por tudo


Deus continue te abençoando sempre e ricamente.



Abraço



Eliane


Hey Eliane /@BRNPAR !



Fico feliz em ter ajudado a compreender melhor o potencial da plataforma!


Conte conosco para poder ajudar, na dúvida é só me marcar!



Que Deus também continue te abençoando sempre e ricamente.


Abraços!


Esse garoto é fera demais!!


@wilkor.almeida vocês são show! 👋


Comente