Automatización personalizada: flujo de modificaciones para una integración exitosa en el plugin Automation

Hola a todos,

Estoy intentando crear una automatización personalizada que, cuando una consulta se marca como solución/resuelto, el creador del tema reciba un mensaje privado (o, alternativamente, se cree una nueva respuesta en el hilo con un mensaje predefinido; en ambos casos, sería una encuesta).

Necesita ser una automatización personalizada, ya que el script “enviar mensajes privados” disponible actualmente en el complemento de automatización envía los mensajes privados a quien haya enviado la respuesta que se marcó como solución/resuelto (y no a la persona que creó el tema, como se pretende en mi caso de uso).

A continuación, se muestra el script que he creado para intentar publicar una nueva respuesta en el tema una vez que se marca una respuesta como solución (en el siguiente ejemplo, no envío la encuesta como respuesta, solo doy la libertad al administrador de elegir qué se devolverá o dejarlo como predeterminado):

# frozen_string_literal: true

DiscourseAutomation::Scriptable.add(DiscourseAutomation::Scripts::REPLY_ON_SOLUTION) do
    field :reply_text, component: :text
    # field :answering_user, component: :user
    field :once, component: :boolean
  
    version 1
  
    triggerables %i[:first_accepted_solution] if defined?(DiscourseSolved)
  
    placeholder :sender_username
    placeholder :word
  
    script do |context, fields, automation|
      topic = context["topic"]
      # user = context["user"]
      reply_text = fields.dig("reply_text", "value")
  
      # Publicar una respuesta en el tema donde se marcó una solución
      PostCreator.create!(
        Discourse.system_user,
        topic_id: topic.id,
        raw: reply_text || "¡Se ha marcado una solución para este tema!",
      )
    end
  end

Pero no estoy seguro de si debería ser PostCreator.create!, PostCreator.reply, o quizás algo más. Lo que me lleva a una pregunta:

  • ¿Hay algún lugar donde se documenten las palabras clave que se deben usar al crear un script de automatización personalizado?

Basado en la automatización anterior, una vez que la activo marcando una respuesta como solución, después de 1 segundo, recibo un mensaje emergente con un mensaje de error interno del servidor 500 en la pantalla.

  • ¿Me falta algo? Mi implementación se realizó utilizando devcontainers, en mi máquina local para fines de prueba de desarrollo.
  • ¿Qué es necesario hacer, después de crear el script personalizado? ¿Quizás me falta algo en esta fase? ¿O tal vez es un problema en el script en sí?
  • ¿Está documentado en algún lugar los pasos a seguir después de que su script esté listo? Por ejemplo: ¿qué archivos deben modificarse para que todo funcione sin problemas? (Descubrí por las malas que necesitaba cambiar el client.en.yml para que el nombre y la descripción correctos aparecieran en la lista de automatización).

Planeo intentarlo, basándome en el script incorporado de enviar mensajes privados, para cambiar mi script y que en lugar de crear una respuesta, envíe mensajes privados, pero no estoy seguro de lo siguiente:

  • ¿Cómo etiquetaría a la persona que creó el tema y no a la que se le marcó la respuesta como solución?

¡Muchas gracias de antemano por cualquier indicación y ayuda!

¿Seguiste esta guía?

1 me gusta

Hola @NateDhaliwal ,

Muchas gracias por tu respuesta.

Sí, he seguido esa guía… Comentaré la guía con algunas sugerencias después.

Por cierto, hice que la automatización personalizada funcionara.

El problema con el error interno del servidor 500 fue que estaba etiquetando el “contexto” equivocado, lo descubrí mirando los logs y etiquetando el correcto.

Una vez que el contenido del contexto correcto se agregó a una variable, el error interno del servidor 500 se resolvió.

También se modificó lógica adicional en el código.

Editar: Para que la automatización personalizada funcione en mi instancia local desplegada, también tuve que modificar los siguientes archivos:

Crea tu script de automatización personalizado

Actualización: server.en.yml

agrega el nombre de la automatización personalizada; título; y descripción en la sección de scriptables del archivo yml.

Actualización: client.en.yml

agrega el nombre de la automatización personalizada en scriptables; agrega la palabra clave ‘field’; dentro de la palabra clave field agrega ‘field_name’ seguido de ‘label’ y ‘description’

Actualización: scripts.rb

agrega el nombre de la automatización personalizada en la lista de scripts. Ejemplo: FILE_NAME = “file_name”

Actualización: plugin.rb

dentro de ‘after_initialize do’, agrega la ruta al script de automatización personalizado. Ejemplo: ‘lib/discourse_automation/scripts/file_name’

1 me gusta

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.