Skip to main content

Criei uma message template para o Whatsapp que só recebe 1 parâmetro. Essa message template é consumida em um dos meus sistemas através da API do BLIP, onde eu monto uma mensagem baseada em várias listas do sistema.



Na montagem dessa mensagem, eu coloquei as quebras de linhas assim como colocamos no build, com o \n, porém ao disparar a mensagem ativa, o Whatsapp não faz a sanitização e a mensagem chega com todos os \n ao invés da quebra de linha.



Alguém sabe como tratar essa situação?



image

Já tentei de diversas formas e não obtive êxito neste ponto. Tipo, por diversas vezes, montava meu MENU no meu WebService e retornava pro Blip via api, porém, ao exibir no Whats os \n também eram exibidos…



Solução pra mim foi incluir a msg no script e lá montar o menu do lado do blip, talvez, seja a mesma situação


@Rodrigo_Valentim, mas no seu caso era mensagem ativa ou era a construção do texto no Builder?


Construção de texto no builder.


O que estou tentando passar é que, me parece que o Blip entende o \n vindo de outra origem como sendo um texto e não como uma quebra de linha… entende?


Pois é… já tentei várias coisas aqui também e nada.



O problema é que meu texto é composto por listas, então não sei quantas posições eu teria para criar as variáveis estaticamente.



Uma outra opção seria quebrar em vários messages templates, mas meu usuário receberia muitas mensagens instantaneamente quando fossem disparados.


Tenho 2 tipos de resposta para essa pergunta: resposta curta (pra quem só quer resolver o problema e ponto) e resposta completa (pra quem quer entender o problema e evitar possíveis novos problemas relacionados).


(Detalhe: esse resposta serve para qualquer conteúdo dinâmico)



Resposta curta:



Se você tem uma string em um obj JSON que contém o “\n”, sempre execute um script para fazer o parse desse obj, atribua a str a uma nova var e retorne-a. Use sua variável onde deseja da seguinte forma {{nome_da_var_retornada}}.




image






Resposta completa



Embora possa parecer um bug do Blip (inicialmente, também pensei que era), não é um bug. Pelo menos conceitualmente não, ainda que quebre o paradigma e a intuitividade de programação no builder. Bom, vamos lá… vamos entender o problema…



Sempre que eu retorno um obj na execução de um script no builder





o builder automaticamente faz um JSON.stringify(obj) antes de atribuí-lo a minha variável de retorno, o que significa que essa variável sempre será uma str, não um objeto propriamente dito.


Acontece que JSON.stringify(obj) escapa a " \ " (barra invertida) ao transformar o obj em str.





Então, quando usamos {{meu_obj@texto}} em um conteúdo dinâmico ou mesmo em uma simples entrada de texto, o resultado é a exibição dos "\n"s.


Se executamos um outro script que faz o parse JSON e retornamos o valor(string) de um atributo propriamente dito,


image


então não há necessidade do builder fazer uma stringfy - ou seja, os "\n"s não são escapados - e tudo funciona conforme o esperado.


Ao invés de retornar o obj, eu tentei



return JSON.stringify(content).replaceAll(’\\n’, ‘\n’);



Mas, aí o builder do Blip quebrou 😕


Tenho 2 tipos de resposta para essa pergunta: resposta curta (pra quem só quer resolver o problema e ponto) e resposta completa (pra quem quer entender o problema e evitar possíveis novos problemas relacionados).

(Detalhe: esse resposta serve para qualquer conteúdo dinâmico)

 

Resposta curta:

 

 

Se você tem uma string em um obj JSON que contém o “\n”, sempre execute um script para fazer o parse desse obj, atribua a str a uma nova var e retorne-a. Use sua variável onde deseja da seguinte forma {{nome_da_var_retornada}}.
 

 

 

 

image

 

 

Resposta completa

 

 

Embora possa parecer um bug do Blip (inicialmente, também pensei que era), não é um bug. Pelo menos conceitualmente não, ainda que quebre o paradigma e a intuitividade de programação no builder. Bom, vamos lá… vamos entender o problema…

 

 

Sempre que eu retorno um obj na execução de um script no builder
 

 

 


o builder automaticamente faz um JSON.stringify(obj) antes de atribuí-lo a minha variável de retorno, o que significa que essa variável sempre será uma str, não um objeto propriamente dito.

Acontece que JSON.stringify(obj) escapa a " \ " (barra invertida) ao transformar o obj em str.

 

 

 

 


Então, quando usamos {{meu_obj@texto}} em um conteúdo dinâmico ou mesmo em uma simples entrada de texto, o resultado é a exibição dos "\n"s.

Se executamos um outro script que faz o parse JSON e retornamos o valor(string) de um atributo propriamente dito,

image

então não há necessidade do builder fazer uma stringfy - ou seja, os "\n"s não são escapados - e tudo funciona conforme o esperado.

 

 

 

Tragam um troféu para esta pessoa! 


Comente