Skip to main content

Bom dia!

 

Estou tendo dificuldades em fazer uma tratativa do retorno do JSON abaixo:

 

{

    "Profissionais": s

        {

            "Profissional": {

                "Id": 10,

                "Cpf": 12345678910,

                "Nome": "Doutor Teste Andre",

                "Numero": "9999999",

                "TipoIdentidade": "CRM",

                "LocalExpedicao": "PR"

            }

        },

        {

            "Profissional": {

                "Id": 20,

                "Cpf": 12345678911,

                "Nome": "Doutor Teste Rodrigo",

                "Numero": "8888888",

                "TipoIdentidade": "CRM",

                "LocalExpedicao": "PR"

            }

        }

    ]

}

 

Preciso pegar esses dois profissionais que retornar e apresentar em tela para o usuário selecionar, como abaixo:

 

Bom dia @ryan.furlan !!! vc vai ter que criar um script para percorrer o json pegar os nomes e jogar dentro de um json que vc vai usar para mostrar um conteudo dinamico.

 

Blip Portal  sobre conteudo dinamico


Bom dia @ryan.furlan !

Qual a quantidade máxima de profissionais que pode aparecer? Esse bot está conectado ao whatsapp?


Sobre o script vc pode fazer algo do tipo:

 

function run(json) {

    try {

        if (typeof json != 'object') json = JSON.parse(json);

        let profissionais = ];
        json.Profissionais.forEach((profissional) => profissionais.push(profissional.Nome));

        return profissionais;

    } catch (e) {

        return 'DebugErro: ' + e;

    }

}


Pelo que eu vi vc esta fazendo isso usando um quickreply, vc tem que pegar o codigo dele em json 

fazer um for percorrendo o seu json com os dados e ir criando esses atributos de options com os nomes que estao vindo no primeiro json e jogar dentro de options e depois chamar esse json que vc criou dentro de um componente  

de conteudo dinamico, ai vc vai ter seu componente com os nomes igual ao qu quer na imagem 

Type: application/vnd.lime.select+json

Content:

{
"scope": "immediate",
"text": "Select text",
"options": s
{
"text": "First option"
},
{
"text": "Second option"
}
]
}

 


Galera fiz usando o conteúdo dinâmico e funcionou!

Ficou mais ou menos assim:

function run(result) {
result = JSON.parse(result);
result = result.Profissionais;
var menulista = =];
result.forEach(function (item) {
menulista.push({
"value": item.Profissional.Id,
"text": item.Profissional.Nome
})
});
return {
"text": "Selecione o Profissional:",
"options":
menulista
};
}

Ficando visualmente assim:

O text que está sendo repassado é o nome dos médicos, e o value é o ID de cada um, como faço para ter acesso ao ID quando o usuário escolher o pelo nome?


Despois desse bloco cria outro bloco de validação com uma função que recebe o json que vc criou e o input.content ai vc percorre o json com o valor do input.content quando achar vc pega o id e retorna ele na função ai vc sabe que id vc usou 


O script pode ficar no mesmo bloco desde que esteja nas ações de saída.

Vc pode criar um script com um find.

Ex:
 

function run() {

try {

let arrayOpcoes = JSON.parse('{{arrayOpcoes}}'); //parse no json das opcoes da sua lista

let inputContent = '{{input.content}}'.split('\n').join(''); // tira quebras de linha caso existam no input do contato

 

const result = arrayOpcoes.find((opcao) => opcao.text.toLowerCase().includes(inputContent));

 

return result.value;

} catch (e) {

return 'DebugErro: ' + e;

}

 

}


Comente