Y realmente nos vendría bien un ejemplo funcional de un plugin que tenga una acción de tipo envío de formulario incorporada. Nuestro plugin tiene dos cosas, a alto nivel:
algunos elementos de configuración
un formulario en el que un usuario introduciría texto y luego ‘enviaría’ para procesar
Por lo tanto, si alguien conoce algún plugin que tenga estas dos características, agradeceríamos mucho un enlace para poder revisar cómo funciona.
¿Puedes decir más sobre lo que estás haciendo? ¿Qué estás cambiando con el formulario? ¿Puede esto ser un componente temático? ¿Lo que estás enviando es a un endpoint existente o a uno que estás agregando?
@pfaffman Queremos crear un formulario simple que solicite al usuario cuatro cosas:
Remitente
Destinatario
Asunto
Cuerpo
El usuario completará estos campos y luego hará clic en un botón para activar un endpoint que envíe el correo electrónico.
Específicamente, el formulario incluirá los cuatro elementos y, una vez que se haga clic en el botón “Enviar”, invocará el endpoint para enviar el mensaje.
No estoy seguro de si eso es exactamente lo que buscas, pero el objetivo principal es permitir que un usuario administrador ingrese texto (el asunto y el cuerpo del correo electrónico) y haga clic en un botón para enviarlo a un usuario en Discourse.
En el futuro, nos gustaría extender esto para que el usuario pueda activar múltiples mensajes de un remitente a varios destinatarios. Queremos manipular parámetros como el número total de mensajes y el retraso entre cada uno, para controlar cuántos mensajes se envían y qué tan espaciados están.
Quizás retroceda un paso más y describa el problema real que está intentando resolver.
¿Quiere decir que desea enviar un correo electrónico directo (para que el mensaje no exista en Discourse) o que desea enviar un mensaje privado que llegue al usuario (que en la mayoría de los casos generará una notificación por correo electrónico)?
¿Quiere cambiar quién es el remitente del mensaje privado? Esa parece ser la única pieza que falta en la interfaz de mensajes privados existente, ¿es correcto?
¡Gracias por la aclaración! Para dar un poco más de contexto, estamos trabajando con una gran base de usuarios y queremos volver a involucrar a aquellos que no han interactuado con nuestra aplicación desde hace un tiempo. El objetivo es enviar un mensaje privado (PM) a un gran número de usuarios desde un remitente específico, con control sobre varios parámetros:
Remitente: El usuario administrador especificará el nombre de usuario del remitente directamente en el formulario.
Asunto y Cuerpo: El administrador puede personalizar tanto el asunto como el cuerpo del PM.
Control de volumen: Queremos controlar cuántos mensajes se envían a la vez para evitar hacer spam a los usuarios.
Tiempo: La principal preocupación es asegurarnos de poder controlar la velocidad a la que se envían los mensajes, para evitar sobrecargar nuestro dominio de correo electrónico y que nos marquen como spam. Necesitaremos poder espaciar los mensajes definiendo retrasos entre cada mensaje (y el correo electrónico correspondiente) para evitar activar los filtros de spam.
El objetivo final es que los usuarios abran el mensaje privado (lo cual también generará una notificación por correo electrónico) y que se sientan motivados a volver a nuestra aplicación.
Ya tenemos un script simple en Ruby que puede realizar esta tarea y funciona perfectamente. Actualmente, lo activamos manualmente accediendo a la VM vía SSH, lo cual resulta un poco engorroso. Lo que nos gustaría ahora es adaptar este script en un plugin para que un administrador pueda activarlo fácilmente desde la interfaz de usuario, con la posibilidad de ingresar la configuración (remitente, asunto, cuerpo, número de mensajes, retraso entre ellos, etc.) directamente desde la interfaz administrativa.
Queremos lograr esto mediante una interfaz de plugin que permita al administrador ingresar fácilmente estas configuraciones, activar el proceso y monitorear el avance del envío de los mensajes.
Probablemente haría algo como tener a los usuarios en un grupo y planear enviarles a todos en el grupo. Cuando se envía un mensaje, establecerías un valor en un user_custom_field y usarías algún tema existente como el texto y el remitente del mensaje. Un trabajo se ejecutaría periódicamente y enviaría la cantidad de mensajes que quieras. Pondría el grupo y el valor del campo personalizado en la configuración.
Luego, no necesitarías una interfaz ni crear una nueva ruta; simplemente podrías usar la configuración existente. Y podrías ver lo que había pasado usando el explorador de datos, así que tampoco necesitarías desarrollar una interfaz para ninguno.
Pero si quieres hacer algunos campos que la gente ingrese en la UX, deberías consultar lo que mencioné previamente, la cosa Form.