Pular para o conteúdo principal

Chat

O componente Chat foi criado para ser utilizado na interação entre usuários. O componente utiliza Websocket para comunicação de envio e recebimento de mensagens.

Chat:

Imagem 1 - Componente Chat no Webrun.

Imagem 2 - Enviar Mensagem para todos. Nesta janela, o usuário poderá enviar uma mensagem para todos os usuários.

Imagem 3 - Conversa em Grupo.

Imagem 4 - Envio de diferentes tipos mídias.

Propriedades em comum:

PropriedadeDescriçãoTipoExemplo
AlturaDefine a altura do componenteInteiro250
CódigoInforma o código gerado pelo Maker ao qual o componente/formulário foi associado. De forma geral, não interfere nas características do componente.Inteiro5
ContainerInforma em qual container o componente irá ser inserido.Indefinido
DicaArmazena uma dica para o componente, o qual se torna acessível no modo de inserção ou alteração.Letras"Digite o CPF do cliente"
HabilitadoTorna o componente possível ser editado ou manipulado.LógicoSim
PosiçãoX e PosiçãoYO "X" determina a posição do componente em relação à esquerda do formulário, e o "Y" em relação ao topo.Inteiro100
TabulaçãoIndica a ordem de tabulação do componente em relação aos outros que compõem a aba do formulário na qual está posto. Essa ordem pode ser observada quando o usuário altera o estado do formulário/grade para o modo de inclusão ou edição e navega entre os componentes/campos usando a tecla Tab.Inteiro2
TabularSelecionando a opção Sim, quando o usuário estiver navegando entre os componentes, como foi descrito no item anterior, o componente receberá foco (observada a ordem de tabulação).LógicoSim
TamanhoAplicado a todos - determina a largura do componente ou formulário.Inteiro100
VisívelAplicada a todos os componentes, com exceção da Moldura e do objeto formulário - Selecionando a opção Sim, o componente aparece no formulário.LógicoSim
NomeAplicada a todos os componentes e para o objeto formulário - apresenta o nome do componente. O Maker sugere um nome diferente dos nomes dos componentes existentes no formulário para evitar que mais de um componente possua o mesmo nome.Letras"Tabela de Consumidores"
DescriçãoAplicada a todos os componentes exceto para os componentes Árvore, Grade, Moldura, Imagem e para o objeto formulário - É a legenda que aparece sobre o componente para identificar (resumidamente) qual a sua função. Observação: Ao selecionar um determinado campo o Maker irá sugerir uma descrição obtida no dicionários de dados, caso o usuário deseje deixar o campo da descrição em branco basta apagá-lo e clicar fora do componente.Letras"Insira aqui a idade do consumidor"

Propriedades específicas do componente Chat:

