Flux de modifications d'automatisation personnalisée pour une intégration réussie sur le plugin Automation

Salut à tous,

J’essaie de créer une automatisation personnalisée qui, lorsqu’une requête est marquée comme solution/résolue, envoie un message privé (ou alternativement, crée une nouvelle réponse dans le fil avec un message prédéfini - dans les deux cas, ce serait un sondage) au créateur du sujet.

Il doit s’agir d’une automatisation personnalisée, car le script “envoyer des messages privés” disponible dans le plugin d’automatisation envoie les messages privés à la personne qui a envoyé la réponse marquée comme solution/résolue (et non à la personne qui a créé le sujet, comme prévu dans mon cas d’utilisation).

Ci-dessous se trouve le script que j’ai créé pour tenter de publier une nouvelle réponse dans le sujet une fois qu’une réponse est marquée comme solution (dans l’exemple suivant, je n’envoie pas le sondage comme réponse, je laisse simplement la liberté à l’administrateur de choisir ce qui sera renvoyé ou de le laisser par défaut) :

# 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")
  
      # Publier une réponse dans le sujet où une solution a été marquée
      PostCreator.create!(
        Discourse.system_user,
        topic_id: topic.id,
        raw: reply_text || "Une solution a été marquée pour ce sujet !",
      )
    end
  end

Mais je ne suis pas sûr s’il faut utiliser PostCreator.create!, PostCreator.reply, ou peut-être autre chose. Ce qui m’amène à une question :

  • Existe-t-il une documentation sur les mots-clés à utiliser lors de la création d’un script d’automatisation personnalisé ?

Sur la base de l’automatisation ci-dessus, une fois que je la déclenche en marquant une réponse comme solution, après 1 seconde, je reçois un message pop-up avec un message d’erreur “500 internal server error” à l’écran.

  • Est-ce que je manque quelque chose ? Mon déploiement a été effectué à l’aide de devcontainers, sur ma machine locale à des fins de test de développement.
  • Que faut-il faire, après la création du script personnalisé ? Peut-être que quelque chose me manque dans cette phase ? Ou peut-être est-ce un problème dans le script lui-même ?
  • Existe-t-il une documentation sur les étapes à suivre après la création de votre script ? Par exemple : quels fichiers doivent être modifiés pour que tout fonctionne correctement ? (J’ai découvert à la dure qu’il fallait modifier le fichier client.en.yml pour que le nom et la description corrects s’affichent dans la liste des automatisations)

Je prévois de tenter, en me basant sur le script intégré “envoyer des messages privés”, de modifier mon script pour qu’au lieu de créer une réponse, il envoie des messages privés, mais je ne suis pas sûr de ce qui suit :

  • comment puis-je identifier la personne qui a créé le sujet et non celle qui a marqué la réponse comme solution ?

Merci beaucoup d’avance pour tout conseil et aide.

Avez-vous suivi ce guide ?

1 « J'aime »

Salut @NateDhaliwal,

Merci beaucoup pour votre réponse.

Oui, j’ai suivi ce guide… Je commenterai le guide avec quelques suggestions par la suite.

J’ai réussi à faire fonctionner l’automatisation personnalisée.

Le problème avec l’erreur interne du serveur 500 était que j’étiquetais le mauvais « contexte », je l’ai découvert en examinant les journaux et en étiquetant le bon.

Une fois que le contenu du bon contexte a été ajouté à une variable, l’erreur interne du serveur 500 a été résolue.

La logique ultérieure du code a également été modifiée.

Edit : Pour faire fonctionner l’automatisation personnalisée dans mon instance déployée localement, j’ai également dû modifier les fichiers suivants :

Créez votre script d’automatisation personnalisé

Mise à jour : server.en.yml

ajoutez le nom de l’automatisation personnalisée ; le titre ; et la description dans la section scriptables du fichier yml.

Mise à jour : client.en.yml

ajoutez le nom de l’automatisation personnalisée dans scriptables ; ajoutez le mot-clé ‘field’ ; à l’intérieur du mot-clé field, ajoutez ‘field_name’ suivi de ‘label’ et ‘description’

Mise à jour : scripts.rb

ajoutez le nom de l’automatisation personnalisée dans la liste des scripts. Exemple : FILE_NAME = “file_name”

Mise à jour : plugin.rb

à l’intérieur de ‘after_initialize do’, ajoutez le chemin vers le script d’automatisation personnalisé. Exemple : ‘lib/discourse_automation/scripts/file_name’

1 « J'aime »

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