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 ocorrenciai0].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
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 é: ${ocorrenciau0].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 = respb0].numero;
obj.operador1 = resp10].operador_responsavel;
obj.nome1 = resp]0].nome_solicitacao_original;
obj.prob1 = respe0].prob_id_original;
obj.numero2 = respr1].numero;
obj.operador2 = resp21].operador_responsavel;
obj.nome2 = resp]1].nome_solicitacao_original;
obj.prob2 = respe1].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=ocorrenciaoi].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
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: objd
${numero}] = respji].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}`] = respbi].numero;
objs`${operador}`] = resp i].operador_responsavel;
obj_`${solicitacao}`] = resp
i].nome_solicitacao_original;
objc`${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
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!
Esse garoto é fera demais!!