Skip to main content

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.

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_arrxi]) >= 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 = r"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