[Resolvido] Blacklist de termos como fazer?


#1

Pessoal,

Temos a necessidade de criar um blacklist de termos para validar os inputs do usuário, ela vai ser compostas por todas as palavras “proibidas”, por exemplo, quando pedimos pro usuário digitar o nome queremos dar uma mensagem especifica quando ele digitar termos como: merda, bosta… coisas do tipo.
Existe uma maneira correta e simples de fazer isso dentro do blip? Devo usar o watson pra isso?
Como fazer?

Obrigado.


#2

Olá @ricklgoncalves,

existem diferentes maneiras de resolver este problema:

1- Criar um REGEX de validação na entrada do usuário onde estas palavras não são permitidas;
2- Criar uma API do seu lado para receber a entrada do usuário e realizar esse filtro;
3- Utilizar uma ação do tipo Script JS para realizar esse filtro;

A escolha da solução vai depender muito do contexto de vocês: tamanho da blacklist e etc.

Sugiro pensar em uma solução reaproveitável usando uma API :wink:


#3

@rafaelpa fiz um função em JS, bem simples pra testar se isso funcionaria fazendo o filtro de entrada de JS ali no builder, mas percebi que quando tenho um “for” na função ele não faz nada, quando testo bot ele nao executa e se mando uma nova mensagem ele vai pra exceção.

Exemplo func:
// Receive the variables as parameters
function run(oQueDesejaClient) {
var swear_words_arr=new Array(“merda”,“bosta”,“viado”);
var prohibitedWord = “”;
var compare_text=oQueDesejaClient;
var resultado = 0;
var texto = oQueDesejaClient;

for(var i=0; i<swear_words_arr.length; i++){
	if (texto.indexOf(swear_words_arr[i]) >= 0) {
		resultado = resultado+1;
	}
}

return resultado;

}


#4

Olá @ricklgoncalves,

fiz uma pequena alteração no seu script e obtive o resultado que você espera.

Segue script final:

// Receive the variables as parameters
function run(oQueDesejaClient) {
  var swear_words_arr = ["merda", "bosta", "viado"];
  var prohibitedWord = "";
  var compare_text = oQueDesejaClient;
  var resultado = 0;
  var texto = oQueDesejaClient;

  for (var i = 0; i < swear_words_arr.length; i++) {
    if (texto.indexOf(swear_words_arr[i]) >= 0) {
      resultado = resultado + 1;
    }
  }

  return resultado;
} 

Observações:

  • Para a ação de script JS, o Builder utiliza a versão ECMA 5.1, fique atento ao utilizar alguma função nativa e verifique se existe compatibilidade nessa versão.
  • Lembre-se de adicionar a(s) variável(is) no campo variáveis de entrada para a função

#5

Valeu, funcionou certinho!