Respondido

Obter retorno de um GET


Bom dia!!!

Tudo bem com vocês?


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


Dados Retorno: [{“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.numero[0]}}


{{ocorrencia@numero}}

{{ocorrencia@numero[0]}}


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

Alguém poderia me ajudar?


Grata


Eliane

icon

Melhor resposta por GabrielPetrone 27 September 2022, 16:17

Veja o original

9 comentários

Reputação 7
Crachá +1

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 ocorrencia[0].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

Reputação 7
Crachá +1

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 é: ${ocorrencia[0].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 = resp[0].numero;
obj.operador1 = resp[0].operador_responsavel;
obj.nome1 = resp[0].nome_solicitacao_original;
obj.prob1 = resp[0].prob_id_original;

obj.numero2 = resp[1].numero;
obj.operador2 = resp[1].operador_responsavel;
obj.nome2 = resp[1].nome_solicitacao_original;
obj.prob2 = resp[1].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=ocorrencia[i].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

Reputação 7
Crachá +1

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: obj[${numero}] = resp[i].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}`] = resp[i].numero;
obj[`${operador}`] = resp[i].operador_responsavel;
obj[`${solicitacao}`] = resp[i].nome_solicitacao_original;
obj[`${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

Reputação 7
Crachá +1

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!

Reputação 7
Crachá +1

Esse garoto é fera demais!!

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

Comente