Blacklist de termos como fazer?


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.


4 comentários

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 😉

@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;

}

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

Valeu, funcionou certinho!

Comente