사용자 지정 자동화 만들기

문제가 없이 직접 스크립트를 만들 수 있나요? 그냥 폴더에 넣으면 되고, 플러그인 업데이트 시에도 아무 문제가 없는 건가요? 아니면 이 플러그인과 인터페이스하는 플러그인을 직접 만들어야 하나요? 예를 들어, 토픽을 생성하는 스크립트가 필요합니다. 게시글 생성 스크립트는 있지만, 자동화된 토픽 생성 기능이 필요하거든요. 감사합니다!

네, 커스텀 스크립트를 정의하려면 플러그인이 필요합니다.

plugin.rb에 다음과 같은 코드를 추가하세요.

after_initialize do
  if defined?(DiscourseAutomation)
    add_automation_scriptable("my_custom_script") do
      # ...
    end
  end
end

시도해 보았지만 다음과 같은 메시지가 표시됩니다:

자동화 testing에 대한 스크립트 lb-script를 찾을 수 없습니다. 관련 플러그인이 설치되어 있는지 확인하세요

제가 잘못 알고 있는 것일 수 있지만, 별도의 파일을 생성해야 하는지, 아니면 모든 것을 plugin.rb 파일에 넣어도 되는지 궁금합니다.

코드를 보여주세요. 그렇지 않으면 도와드리기 어려울 수 있습니다 :slight_smile:

Automation 플러그인의 scripts 폴더에서 복사한 post 스크립트로 방금 시도해 보았습니다:

after_initialize do
    if defined?(DiscourseAutomation)
        add_automation_scriptable("lb-script") do
            version 1

            placeholder :creator_username
          
            field :creator, component: :user
            field :topic, component: :text, required: true
            field :post, component: :post, required: true
          
            triggerables %i[recurring point_in_time]
          
            script do |context, fields, automation|
              creator_username = fields.dig("creator", "value") || Discourse.system_user.username
          
              placeholders = { creator_username: creator_username }.merge(context["placeholders"] || {})
          
              creator = User.find_by!(username: creator_username)
          
              PostCreator.new(
                creator,
                topic_id: fields.dig("topic", "value"),
                raw: fields.dig("post", "value"),
              ).create!
            end
        end
    end
end

여기서 무엇을 하려는지에 대한 맥락이 부족합니다. 외부 플러그인에서 완전히 구현된 예시를 공유합니다: discourse-assign/plugin.rb at main · discourse/discourse-assign · GitHub

제가 한 일과 어떤 차이가 있는지 이해가 되지 않습니다. 분명히 저는 동작하는지 확인하기 위해 단순히 post 스크립트를 사용했을 뿐입니다. 그런데 자동화를 생성하려고 하면 트리거를 찾지 못한다고 하고, 스크립트를 찾을 수 없다고 합니다. 하지만 코드를 보면 게시글을 생성하기 위해 두 가지 트리거 중 하나를 선택할 수 있어야 하는 거 아닌가요? 분명 제가 잘못 알고 있는 것 같은데, 솔직히 잘 이해가 되지 않습니다.

새 플러그인이 활성화되어 있는지 확인해 보셨나요?

네, 물론이죠. 완전히 활성화되어 있습니다.

로컬에서 assign을 사용해 보시고, 목록에 표시되는지 확인해 볼 수 있을까요? 안 되면 다른 문제가 있는 것 같습니다.

Random Assign 기능이 Assign 플러그인이 비활성화되어 있는 상태에서도 작동한다는 것을 확인했습니다. 제가 놓치고 있는 부분이 있는 것 같은데, 시간을 낭비하고 싶지 않습니다.

문제가 무엇인지 파악했습니다.

lb-script를 lb_script로 변경하니 이제 작동합니다. 분명히 하이픈(-) 기호를 사용할 수 없었네요.