Skip to main content
Respondido

Obter retorno de um GET

  • September 26, 2022
  • 9 comentários
  • 240 Visualizações

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

Melhor resposta por GabrielPetrone

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.

Este tópico foi fechado para respostas.

9 comentários

GabrielPetrone
Blipper
Forum|alt.badge.img+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.


  • Autor
  • Inspiring
  • September 26, 2022

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


GabrielPetrone
Blipper
Forum|alt.badge.img+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.


  • Autor
  • Inspiring
  • September 27, 2022

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


GabrielPetrone
Blipper
Forum|alt.badge.img+1
  • Blipper
  • Resposta
  • September 27, 2022

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.


  • Autor
  • Inspiring
  • September 28, 2022

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


GabrielPetrone
Blipper
Forum|alt.badge.img+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!


wilkor.almeida
Forum|alt.badge.img+1

Esse garoto é fera demais!!


  • Autor
  • Inspiring
  • September 28, 2022

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