E realmente gostaríamos de um exemplo funcional de um plugin que tenha uma ação do tipo envio de formulário incorporada. Nosso plugin tem duas coisas, em um nível geral:
alguns itens de configuração
um formulário onde um usuário inseriria algum texto e, em seguida, ‘enviaria’ para processamento
Portanto, se alguém conhecer algum plugin que tenha esses dois tipos de recursos, agradeceríamos muito um link para que possamos revisar como ele funciona.
Você pode falar mais sobre o que você está fazendo? O que você está mudando com o formulário? Isso pode ser um componente de tema? O que você está enviando é para um endpoint existente ou um que você está adicionando?
@pfaffman Queremos criar um formulário simples que solicite ao usuário quatro coisas:
Remetente
Destinatário
Assunto
Corpo
O usuário preencherá esses campos e, em seguida, clicará em um botão para acionar um endpoint que enviará o e-mail.
Especificamente, o formulário incluirá os quatro elementos e, uma vez que o botão “Enviar” for clicado, ele invocará o endpoint para enviar a mensagem.
Não tenho certeza se é exatamente o que você está procurando, mas o objetivo principal é permitir que um usuário administrador insira texto (o assunto e o corpo do e-mail) e clique em um botão para enviá-lo a um usuário no Discourse.
No futuro, gostaríamos de estender isso para que o usuário possa acionar várias mensagens de um remetente para vários destinatários. Queremos manipular parâmetros como o número total de mensagens e o atraso entre cada uma, para controlar quantas mensagens são enviadas e quão espaçadas elas estão.
Talvez voltar um passo atrás e descrever o problema real que você está tentando resolver.
Você quer dizer que quer enviar um e-mail direto (para que a mensagem não exista no Discourse), ou que quer enviar uma mensagem privada que vá para o usuário (que na maioria dos casos gerará uma notificação por e-mail).
Você quer mudar quem é o remetente da mensagem privada? Essa parece ser a única coisa que está faltando na interface existente de mensagens privadas, é isso mesmo?
Obrigado pela clarificação! Para fornecer um pouco mais de contexto, estamos lidando com uma grande base de usuários e queremos reengajar usuários que não interagiram com nosso aplicativo há algum tempo. O objetivo é enviar uma mensagem privada (PM) para um grande número de usuários de um remetente específico, com controle sobre vários parâmetros:
Remetente: O usuário administrador irá especificar o nome de usuário do remetente diretamente no formulário.
Assunto e Corpo: O administrador pode personalizar tanto o assunto quanto o corpo da PM.
Controle de volume: Queremos controlar quantas mensagens são enviadas de uma vez para evitar spam para os usuários.
Timing: A principal preocupação é garantir que podemos controlar a velocidade de envio das mensagens, para evitar sobrecarregar nosso domínio de email e ser marcados como spam. Precisamos ser capazes de espaçar as mensagens definindo atrasos entre cada mensagem (e o email correspondente) para evitar disparar filtros de spam.
O objetivo final é fazer com que os usuários abram a mensagem privada (que também gerará uma notificação por email) e incentivá-los a retornar ao nosso aplicativo.
Já temos um script Ruby simples que consegue realizar essa tarefa e está totalmente funcionando. Atualmente, estamos ativando-o manualmente acessando a VM via SSH, o que é um pouco inconveniente. O que gostaríamos agora é adaptar esse script para um plugin, para que um administrador possa acioná-lo facilmente via interface, com a possibilidade de inserir as configurações (remetente, assunto, corpo, número de mensagens, atraso entre elas, etc.) diretamente na interface administrativa.
Queremos alcançar isso através de uma interface de plugin que permita ao administrador inserir facilmente essas configurações, acionar o processo e monitorar o progresso das mensagens enviadas.
Provavelmente eu faria algo como ter os usuários em um grupo e planejar enviar para todos os usuários do grupo. Quando uma mensagem fosse enviada, você definiria um valor em um user_custom_field e usaria algum tópico existente como o texto e o remetente da mensagem. Um trabalho rodaria periodicamente e enviaria a quantidade de mensagens que você desejar. Eu colocaria o grupo e o valor do campo personalizado nas configurações.
Assim, você não precisaria de uma interface ou criar uma nova rota; você poderia simplesmente usar as configurações existentes. E poderia ver o que aconteceu usando o explorador de dados, então não precisaria desenvolver uma interface para nenhum dos dois.
Mas se você quiser fazer alguns campos que as pessoas preencham na UX, deve conferir o cForme que mencionei anteriormente.