PropriedadeDescriçãoTipoExemplo
Instância(Opcional) Define o identificador da instância de comunicação do chat, pode ser qualquer valor. Chats que possuem o mesmo identificador de instância poderão se comunicar entre si. Quando essa propriedade está vazia, o chat irá gerar um identificador automaticamente e irá ser isolado dos demais chats do sistema.LetrasCHAT_SUPORTE
Fonte de DadosDefine qual a conexão o componente irá realizar para receber os dados.ConexãoConexão Principal
Usuários do SistemaSeleciona a tabela dos usuários do sistema que irão participar do chat.Letrasfr_usuario
Campo IDSeleciona o campo que vai receber o ID na consulta dos Usuários do Sistema.Inteirousr_codigo
Campo NomeSeleciona o campo que vai receber o Nome na consulta dos Usuários do Sistema.Letrasusr_nome
Campo FotoSeleciona o campo que vai receber a Foto na consulta dos Usuários do Sistema.Imagemusuario.png
Salvar HistóricoDefine se o chat irá salvar o histórico. OBS: Necessita que as propriedades de SQL do histórico estejam definidas.LógicoSim
SQL HistóricoDefine o SQL que será utilizado para obter o histórico de mensagens. Clique aqui para baixar o modelo de estrutura e importar em seu projeto.SQLSELECT * FROM chat_history
Campo IDSeleciona o campo que vai receber o ID da mensagem na consulta do Histórico SQL. O ID da mensagem não é um inteiro auto incremental pois o chat necessita gerá-lo em tempo de execução. Ele garante a unicidade.Letrasid_historico
Campo DataSeleciona o campo que vai receber a Data e Hora (em UTC) da mensagem na consulta do Histórico SQL.Data/Horadata_historico
Campo StatusSeleciona o campo que vai receber o Status da mensagem na consulta do Histórico SQL.Inteirostatus_historico
Campo RemetenteSeleciona o campo que vai receber o Remetente da mensagem na consulta do Histórico SQL.Inteiroremetente_historico
Campo DestinatárioSeleciona o campo que vai receber o Destinatário da mensagem na consulta do Histórico SQL. Em mensagens de grupos, essa coluna receberá NULL e a coluna especificada na propriedade Campo Grupo irá receber o ID do grupo destinatário da mensagem.Inteirodestinatario_historico
Campo Grupo(Opcional) Seleciona o campo que vai receber o ID do grupo na consulta do Histórico SQL. Em mensagens privadas, essa coluna receberá NULL e a coluna especificada na propridade Campo Destinatário irá receber o ID do usuário destinatário da mensagem.Inteirogrupo_historico
Campo ConteúdoSeleciona o campo que vai receber o Conteúdo da mensagem na consulta do Histórico SQL.Letrasconteudo_historico
Campo ID Mídia(Opcional) Seleciona o campo que vai receber o ID da mídia anexada à mensagem na consulta do Histórico SQL.Letrasid_midia_historico
Campo Tipo Mídia(Opcional) Seleciona o campo que vai receber o tipo do arquivo da mídia anexada à mensagem na consulta do Histórico SQL. O formato do tipo salvo nessa coluna é o MIME type do arquivo.Letrastipo_midia_historico
Campo Arquivo Mídia(Opcional) Seleciona o campo que vai receber o nome do arquivo da mídia anexada à mensagem na consulta do Histórico SQL. Por padrão, o chat salva os arquivos enviados na pasta Upload do Webrun.Letrasarquivo_midia_historico
Exibir Notificações na Área de Trab.Define se o chat irá exibir as notificações na área de trabalho. Para isso o usuário deve autorizar a página a exibir notificações. Quando desabilitado, a mensagem de solicitação não é exibida.LógicoSim
Exibir Confirmação de LeituraExibe a confirmação de leitura para as mensagens do Chat.LógicoSim
Exibir Estado dos UsuáriosExibe estados dos usuários do chat (Online ou Offline).LógicoSim
Exibir Visto por ÚltimoExibe o visto por último dos usuários. OBS: Necessita que a propriedade "Exibir Estado dos Usuário" esteja ativa.LógicoSim
Exibir PesquisaExibe a barra de pesquisa no Chat.LógicoSim
Exibir Enviar para TodosExibe a opção de enviar mensagem a todos os usuários.LógicoSim
Expandir Foto ao ClicarExpande a foto dos usuários ao clicar.LógicoSim
Permitir ExportaçãoAdiciona uma opção no chat para possibilitar a exportação da conversa.LógicoSim
Permitir Envio de MídiasAdiciona uma opção no chat para possibilitar o envio de mídias (imagens, vídeos, aúdios, arquivos, etc).LógicoSim
Permitir Criação de GruposAdiciona uma opção no chat para possibilitar a criação de grupos.LógicoSim
Formulário de Grupos(Opcional) Define o formulário que será utilizado para criação e edição de grupos do Chat. Quando não especificado, as telas padrões do Chat serão utilizadas.Formulario-
SQL Grupos(Opcional) Define o SQL que será utilizado para obter os grupos do Chat.SQLSELECT * FROM chat_groups
Campo ID Grupo(Opcional) Seleciona o campo que vai receber o ID do grupo na consulta de Grupos.Inteiroid_grupo
Campo Nome Grupo(Opcional) Seleciona o campo que vai receber o Nome do grupo na consulta de Grupos.Letrasnome_grupo
Campo Foto Grupo(Opcional) Seleciona o campo que vai receber a Foto do grupo na consulta de Grupos.Imagemfoto_grupo
SQL Grupos Usuários(Opcional) Define o SQL que será utilizado para obter quais usuários estão nos grupos do Chat (Tabela Relacional).SQLSELECT * FROM chat_groups_users
Campo ID Grupo(Opcional) Seleciona o campo que indicará qual Grupo o usuário faz parte.Inteiroid_grupo
Campo ID Usuário(Opcional) Seleciona o campo que indicará qual Usuário faz parte do Grupo.Inteiroid_usuario
Campo Administrador(Opcional) Seleciona o campo que indicará se o Usuário no Grupo indicado é Administrador.Lógicoadministrador
Ocupar Área do FormulárioOcupa a área toda da aba no formulário em que o chat se encontra (tela cheia). OBS: Não é ideal que existam componentes além do chat na aba quando esta propriedade está ativada pois os componentes podem atrapalhar a visualização do chat, embora isso não seja uma restrição.LógicoNão
Limite de CaracteresDefine o limite de caracteres das mensagens no Chat.Inteiro5000
Quantidade de Mensagens CarregadasEspecifica a quantidade inicial de mensagens carregadas no chat, por conversa. Ao subir a barra de rolagem ele carrega mais essa quantidade de mensagens e assim sucessivamente.Inteiro15
Imagem Usuário Sem Foto(Opcional) Imagem que será exibida para usuários que não possuem foto de perfil. Quando não especificado, o Chat irá criar uma automaticamente.ImagemDefinido através da Galeria de imagens
Imagem Grupo Sem Foto(Opcional) Imagem que será exibida para grupos que não possuem foto. Quando não especificado, o Chat irá criar uma automaticamente.ImagemDefinido através da Galeria de imagens
Tamanho das FotosDefine o tamanho das fotos dos usuários, em pixels, na lista de usuários do Chat.Inteiro48
Modo de VisualizaçãoDefine o modo de visualização do chat: - Automático: Modo automático, calculado pelo tamanho da tela. - Desktop: Layout modo desktop. - Mobile: Layout modo mobile.ListaAutomático
AcessívelTorna o componente acessível ou não no formulário quando não está no modo Incluir: - Todos os modos; - Modo Inclusão/Alteração;ListaTodos os Modos
Estilo (CSS)Estilo CSS que será aplicado no componente.Letras-
Estilo Mobile (CSS)Estilo CSS que será aplicado no componente quando em modo mobile.Letras-

