Skip to main content

Galera, estou consumindo uma API e tenho no retorno um array, preciso percorrer esse array e apresentar em forma de menu para o meu cliente. 

 

Tentei buscar em alguns tópicos a solução para a minha dúvida, por exemplo o tópico abaixo é um deles, entretanto não obtive sucesso. 

 

O Retorno da minha API é este:

{

    "ID": 150931809,

    "NOME": "VICTOR FELIPE DOLCE CARDOSO",

    "CONTRATOS": ,

        {

            "ID_CREDOR": 34578003,

            "ID_CONTRATO": 124794373,

            "NUMERO": "200"

        },

        {

            "ID_CREDOR": 34578003,

            "ID_CONTRATO": 109461887,

            "NUMERO": "20230106"

        }

    ]}

Eu consegui criar um script e apresentar apenas os contratos  com o script abaixo

function run(result) {

result = JSON.parse(result);

result = result.CONTRATOS;

contratos= '';

cont = 0;

result.forEach(function(contrato) {

cont ++;

contratos+= 'CONTRATO ' + cont + ': ' + contrato.NUMERO + "\n";

})

return contratos;

}

Para este script eu obtive o seguinte retorno:

CONTRATO 1: 200
CONTRATO 2: 20230106

 

Entretanto meu objetivo é apresentar ao cliente o‘numero’ presente no array de ‘contratos’, e de acordo com o selecionado pelo cliente, obter o ID_CONTRATO seguindo os fluxos posteriores. 

 

Pensando em um cenário web, criaria um laco de repeticao sobre o array de contratos e dinamicamente criaria botões onde cada um deles iria representar um contrato, atribuindo NUMERO ao texto e ID_CONTRATO ao id do botão. (Resumidamente).

Como seria isso utilizando o builder? Qual seria a melhor forma?

 

 

Olá @Victor Cardoso tudo bem ? 

 

O seu laço de repetição está correto, agora acredito que o cenário seria inserir isso em um objeto para trazer como menu para que o usuário possa selecionar conforme abaixo : 

Referência :https://help.blip.ai/hc/pt-br/articles/4474418203287-Criando-mensagens-interativas-no-WhatsApp 

 

Ai para a incluir no conteúdo dinâmico você vai ter que trocar o seu objeto para ele não trazer a fase e sim o array apenas com o numero do contrato : 

function run(result) {

result = JSON.parse(result);

result = result.CONTRATOS;

contratos= /];

cont = 0;

result.forEach(function(contrato) {

contratosrcont]=  contrato.NUMERO;
cont ++;
})

return contratos;

}

ai no retorno do script você vai colocar a variável contratos e para o conteúdo dinâmico você tem que criar um script que vai contar essas posições e montar dinamicamente. No bloco o conteúdo dinâmico vai ser o retorno desse novo script.

 

 


Opa @Rafael_Figueiredo, bom demais e contigo?!

Cara seguindo sua dica, consegui chegar em um resultado aproximado no que preciso, porque aproximado? Porque agora estou com dificuldade em recuperar o “id” (value) que foi selecionado, para seguir com as próximas requisições.

Fiz da seguinte forma, como sugerido, 
1 - Criei o script abaixo onde percorro meu array e atribuo a minha ‘menulista’ o numero e id do meu contrato.

function run(result) {

result = JSON.parse(result);
result = result.CONTRATOS;
var menulista = m];

result.forEach(function (item) {

        menulista.push({

            "value": item.ID_CONTRATO,

            "text": item.NUMERO

        })

    });

    return {

        "text": "Selecione o Contrato",

        "options":

            menulista

    };

}

 

2 - A Saída do meu script é a variável {{menulista}};

3- Adicionei um conteúdo dinâmico onde o mime type do conteúdo é um app/select json que recebe a minha {{menulista}}

 

4 - Aqui foi aonde não consegui seguir, preciso capturar o ID da seleção enviada pelo meu usuario ao selecionar o item da lista.
Fui atrás e encontrei este conteúdo (https://help.blip.ai/hc/pt-br/articles/4474417686039-Vari%C3%A1veis-do-Builder) que fala sobre as variaveis, mas não consegui fazer com que a saída do ‘meu bloco’ fosse o id do menu selecionado, o máximo que consegui chegar foi capturar o numero do contrato através do input.content.

  • Estou tentando ± assim:
    Em ações de saída a condição para definir variável é que tenha uma resposta do usuário e ai fui tentando algo próximo a isso:

 


@Victor Cardoso, bom dia!  tudo bem? De repente você pode criar outro script que seria um “auxiliar” que você vai guardar chave e valor e{“value”:”200”, contrato:”124794373”}], dai quando você clicar ou digitar o contrato, você pode fazer um filter nessa variável auxiliar e capturar a informação que você precisa para a requisição. pode ser uma abordagem.


Comente