Melhor pratica para enviar informações segmentadas

Fala pessoal, bom dia!
Estou pensando já tem alguns dias de como enviar para o cliente informações segmentadas.

Ex:

Cliente com boleto(s) em atraso, como posso enviar para ele as informações do boleto e uma linha com o código de barras a parte?

E se ele possuir mais de um boleto ? Ficaria legal enviar, tipo,

{{boleto@informacoes[0]}}
{{boleto@linha[0]}}

{{boleto@informacoes[1]}}
{{boleto@linha[1]}}

{{boleto@informacoes[2]}}
{{boleto@linha[2]}}

Como o Blip iria se comportar se só existisse 1 boleto ?

Olá @Rodrigo_Valentim tudo bem?

Dessa forma informacoes e linha funciona. Mas vale a pena saber que o Blip não trabalha com percorrer os objetos desta forma [1]. Você teria que fazer uma lógica, utilizando scripts para ou transformar o JSON em uma estrutura que não seja necessário fazer esse percurso ou então um script e um loop para ficar separando e exibindo as informações de forma recorrente.

Você poderia transformar o JSON em algo parecido com isso, por exemplo:

{
   "informacoes1":"xxxx",
   "linha1":"asdasd",
   "informacoes2":"yyyy",
   "linha2":"gthtuhu"
}
2 Curtidas

Cara, nunca precisei realizar esta conversão, tens aí algum exemplo fácil ?

Estou tentando usar o spread mas como os atributos possuem o mesmo nome, ele está atualizando os valores. Tentei criar um indice para concatenar com o nome do atributo mas não está dando certo… rs

            boletos.forEach(b => {
                mensagem = { ...mensagem, periodo: b.periodo};
                mensagem = { ...mensagem, vencimento: b.vencimento};
                mensagem = { ...mensagem, valor: b.valor};
                mensagem = { ...mensagem, linha: b.linha};
            });

Eu pensei em algo mais ou menos assim:

var count = 0; 

json.boletos.forEach(function(item, index) {
    count++; //contador para auxiliar verificaçao no blip
	var informacoes = "informacoes" + index; //cria dinamicamente nome dos elementos
	var linha = "linha" + index;
	json[informacoes] = item.informacoes; //adiciona os elementos
	json[linha] = item.linha;
})

json.qtd = count;
delete json['boletos'];

Assim, um json no formato:

{
   "boletos":[
      {
         "informacoes": "Boleto 122",
         "linha": 26
      },
      {
         "informacoes": "Boleto 123",
         "linha":27
      },
      {
         "informacoes": "Boleto 124",
         "linha":29
      }
   ]
}

Ficará:

{
  informacoes0: "Boleto 122",
  informacoes1: "Boleto 123",
  informacoes2: "Boleto 124",
  linha0: 26,
  linha1: 27,
  linha2: 29,
  qtd: 3
}

O atributo qtd é pra voce ter um controle no Blip.

1 Curtida

@Bruno, Cara, eu até tentei mas por algum motivo, não está permitindo retornar o menu para exibição. Variavel fica vazia…

               var count=0;
            boletos.forEach(function(item, index) {
                count++; //contador para auxiliar verificaçao no blip
                var periodo = "periodo" + index; //cria dinamicamente nome dos elementos
                var vencimento = "vencimento" + index; //cria dinamicamente nome dos elementos
                var valor = "valor" + index; //cria dinamicamente nome dos elementos
                var linha = "linha" + index;
                mensagem[periodo] = item.periodo; //adiciona os elementos
                mensagem[vencimento] = item.vencimento; //adiciona os elementos
                mensagem[valor] = item.valor; //adiciona os elementos
                mensagem[linha] = item.linha;
            });

Não da erro nenhum, apenas, a variável fica com valor “”

Desculpa a pergunta boba, mas você deu um return no JSON ao final? Eu não coloquei no código, mas ele precisa existir para que a variável receba os novos valores.

hahah Coloquei sim, Bruno.

Achando estranho esse return não vir… olha o print aí

/**
            * All input variables needs to be passed as function param;
            * Objects received as param needs to be parsed. Ex.: JSON.parse(inputVariable1);
            * Objects returned needs to be stringfied. Ex.: JSON.stringify(inputVariable1);
            **/
            function run(mensagemcoletaboleto) {
                const boletos = JSON.parse(mensagemcoletaboleto);
                let mensagem = '';
                //
                var count=0;
                boletos.forEach(function(item, index) {
                    count++; //contador para auxiliar verificaçao no blip
                    var periodo = "periodo" + index; //cria dinamicamente nome dos elementos
                    var vencimento = "vencimento" + index; //cria dinamicamente nome dos elementos
                    var valor = "valor" + index; //cria dinamicamente nome dos elementos
                    var linha = "linha" + index;
                    mensagem[periodo] = item.periodo; //adiciona os elementos
                    mensagem[vencimento] = item.vencimento; //adiciona os elementos
                    mensagem[valor] = item.valor; //adiciona os elementos
                    mensagem[linha] = item.linha;
                });
                /*
                var indice = 0;
                boletos.forEach(b => {
                    if (indice == 0) {
                        mensagem = { ...mensagem, periodo0: "Periodo: "+ b.periodo};
                        mensagem = { ...mensagem, vencimento0: "Vencimento: "+b.vencimento};
                        mensagem = { ...mensagem, valor0: "Valor: "+b.valor};
                        mensagem = { ...mensagem, linha0: b.linha};
                    }
                    if (indice == 1) {
                        mensagem = { ...mensagem, periodo1: "Periodo: "+b.periodo};
                        mensagem = { ...mensagem, vencimento1: "Vencimento: "+b.vencimento};
                        mensagem = { ...mensagem, valor1: "Valor: "+b.valor};
                        mensagem = { ...mensagem, linha1: b.linha};
                    }
                    if (indice == 2) {
                        mensagem = { ...mensagem, periodo2: "Periodo: "+b.periodo};
                        mensagem = { ...mensagem, vencimento2: "Vencimento: "+b.vencimento};
                        mensagem = { ...mensagem, valor2: "Valor: "+b.valor};
                        mensagem = { ...mensagem, linha2: b.linha};
                    }
                    indice += indice + 1;
                });
                */
                return JSON.stringify(mensagem); //Return value will be saved as "Return value variable" field name
            }

Quando uso da forma que está comentada, funciona normalmente… porém, fica feio kkkk

Rodrigo, acho que o problema é esse

let mensagem = '';

Como ela está sendo referenciada como uma string, acredito que a inserção do tipo mensagem[key] não funciona. Tente mudar para

let mensagem = {}

E veja se funciona.

1 Curtida

Rapaz, algo tão simples … a gente fica vesgo e não acha…
Valeu, obrigado. Funcionando redondinho

2 Curtidas

Quem nunca esqueceu um ; que atire a primeira pedra hahaha

Que bom que funcionou Rodrigo! :rocket: :rocket:

1 Curtida