Olá pessoal!
Sei que estou meio sumido, mas tenho bastante código e diagramas para fazer até o fim do ano, quando vou apresentar meu TCC. O meu projeto é uma imobiliária virtual, onde o cliente acessa os imóveis disponíveis para venda e locação, pode visualizar a galeria de imagens e a localização exata do imóvel através da API do Google chamada Geocoding.
Em todo sistema, os requisitos funcionais sempre mudam, o que leva ao desenvolvedor buscar conhecimento de ferramentas para atender às necessidades do seu cliente.
Estes dias o cliente solicitou uma ferramenta no site que disponibilizasse Chat Online, entre o cliente e algum atendente da Imobiliária.
Fui então, buscar algo que pudesse ser integrado a minha aplicação feita com VRaptor 3 já sabendo da existência do Livezilla, porém, o programa só está disponível para o sisteminha do tio Bill, eu uso Debian Lenny.
Pesquisando um pouco mais achei o Openfire, um servidor OpenSource feito em Java destinado a chats e conferências Online, possui vários plugins, entre eles o Webchat, é um plugin com extensão WAR e deve ser usado no Tomcat, bastando fazer o deploy e acessar o endereço http://localhost:8080/webchat para setar o nome do servidor, nome do host e a porta.
O site oficial para efetuar o download do Openfire, o Spark e o Webchat é este link.
Explicando o que significa cada um dos três:
Openfire é o servidor.
O Spark é o cliente IM feito em Java feito para conectar ao Openfire, é por ele que o atendente da imobiliária faz o atendimento.
Webchat é uma aplicação Web em Java, pode ser usada pelo Tomcat, baixando o webchat.war ou pode ser usado o plugin dele, o nome do arquivo é plugin_webchat.war, deve ser renomeado para webchat.war e adicionado pelo Openfire na seção “Plugins”.
Neste post não vou abordar a instalação do Openfire, já que existem vários tutoriais a respeito, mas vou deixar a dica de como configurá-lo corretamente para que o cliente e o atendente conectem ao server.
Após efetuar o login no Openfire, vá na aba “Servidor”, repare que existe “name server” e “host name”, vá em “propriedades do sistema” e clique em “editar” na linha “xmpp.domain”, deixe essa opção assim:
mydomain.com
Esse será o nome do servidor, agora configure o domínio do seu sistema, no meu caso é Debian, conforme abaixo:
# gedit /etc/hosts
127.0.0.1 debian.mydomain.com
# gedit /etc/hostname
127.0.0.1 debian.mydomain.com
Salve as alterações e reinicie o sistema. Entre novamente no Openfire acessando o link http://localhost:9090/, repare que o Openfire detectou as alterações feitas no sistema. Vá agora em “configurações do servidor”, clique em “server certificates”, lá deve estar igual ao “name server”, se não estiver, apague o que estiver lá, clique para reiniciar a interface do Openfire, reinicie o Openfire pelo terminal:
# /etc/init.d/openfire restart
Agora logue-se no Openfire e vá na seção dos certificados, clique para gerar novos certificados.
No final, sua configuração ficará assim:

Para conectar o cliente Spark ao Openfire você precisa criar algum grupo e algum usuário e dentro desse grupo você inclui o usuário ou usuários que desejar, lembre-se que estes usuários vão conversar no chat, mas também poderão receber requisições de conexões anônimas, desde que você configure o Openfire para isto, para permitir conexões anônimas, vá em “configurações do servidor” e clique na opção “registro e login”, habilite o login anônimo.
Eu apenas criei um grupo chamado Clientes, e dentro está o usuário “teste”, que será o atendente, depois fui na aba Fastpath e confirmei se os dados estavam corretos, na aba “sessões” é possível acompanhar as conexões sendo efetuadas também.
Depois de fazer o download do Spark, entre na pasta e rode o arquivo “starter”:
# cd Spark
# chmod +x starter
# ./starter
Em seguida já é possível abrir o cliente Spark, basta rodar:
# chmod +x Spark
# ./Spark
Obviamente, o cliente estará no desktop do funcionário da Imobiliária, e não como estou fazendo, instalando no próprio servidor, isto é apenas um teste com fins didáticos. =)
Abrindo o cliente coloque o nome do usuário que você cadastrou no Openfire, sua senha e o nome do host “debian.mydomain.com”. Feita a conexão do atendente com o Openfire, vamos adicionar o cliente da imobiliária.
Faça o deploy do webchat.war no Tomcat, acesse o link http://localhost:8080/webchat, coloque os dados:
name server: mydomain.com
host name: debian.mydomain.com
port: 5222
Ele vai conectar e vai mostrar uma imagem mostrando que o chat está ONLINE:

Veja lá! Existe algum atendente logado, caso contrário a imagem estaria OFFLINE.
Temos então um atendente logado esperando por um cliente para dar informações, vamos dar a ele um cliente:

O cliente “josé” se interessou por um imóvel, mas gostaria de confirmar algumas informações com um atendente:


O cliente faz uma pergunta e é recebida pelo atendente que está usando o Spark:

O atendente responde á pergunta:

Como o “seu José” estava com o feijão na panela, ele sai da sala e o atendente visualiza o logoff.

O Openfire usa diversos bancos para armazenar tudo, eu uso o PostgreSQL 8.4, a conexão é feita na instalação, então sugiro criar antes o banco no Postgre, chame-o como “openfire” mesmo, depois instale o Openfire, apontando esse banco para usar, certifique-se de inserir o nome e usuário corretos do banco.
Para chamar o chat pela aplicação Web é bem simples, basta criar uma função javascript, repare que antes do arroba está “clientes”, que é o nome do Grupo que eu criei no Openfire:
<script language=”JavaScript” type=”text/javascript”
src=”http://localhost:8080/webchat/jivelive.jsp”>
</script>
<script>
showChatButton(‘clientes@workgroup.mydomain.com’);
</script>
Eu chamo o Live Chat através de uma imagem, mas ela pode ser alterada, assim como o resto das imagens da janela do chat, isso já foi debatido no fórum do Openfire, mas eu uso assim, veja:
div id=”atendimento”><a onclick=”javascript: showChatButton()” href=”#”><img src=”${pageContext.request.contextPath}/imagens/aplication/atendimento.gif” /></a></div>
Para quem quiser um tutorial mais detalhado da instalação de tudo, existe um feito pelos desenvolvedores com imagens, clique aqui.
Recomendo fazer o download do tutorial com conexão banda larga, porque o servidor deles fecha a conexão antes de terminar o download, para quem têm conexão lenta é um parto baixar esse arquivo.
É isso, fiquei algumas madrugadas quebrando a cabeça mas descobri como usar esse servidor de chat e integrar à minha aplicação feita com VRaptor 3.
Espero que este post seja útil aos desenvolvedores Web.
Abraço e até o próximo post!