Всем привет,
Я пытаюсь создать кастомную автоматизацию, которая при отметке вопроса как решённого/решённого отправит создателю темы личное сообщение (или, альтернативно, создаст новый ответ в теме с заранее определённым сообщением — в обоих случаях это будет опрос).
Это должна быть кастомная автоматизация, так как текущий доступный скрипт «отправить ЛС» в плагине автоматизации отправляет сообщение тому, кто отправил ответ, помеченный как решение (а не тому, кто создал тему, как требуется в моём случае).
Ниже приведён скрипт, который я создал для попытки публикации нового ответа в теме после того, как ответ помечен как решение (в следующем примере я не отправляю опрос в качестве ответа, а даю администратору свободу выбора, что будет возвращено, или оставляю значение по умолчанию):
# 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")
# Опубликовать ответ в теме, где было отмечено решение
PostCreator.create!(
Discourse.system_user,
topic_id: topic.id,
raw: reply_text || "Для этой темы было отмечено решение!",
)
end
end
Но я не уверен, следует ли использовать PostCreator.create!, PostCreator.reply или, возможно, что-то другое. Это приводит меня к одному вопросу:
- Есть ли где-то документация по ключевым словам, которые нужно использовать при создании скрипта кастомной автоматизации?
На основе приведённой выше автоматизации, после того как я запускаю её, помечая ответ как решение, через 1 секунду появляется всплывающее окно с сообщением «500 internal server error» на экране.
- Я что-то упускаю? Моё развёртывание было выполнено с использованием devcontainers на моём локальном компьютере для целей тестирования разработки.
- Что необходимо сделать после создания кастомного скрипта? Возможно, я что-то упускаю на этом этапе? Или, может быть, проблема в самом скрипте?
- Есть ли где-то документация по шагам, которые нужно выполнить после завершения скрипта? Например, какие файлы нужно изменить, чтобы всё работало корректно? (Я выяснил сложным путём, что нужно изменить
client.en.yml, чтобы правильное имя и описание отображались в списке автоматизаций).
Я планирую попробовать, основываясь на встроенном скрипте «отправить ЛС», изменить свой скрипт так, чтобы вместо создания ответа отправлялось ЛС, но не уверен в следующем:
- Как мне отметить человека, который создал тему, а не того, чей ответ был помечен как решение?
Заранее большое спасибо за любые подсказки и помощь.