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]}}

{{[email protected]}}
{{[email protected][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

2 curtidas

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.

1 curtida

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

2 curtidas

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: {{[email protected]}}, 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 {{[email protected]}} 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 {{[email protected]}} para exibir apenas o valor 119180.

:bulb: 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.

2 curtidas

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: {{[email protected]}} não consigo visualizar o valor…

Desde já agradeço

Eliane

2 curtidas

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.

2 curtidas

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

3 curtidas

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!

2 curtidas

Esse garoto é fera demais!!

3 curtidas

@wilkor.almeida vocês são show! :wave: :wave:

2 curtidas