Formulário de Contato

:information_source: Resumo Adiciona um formulário de contato no topo de qualquer tópico marcado com a tag contact. As informações enviadas por meio do formulário serão remetidas ao grupo ou categoria configurado para recebê-las.
:hammer_and_wrench: Link do Repositório https://github.com/jericson/discourse-contact-plugin
:open_book: Guia de Instalação Como instalar plugins no Discourse

Recursos

Quando ativado, o plugin Formulário de Contato coloca um formulário no topo de qualquer tópico marcado com a tag contact. Os dados enviados via formulário são remetidos a uma categoria ou grupo configurado para receber e-mails de contact_form_email.[1] Como em formulários de contato tradicionais, não é necessário ter uma conta no site para enviar.

Veja o que um visitante pode ver:

Note que se trata de uma postagem comum que pode conter quaisquer instruções que você desejar incluir no corpo.[2] Atualmente, os nomes dos campos estão codificados e nenhuma validação real é realizada, mas consulte a seção TODO abaixo. Após o envio da mensagem, ela aparecerá no feed de mensagens do grupo configurado:

Dependendo de como as notificações por e-mail estão configuradas, os membros do grupo configurado também podem receber um e-mail do Discourse:

Configuração

Para usar este plugin, você deve configurar a entrada de e-mail para criar novos tópicos ou mensagens de grupo. Não é necessário configurar a resposta por e-mail, pois o plugin não envia e-mails de verdade. Ele intercepta a API para simular a entrada de e-mail. (Dito isso, a resposta por e-mail é um recurso útil!)

Em particular, este plugin exige que:

  • email_in e
  • enable_staged_users

estejam ativados.

Uma vez ativados, qualquer tópico marcado com a tag contact terá um formulário de contato adicionado ao ponto de conexão topic-above-posts.

Enviar para um grupo

Como as pessoas usarão este formulário para enviar suas informações pessoais, enviar os resultados para um grupo fechado é a opção mais segura.

  1. Crie um novo grupo para as pessoas que cuidarão dos contatos. (Geralmente, chamo de “Contato” por simplicidade, mas pode ser qualquer coisa, inclusive um grupo existente.)
  2. Adicione os membros que receberão as informações de contato.
  3. Não marque nenhuma das opções de acesso. Este deve ser um grupo fechado.
  4. Altere a visibilidade do grupo conforme razoável para sua organização.
  5. Defina o “Endereço de e-mail de entrada personalizado” como o mesmo da configuração contact_form_email. (Por padrão, é “contact@example.com”).

Enviar para uma categoria

Enviar para uma categoria também é possível usando a configuração “Endereço de e-mail de entrada personalizado” da categoria. Certifique-se de ativar também “Aceitar e-mails de usuários anônimos sem contas”.

No entanto, enviar para uma categoria não é recomendado para informações de contato! Se, por algum acaso, as permissões de acesso na categoria forem alteradas, isso pode expor informações pessoais a pessoas (ou mecanismos de busca) que não deveriam ter acesso. É muito menos provável que isso aconteça se os contatos forem enviados para mensagens de grupo.

Limitando quem pode adicionar formulários de contato

Pode ser bastante estranho ter formulários de contato surgindo por toda parte, então você pode querer limitar quem pode usar a tag contact. Para fazer isso, crie um novo grupo de tags:

  1. Na página /tags, selecione a chave inglesa no canto superior direito.
  2. Selecione “Gerenciar grupos de tags” e depois selecione " :heavy_plus_sign: Novo grupo".
  3. Preencha um nome apropriado (por exemplo, “Apenas equipe”), adicione a tag contact e selecione “As tags são visíveis para todos, mas apenas os seguintes grupos podem usá-las”.
  4. Escolha o grupo que você deseja permitir que adicione um formulário de contato (geralmente “staff” ou “admins”) e salve o grupo de tags.

CHANGELOG

  • 25 de abril de 2024: Lançamento alfa.

TODO

  • Gostaria de configurar testes para garantir que nada quebre quando fizer alterações. Quero especialmente verificar se pessoas sem contas podem enviar seus dados.
  • Durante os testes, descobri um vazamento de dados grave. Removi essa vulnerabilidade específica, mas precisaria de ajuda para testar.
  • O formulário não faz nenhuma validação. A única exigência real é que o campo de e-mail pareça um e-mail. Se alguém deixar uma resposta sem adicionar um e-mail, o formulário falha silenciosamente.
  • Não há proteção contra spam ou abuso.
  • O código é muito do tipo meu-primeiro-plugin, baseado em exemplos que usavam convenções desatualizadas. Qualquer sugestão sobre estilo é bem-vinda.
  • Gosto de ter o formulário de contato associado a um tópico marcado com “contact”, mas é complicado e provavelmente desnecessário. Estou considerando adicionar uma nova rota que seja apenas o formulário de contato para simplificar.
  • Os dados de contato são armazenados no banco de dados, mas seria útil ter um painel de administrador para ver uma lista de contatos.
  • O formulário está fixado às minhas necessidades atuais, mas seria útil ter alguma flexibilidade sobre quais campos ele solicita.

  1. Essa configuração padrão é “contact@example.com”, mas pode ser ajustada para aceitar e-mails reais. ↩︎

  2. É até possível responder ao formulário de contato, para o bem ou para o mal. ↩︎

13 curtidas

Isso não está funcionando. Você pode atualizar @jericson

Funcionando para mim.

1 curtida

Não é um tema, é um plugin. Veja Install plugins on a self-hosted site.

5 curtidas

Instalei. Adicionei meu e-mail em contact_form_email, habilitei email_in, adicionei 'everyone' em email in allowed groups, enable_staged_users. Tentei o formulário, não recebi nenhum e-mail.

2 curtidas

Ótimo negócio! Pode ajudar futuros leitores saber o que resolveu para você.

Não instalando o plugin como um tema, eu acho :wink:

1 curtida

Você pode postar algumas capturas de tela do plugin em ação? O “Formulário de Contato” pode ser modificado/configurado?

1 curtida

Com certeza! Veja a postagem editada.

Infelizmente não. Mas Pull Requests são bem-vindos!

1 curtida

Plugin bem legal. O endereço de e-mail falsificado não é exibido para o usuário final, presumo.

Correto. Eu tenho outro plugin (ainda mais rudimentar que este) para obter avaliações anônimas. Eu uso review@example.com para rotear essas mensagens para o destino apropriado. É apenas uma string.

1 curtida

Atualizei recentemente o plugin, pois ele estava falhando nas versões mais recentes do Discourse.

4 curtidas