Retorno Json em API

Bom dia, estou com dificuldade de encontrar uma forma dentro do Weni para tratar o retorno de um fluxo que não é um array e quando traz o resultado, ele não vem com campo inicial fixo para que eu possa consultar ele.

A API em questão é a consulta de reservas do C.V (Construtor de vendas - https://integracao.cvcrm.com.br/api/cvio/reserva?documento=1234&situacao=3.

No retorno dessa API ele irá trazer todas as reservas vinculadas a esse cliente no formato:
{
“ID_Reserva” { dados da reserva},
“ID_Reserva” { dados da reserva},
“ID_Reserva” { dados da reserva}
}

E esse ID_Reserva sempre muda, de acordo com os dados consultados. E como nesse json não volta nada com array. Como eu faço para percorrer ele e pegar esses ID_Reserva Para usa-los em uma outra consulta?

Eu tentei a consulta por posições do array: @webhook.0.situacao, mas ele não traz nenhum resultado. Porém quando eu consulto @webhook.151.situacao, ele volta com o resultado e esse 151 é o ID_Reserva do cliente.

Olá, @Tecnologia_Bambui nesse caso será necessário converter essa API para um formato de json adequado. Você pode fazer isso via codigo, hospedando uma nova api que modela essa primeira API.

Oie @Tecnologia_Bambui

Existe uma expressão que talvez você consiga utilizar:

@(keys(webhook))

Isso irá te retornar uma lista/array de quais são esses valores

image

Creio que assim você consegue percorrer o json.

Oi, tudo bom?

Fiz um teste aqui mas ao que parece essa expressão Keys não existe no weni.

Olha a imagem que fiz de teste, o webhook tem o retorno, mas só colocando o @(keys(webhook)) só deu o erro mesmo.

1 curtida

Oie @Tecnologia_Bambui !

Adicionei aqui um exemplo de como resolvi esse problema: Github - Thomas Pinheiro

No fluxo deixei como exemplo uma chamada para a API ViaCep, mas irá funcionar com o seu também, basta substituir com seu webhook.

Expressao principal: @(trim(trim(replace(foreach_value(webhook, (x) => replace(x, x, "")), ": ", ""), "{"), "}"))

Como separar e pegar elemento 0: @(split(trim(trim(replace(foreach_value(webhook, (x) => replace(x, x, "")), ": ", ""), "{"), "}"), ", ").0)

Espero que lhe ajude!

2 curtidas

Boa tarde,

Assim funcionou, muito obrigado pela ajuda.

1 curtida