Eventos:

EventoDescriçãoParâmetros Automáticos
Ao ConectarExecutado quando um usuário conecta no chat. Se o identificador no primeiro parâmetro for o mesmo do usuário corrente, significa que o chat carregou e o usuário está online.1. ID do usuário conectado;
Ao DesconectarExecutado quando um usuário desconecta do chat. Se o identificador no primeiro parâmetro for o mesmo do usuário corrente, significa que o usuário está com problemas de conexão com o servidor.1. ID do usuário desconectado;
Ao Enviar MensagemExecutado quando o usuário envia uma mensagem no chat. Se o usuário enviou a mensagem pelo Enviar Mensagem Para Todos, o fluxo associado à esse evento será executado para cada usuário na lista.1. ID da mensagem; 2. ID do usuário remetente; 3. ID do usuário/grupo destinatário; 4. Valor lógico indicando se o ID do 3º parâmetro é um grupo; 5. Conteúdo da mensagem;
Ao Receber MensagemExecutado quando o usuário recebe uma mensagem no chat.1. ID da mensagem; 2. ID do usuário remetente; 3. ID do usuário/grupo destinatário; 4. Valor lógico indicando se o ID do 3º parâmetro é um grupo; 5. Conteúdo da mensagem;
Ao Enviar MídiaExecutado quando o usuário envia uma mídia no chat.1. Caminho Completo do Arquivo; 2. ID da Mídia; 3. MIME Type do Arquivo; 4. Nome do Arquivo;
Ao Carregar MídiaExecutado quando uma mídia é exibida/carregada no chat. O retorno do fluxo associado à esse evento pode retornar a URL da mídia que o chat irá utilizar para exibição. Quando não retornado, o chat irá usar a URL padrão.1. ID da Mídia; 2. MIME Type do Arquivo; 3. Nome do Arquivo;
Ao Abrir ConversaExecutado quando o usuário abre a conversa com outro usuário ou grupo.1. ID do usuário/grupo; 2. Valor lógico indicando se o ID do 1º parâmetro é um grupo;

