Retirar informações da API json


Olá gente! Eu sou totalmente leigo em programação e gostaria de um auxilio…

Já pesquisei aqui no forum e até agora não consegui resolver meu problema…

A questão é a seguinte… Tenho uma API que me trás os valores de acordo com o código do cliente:


{
"get_unpaid_document":
{
"customer_id": 448,
"account_list": [1,2,3]
}
}

Eu já consegui fazer o blip preencher esse código do cliente fazendo da seguinte forma:

{
"get_unpaid_document":
{
"customer_id": {{codcliente}},
"account_list": [1,2,3]
}
}

porém não estou conseguindo trabalhar o resultado dessa pesquisa que me retorna os seguintes valores:
{
"status": 1,
"error_code": "",
"error_description": "",
"result": [
{
"id": 175221,
"account_number": 3,
"due_date": "2020-11-15",
"document_number": 80072,
"bank_number": 2092849,
"historic": "Documento a Receber",
"comments": "",
"source": "Billing",
"bank": 341,
"value_init": 49.9,
"value_interest": 0.16,
"value_fine": 1,
"value_discount": 0,
"value_up": 51.06,
"address": {
"street": "AVENIDA VAUTIER",
"number": 248,
"complement": "BOX 407 - ALA VERMELHO",
"neighborhood": "CANINDE",
"city": "SAO PAULO",
"state": "SP",
"district": "",
"zipcode": "03032000",
"country": "Brasil"
}
{
"id": 175222,
"account_number": 2,
"due_date": "2020-11-18",
"document_number": 80073,
"bank_number": 2092850,
"historic": "Documento a Receber",
"comments": "",
"source": "Billing",
"bank": 341,
"value_init": 49.9,
"value_interest": 0.16,
"value_fine": 1,
"value_discount": 0,
"value_up": 51.06,
"address": {
"street": "AVENIDA VAUTIER",
"number": 248,
"complement": "BOX 407 - ALA VERMELHO",
"neighborhood": "CANINDE",
"city": "SAO PAULO",
"state": "SP",
"district": "",
"zipcode": "03032000",
"country": "Brasil"
}
}
]
}

Eu preciso pegar tudo que todo valor do “ID” “due_date” e o objeto “address” para jogar em outro script… Será que alguem poderia me auxiliar? Já tentei o response@result já tentei como conteúdo dinâmico e nada…

Estou utilizando o builder…


Desde já agradeço a todos!


18 comentários

Reputação 7

Oi @Rogerio_Domingues_Li! Tudo bem?


Antes de qualquer coisa, seja muito bem-vindo ao nosso Fórum. Já aproveito para te convidar a conhecer o time Take Blip que está sempre disposto a ajudar: Comunidade Blipper! 🥳 Ah! Vai ser ótimo se quiser dividir conosco um pouquinho de quem é você por lá também, como alguns blippers já fizeram. ❤️


Sobre sua dúvida, o @BrunoC pode te ajudar. Ele é nosso Desenvolvedor e manja demaisss do Blip, ok?

Fala @Rogerio_Domingues_Li Tudo bem?


Cara, vamos ver se consigo te ajudar.


Vais precisar pegar o retorno do teu REQUISICAO HTTP e jogar em uma variável.






  1. Depois, você vai pegar essa mesma variável que definiu como retorno do HTTP e usar ela na Execução e Script.

    Captura de Tela 2020-11-24 às 11.57.31

    Depois de inserir a variável, basta clicar em SCRIPT e vai aparecer essa tela abaixo



    Insira a variável que deseja, pode ser qualquer nome



function run(inputVariable1, inputVariable2) {
return "Hello BLiP";
}


Com isso, você vai conseguir percorrer todo o objeto e trabalhar a informação que deseja. Para conseguir extrair os 3 campos que queres e montar um outro objeto, vamos lá.



function run(objeto) {
var json = JSON.parse(objeto);
const selecionados = json.result.map(result => {
var id = result.id;
var due_date = result.due_date;
var address = result.address;
return {id, due_date, address};
});
return JSON.stringify(selecionados);
}


O retorno desse script será algo assim


[
{
id: 175221,
due_date: '2020-11-15',
address: {
street: 'AVENIDA VAUTIER',
number: 248,
complement: 'BOX 407 - ALA VERMELHO',
neighborhood: 'CANINDE',
city: 'SAO PAULO',
state: 'SP',
district: '',
zipcode: '03032000',
country: 'Brasil'
}
},
{
id: 175222,
due_date: '2020-11-18',
address: {
street: 'AVENIDA VAUTIER',
number: 248,
complement: 'BOX 407 - ALA VERMELHO',
neighborhood: 'CANINDE',
city: 'SAO PAULO',
state: 'SP',
district: '',
zipcode: '03032000',
country: 'Brasil'
}
}
]

Na etapa do EXECUTAR SCRIPT, você informa uma variável de saída… com base nela, basta trabalhar o que deseja…

Lembrando que o retorno será um array (lista) de objetos…

Rodrigo muitíssimo obrigado pela ajuda! Mas eu não consegui executar as etapas e creio também que coloquei ou deixei de colocar a informação em algum lugar… Sou analfabeto e órfão de pai e mãe neste quesito… e minha lógica não ta funcionando rsrs…

Vamos lá eu criei umA REQUISIÇÃO HTTP e configurei da seguinte forma:



e com o seguinte corpo:



a partir daí eu me perdi todo… desculpa pela ignorância no assunto… inclusive eu até entrei no curso online da plataforma pra aprender mais kkkk Será que você conseguiria me explicar mais detalhadamente? Eu estou confundindo em quais ou quantos blocos eu tenho que colocar para executar essa ação, por exemplo:


function run(inputVariable1, inputVariable2) {

return “Hello BLiP”;

}


fica no mesmo scripit junto com esse:


function run(objeto) {

var json = JSON.parse(objeto);

const selecionados = json.result.map(result => {

var id = result.id;

var due_date = result.due_date;

var address = result.address;

return {id, due_date, address};

});

return JSON.stringify(selecionados);

}


Perdão pela burrice… rsrs

MUITO Obrigado pela indicação!

Bom dia amigo Eu coloquei assim em um dos scripts… E desculpa a pergunta o pq ter que criar outro script contendo


function run(inputVariable1, inputVariable2) {

return “Hello BLiP”;

}


E o outro ficou Desta forma:


      function run(apicodigocliente) {

var json = JSON.parse(apicodigocliente);

const selecionado = json.result.map(result => {

var id = result.id;

var due_date = result.due_date;

var address = result.address;

return {id, due_date, address};

});

return JSON.stringify(selecionado);

}

Não precisa. Apenas 1 resolve sua vida. Coloquei como exemplo de como é criado e como deverá ficar.

Bom dia @Rodrigo_Valentim infelizmente não consegui chegar a totalidade do resultado rsrs…

Ainda não consegui extrair somente os itens mesmo ele já me mostrando os itens não consigo trazer ele para o chat do blip como mensagem… já tentei o {{responsescrip@id}}, tentei com este script:


  function run(inputVariable1, inputVariable2) {
return responsescript.id; //Return value will be saved as "Return value variable" field name
}
function run(responsescript) {
response = JSON.parse(responsescript)[0].id;
return response.id;
}

e nada…



Não vais precisar destas duas functions… apenas uma delas.


function run(responsescript) {
var response = JSON.parse(responsescript)[0].id;
return response.id;
}

Certo @Rodrigo_Valentim mas como eu chamo ele para aparecer no bot? via responsecript@id não vai…

@Rodrigo_Valentim olha isso…






Opa Rogerio, desculpa a ausencia… meio corrido aqui


Vamos lá


depois de voce executar o seu script


function run(responsescript) {
var response = JSON.parse(responsescript)[0].id;
return response.id;
}

Voce vai, no caso, alimentar a variável de retorno que tem na execução do script (logo abaixo tem o nome da variável marcado em vermelho)



Como o retorno da sua variável é um ID, basta você no seu fluxo inserir {{NomeDaVariavel}} e será exibido.

@Rodrigo_Valentim Bom dia Dr! Obrigado pelo auxílio, ontem a noite eu quebrei a cabeça e consegui desempacar desta parte kkkk agora travei na outra que é o mesmo procedimento kkkkk mas aos poucos estou conseguindo! Se você puder ver o que estou fazendo de errado ficaria extremamente grato!


Após todo este procedimento eu consegui retirar o “ID” due_date “address” e ainda consegui acessar cada item dentro do “address” utilizando o @street por exemplo! rsrs


Agora eu consegui pegar o resultado do “id” e inserir automaticamente dentro da minha API. E ela me volta o seguinte resultado:


{"status":1,"error_code":0,"error_description":"","result":{"banking_billet_link":"https:\/\/central.h2g.com.br\/routerbox\/tmp\/boleto_xxxxxxx.pdf","banking_billet_available":9999}}
200

Percebi que diferente da outra está já me retorna em objeto pois não se inicia com “[” e sim diretamente com “{” porém eu já tentei executar um parse sem ser o stringfy e não consegui resultado… Outra questão que le pelo fórum é que o parse da problema quando tem “aspas duplas” no valor… Isso procede? rsrs

O script que tentei foi o mesmo que me informou da primeira vez rsrs


Explicando a diferença do [] e {}


[] = array que contem N posições {} dentro

Para pegar o conteúdo deste array, você precisa usar o indice


variavel[0]@street por exemplo


Arrays


No link acima vai te mostrar como trabalhar com Array


Se não te ajudei, tenta dar um exemplo mais pratico do script que aí a gente vê o que se faz.

@Rodrigo_Valentim ele já está me retornando o seguinte:


{
"status": 1,
"error_code": 0,
"error_description": "",
"result": {
"banking_billet_link": "https://central.h2g.com.br/routerbox/tmp/boleto_xxxxxxx.pdf",
"banking_billet_available": 9999
}
}

Porém dessa vez eu só preciso do “banking_billet_link”:

Tentei utilizando o script que me mandou:


    function run(responsescript) {
var response = JSON.parse(responsescript)[0].id;
return response.id;
}

Mas ele me da erro…

Está dando erro pq você está fazendo referencia a um array e seu JSON é um objeto, entendeu?


E outro ponto… não existe a chave ID no seu JSON…


Vamos lá!



Você precisa do seguinte


function run(responsescript) {
var response = JSON.parse(responsescript);
var billet = [email protected]_billet_link;
return billet;
}

Explicando o código acima…

Joga o conteúdo do RESPONSESCRIPT como objeto json no response

crio a variavel billet para deixar de fácil entendimento


o response, vai ter teu JSON

{"chave": "valor...", "result": {"var1": "valor1", "var2":"valor2"}

com a função, vou até o ponto result e dentro do result, faço referencia ao billet_link

blz?


Acho que resolve sua vida… Se não resolver, posta aqui que vamos com calma resolvendo o que precisa …

@Rodrigo_Valentim Obrigado pelo breve retorno! Infelizmente não conseguir executar desta forma… Porém eu consegui consultar utilizando o Endereço {{localdocumento@street}} Número: {{localdocumento@number}} Loja ou sala: {{localdocumento@complement}} Data do boleto: {{datadocumento}} e me retornou as informações…

Agora estou voltando ao começo para conseguir pegar as outras ID em caso de clientes que possuam mais de 1 boleto em aberto… Atualmente ele só pega a primeira e ignora as demais…

Reputação 7

@Rogerio_Domingues_Li feliz demais pelo @Rodrigo_Valentim ter conseguido te ajudar! Esse é o significado de Comunidade que queremos construir.


Mesmo não conhecendo sobre programação, não precisa ficar incomodado, tem espaço pra você sim na nossa Comunidade ❤️ Inclusive, o Blip é um produto feito especialmente para todo mundo (técnicos ou não)!


Qualquer outra dificuldade ou questionamento, vem pro Fórum que a gente te acolhe. 🤗

Shooow… Qualquer coisa manda as ordens!!


Abraço!

Comente