Ejemplo de cualquier plugin con formulario que envíe una solicitud POST

Hola a todos!

Estamos trabajando para intentar desbloquear un desarrollo de plugin que estamos haciendo aquí en Error "Unable to configure link to 'Auto Send Messages'. Ensure ad-blockers are disabled and try reloading the page."

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.

¡Gracias!

¿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?

Ver Discourse toolkit to render forms

Luego puedes obtener GitHub - discourse/all-the-plugins y buscar “Form” pero también puedes ver Code search results · GitHub como se describe en Discourse toolkit to render forms - #20 by david (aunque todos esos están en el núcleo, no en plugins)

Quizás ver discourse-data-explorer/assets/javascripts/discourse/components/param-input-form.gjs at main · discourse/discourse-data-explorer · GitHub

2 Me gusta

FormKit es bastante nuevo.

Ni siquiera he actualizado el plugin de Ubicaciones para usarlo todavía.

(Pero es definitivamente lo correcto a usar si se empieza de nuevo :+1:)

1 me gusta

Eso es muy cierto. Sigue siendo lo que recomendaría para alguien que escribe código nuevo.

Lo he utilizado para algo nuevo en lo que estoy trabajando. (¡Y puedes verme quejándome mucho al respecto en el tema sobre ello!)

2 Me gusta

@pfaffman Queremos crear un formulario simple que solicite al usuario cuatro cosas:

  1. Remitente
  2. Destinatario
  3. Asunto
  4. 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?

1 me gusta

¡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:

  1. Remitente: El usuario administrador especificará el nombre de usuario del remitente directamente en el formulario.
  2. Asunto y Cuerpo: El administrador puede personalizar tanto el asunto como el cuerpo del PM.
  3. Control de volumen: Queremos controlar cuántos mensajes se envían a la vez para evitar hacer spam a los usuarios.
  4. 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.

1 me gusta

Eso es muchas piezas.

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.

1 me gusta