Formulário de Contato

Quebrado no Discourse mais recente

Recentemente atualizei o Discourse e este plugin quebrou o site. (Para ser claro, isso é mais provável que seja resultado dos meus hacks horríveis do que do próprio Discourse. Atualmente não tenho largura de banda para encontrar a solução, então estou apenas deixando este aviso para os outros.)

:information_source: Resumo Adiciona um formulário de contato no topo de qualquer tópico marcado como contact. As informações enviadas através do formulário serão enviadas para o 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

Funcionalidades

Quando ativado, o plugin Formulário de Contato coloca um formulário de contato no topo de qualquer tópico marcado com contact. Os dados enviados através do formulário são enviados para uma categoria ou grupo configurado para receber e-mails de contact_form_email.[1] Assim como os formulários de contato tradicionais, não há exigência de ter uma conta no site para enviar.

Veja o que um visitante pode ver:

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

Dependendo de como suas 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 o e-mail de entrada 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-mail de fato. Ele sequestra a API para simular e-mail de entrada. (Dito isto, a resposta por e-mail é um recurso útil!)

Em particular, este plugin requer:

  • email_in e
  • enable_staged_users

para estarem habilitados.

Uma vez ativado, qualquer tópico marcado com contact terá um formulário de contato adicionado ao outlet do plugin 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 lidarão com os contatos. (Eu geralmente o chamo de “Contato” por simplicidade, mas pode ser qualquer coisa, incluindo um grupo existente.)
  2. Adicione 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” para ser o mesmo que a configuração contact_form_email. (Por padrão, este é “contact@example.com”.)

Enviar para uma categoria

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

Enviar para uma categoria não é recomendado para informações de contato, no entanto! 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 em vez disso.

Limitando quem pode adicionar formulários de contato

Pode ser bem estranho ter formulários de contato surgindo em todo lugar, 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 de boca 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, “Somente equipe”), adicione a tag contact e selecione “Tags são visíveis para todos, mas apenas os seguintes grupos podem usá-las”.
  4. Escolha o grupo que você deseja permitir adicionar um formulário de contato (geralmente “staff” ou “admins”) e salve o grupo de tags.

REGISTRO DE MUDANÇAS (CHANGELOG)

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

A FAZER (TODO)

  • Eu gostaria de configurar testes para garantir que nada quebre quando eu fizer alterações. Eu particularmente quero verificar se pessoas sem contas podem enviar seus dados.
  • Durante os testes, descobri um grande vazamento de dados. Removi essa vulnerabilidade em particular, mas realmente poderia usar alguma ajuda para testar.
  • O formulário não faz nenhuma validação. O único requisito 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 da qualidade de meu-primeiro-plugin com base em exemplos que usavam convenções desatualizadas. Quaisquer sugestões sobre o estilo são bem-vindas.
  • Eu gosto de ter o formulário de contato associado a um tópico marcado como “contact”, mas é complicado e provavelmente desnecessário. Estou pensando em 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 administração para ver uma lista de contatos.
  • O formulário está fixo para meus requisitos atuais, mas seria útil ter alguma flexibilidade sobre quais campos ele solicita.

  1. Essa configuração tem como padrão “contact@example.com”, mas pode ser configurada 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