E ai galera, fiz um sistema tipo ChatBot, mais quero que ele me obedeça em tempo real.Ele so permite digitar perguntas e responde as opções pré-programadas para ele responder…entam acho que vai levar muito tempo colocar as perguntas e as respostas que ele vai responder, entao eu queria que me obedecesse em tempo real para que mesmo fazendo qualquer pergunta ele ter uma resposta…
Alguma ideia de como faço isso…???
Mas ai ele não perderia a característica de ser um bot? Vc quer que ele te repasse a pergunta quando não souber a resposta?Vc quer que ele aprenda a responde? Não entendi mt bem, mas vc pode usar alguma Api que já tenha essas perguntas.
Sim…quero que ele me repasse a pergunta quando não souber a resposta?quero que ele aprenda a responder, por exemplo eu le perguntar a data de hoje, e ele procurar a data de hoje em tempo real e me dizer.
Fiz dessa forma…mais nao é exactamente isso que eu queria.
Qual é esse api?
Não acho que você vai conseguir expandir seu bot dessa forma, a quantidade de entradas possíveis será enorme, e você não tem como prever todas elas. Não é à toa que há empresas vendendo o serviço de programar bots assim. Não é uma tarefa trivial, e nem um monte de ifs aninhados como você está fazendo.
Qual o objetivo desse projeto? Você precisa definir o escopo (o que deve e o que não deve fazer) dele e, a partir daí, desenvolver seu bot.
De todo modo, se for continuar com um bot simplificado, considere usar melhor os recursos da linguagem. Comece usando objetos, listas e filas. Por exemplo, você pode ter um objeto para definir a mensagem a ser comparada e a resposta a ser dada, e ter uma lista de objetos dessa classe. Assim, seus ifs podem ser substituídos por um loop nessa lista. Algo como:
class ItemDoBot{
String mensagemParaComparar;
String respostaASerDada;
public ItemDoBot(String m, String r){
mensagemParaComparar = m;
respostaASerDada = r;
}
public boolean comparar(String m){
return mensagemParaComparar.toLowerCase().contains(msg);
}
}
List<ItemDoBot> listaItens = new LinkedList<>();
public void actionPerformed(){
String msg = field.getText();
for (ItemDoBot item : listaItens){
if (item.comparar(msg)){
txt.append(item.pegarRespostaASerDada());
}
}
}
// em alguma área de inicialização do código (ex: antes de criar a tela)
listaItens.add(new ItemDoBot("bom dia", "Computer: Bom dia\nComputer: Como voce esta?"));
listaItens.add(new ItemDoBot("estou bem e voce", "Computer: Bom dia\nComputer: Estou muito bem gracas a Deus"));
// adicione as outras respostas aqui
Numa versão mais “avançada”, a classe ItemDoBot pode fazer mais coisas, como comparar o horário e emitir uma mensagem conforme o caso, como você quer. E você pode fazer a carga das mensagens a serem comparadas e das respostas a partir de um arquivo ou base de dados, o que facilita a edição das respostas e evita que elas fiquem fixas no código.
Note que o código está simplificado, incompleto e não funciona. Não é pra copiar e colar e esperar que resolva seu problema, é pra entender a ideia. Se você não entende esses conceitos como objetos e listas, recomendo pausar esse projeto para estudá-los.
Abraço.
Muito obrigad.
Abraço
Vou pausar estudar ainda mais…muito mais.
Tenho que apresentar este projecto em poucas semanas.
Ué? esse projeto é pra apresentar? ta na documentação que tem que ter rede neural ou era só pra incrementar?
Sim…é para apresentar colega Alysson