Funções:

NomeDescriçãoParâmetrosRetornoObservaçõesCompatibilidade
Chat - Abrir Conversa com GrupoAbre a conversa com um grupo.1. Componente Chat _(Componente). 2. ID do Grupo (Inteiro).Não possui.-Cliente
Chat - Abrir Conversa com UsuárioAbre a conversa com um usuário.1. Componente Chat (Componente). 2. ID do Usuário (Inteiro).Não possui.-Cliente
Chat - Adicionar Usuários ao GrupoAdiciona usuários a um grupo (em cache).1. Componente Chat (Componente). 2. ID do Grupo (Inteiro). 3. Lista contendo os IDs dos Usuários (Lista).Não possui.Essa função utiliza a cache do componente chat. Se o grupo não estiver na lista do chat especificado, a função não irá fazer nada. Alterações em grupos só serão feitas se o chat estiver com a propriedade "Permitir Criação de Grupos" habilitada. O usuário logado deve ser administrador do grupo especificado para poder adicionar/remover usuários.Cliente
Chat - Atualizar ComponenteAtualiza os dados em cache do componente (lista de grupos, usuários, etc).1. Componente Chat (Componente).Não possui.-Cliente
Chat - Enviar MensagemEnvia uma mensagem para o usuário/grupo ativo no chat.1. Componente Chat (Componente). 2. Mensagem (Letras).Não possui.-Cliente
Chat - Exportar ConversaExporta uma conversa do usuário logado com outro usuário/grupo do chat.1. Componente Chat (Componente). 2. ID do Usuário/Grupo (Inteiro). 3. ID do 2º parâmetro é um grupo? (Lógico). 4. Formato de Exportação (pode ser: PDF) (Letras). 5. Ordem de Exportação das Mensagens (0: antigas para novas, 1: novas para antigas) (Inteiro). 6. Layout da página (de 1 a 6, onde 1 é A1 e 6 é A6) (Inteiro). 7. Rotacionar Página? (Lógico). 8. Estilo da Tabela (0: simples, 1: escuro) (Inteiro). 9. Bordas na Tabela? (Lógico). 10. Data Inicial (Data). 11. Data Final (Data).Não possui.1. As datas nos 10º e 11º parâmetros podem ser nulas. Se a data inicial e a data final forem nulas, todo o histórico será exportado. Se somente a data final for nula, todas as mensagens da data inicial até o final serão exportadas. 2. Após o processamento, o download da conversa exportada será iniciado automaticamente.Cliente
Chat - Fechar Conversa AtivaFecha a conversa ativa no chat.1. Componente Chat (Componente).Não possui.-Cliente
Chat - Obter Lista de Usuários do GrupoObtém a lista de usuários de um grupo (em cache).1. Componente Chat (Componente). 2. ID do Grupo (Inteiro).Lista contendo os IDs usuários no grupo (Lista).Essa função utiliza a cache do componente chat. Se o grupo não estiver na lista do chat especificado, a função retornará uma lista vazia.Cliente
Chat - Obter Lista de Usuários OnlineEssa função obtém a lista de usuários online.Não possui.Lista de lista de usuários (Lista).1. A lista retornada contém as informações do usuário, como nome completo, id e última visualização.Servidor
Chat - Obter Nome do GrupoObtém o nome de um grupo do chat (em cache).1. Componente Chat (Componente). 2. ID do Grupo (Inteiro).Nome do grupo (Letras).Essa função utiliza a cache do componente chat. Se o grupo não estiver na lista do chat especificado, a função retornará um texto vazio. O resultado dessa função pode não refletir o nome do grupo em tempo real no banco de dados. Se a cache do chat estiver desatualizada, ele irá apresentar diferenças. Para isso é possível utilizar a função "Chat - Atualizar Componente" para atualizar a cache do chat.Cliente
Chat - Obter Nome do UsuárioObtém o nome de um usuário do chat (em cache).1. Componente Chat (Componente). 2. ID do Usuário (Inteiro).Nome do usuário (Letras).Essa função utiliza a cache do componente chat. Se o usuário não estiver na lista do chat especificado, a função retornará um texto vazio. O resultado dessa função pode não refletir o nome do usuário em tempo real no banco de dados. Se a cache do chat estiver desatualizada, ele irá apresentar diferenças. Para isso é possível utilizar a função "Chat - Atualizar Componente" para atualizar a cache do chat.Cliente
Chat - Remover Usuários do GrupoRemove usuários de um grupo.1. Componente Chat (Componente). 2. ID do Grupo (Inteiro). 3. Lista contendo os IDs dos Usuários (Lista).Não possui.Essa função utiliza a cache do componente chat. Se o grupo não estiver na lista do chat especificado, a função não irá fazer nada. Alterações em grupos só serão feitas se o chat estiver com a propriedade "Permitir Criação de Grupos" habilitada. O usuário logado deve ser administrador do grupo especificado para poder adicionar/remover usuários.Cliente
Chat - Sair do GrupoRemove o usuário logado de um grupo ao qual ele faz parte.1. Componente Chat (Componente). 2. ID do Grupo (Inteiro).Não possui.Essa função utiliza a cache do componente chat. Se o grupo não estiver na lista do chat especificado, a função não irá fazer nada. Alterações em grupos só serão feitas se o chat estiver com a propriedade "Permitir Criação de Grupos" habilitada.Cliente
Chat - Usuário é Administrador do Grupo?Verifica se um usuário é administrador de um grupo (em cache).1. Componente Chat (Componente). 2. ID do Grupo (Inteiro). 3. ID do Usuário (Inteiro).Valor lógico indicando se o usuário é administrador do grupo (Lógico).Essa função utiliza a cache do componente chat. Se o grupo não estiver na lista do chat especificado, a função retornará falso.Cliente
Chat - Usuário está Online?Verifica se um usuário está online no chat (em cache).1. Componente Chat (Componente). 2. ID do Usuário (Inteiro).Valor lógico indicando se o usuário está online (Lógico).Essa função utiliza a cache do componente chat. Se o usuário não estiver na lista do chat especificado, a função irá retornar falso.Cliente

Utilização do CHAT em ambiente HTTPS com Proxy Reverso:

Em ambientes que usam HTTPS com Proxy Reverso (Apache HTTP) é necessário realizar as seguintes alterações no servidor Apache:

  1. Localizar a configuração do ProxyPass dentro do VirtualHost.
  2. Inserir a instrução: RewriteEngine On RewriteCond %{REQUEST_URI} ^/ [NC] RewriteCond %{HTTP:Upgrade} =websocket [NC] RewriteRule /(.*) ws://ENDERECO_LOCAL_BACKEND:PORTA_LOCAL_SEU_BACKEND/$1 [P,L]
  3. Reiniciar o servidor de aplicações. (Apache)
  4. É importante observar que o módulo de proxy da Apache não suporta WSTunnel no protocolo AJP.

Exemplo:

image305.jpg