大家好,
我正在尝试创建一个自定义自动化,当一个查询被标记为解决方案/已解决时,主题的创建者将收到一条私信(或者,在主题中创建一个带有预定义消息的新回复 - 在这两种情况下,它都会是一个投票)。
这需要是一个自定义自动化,因为当前可用的“发送私信”脚本在自动化插件中会将私信发送给标记为解决方案/已解决的回复的发送者(而不是主题的创建者,正如我的用例中所期望的那样)。
下面是我创建的脚本,用于在标记了解决方案的回复后,尝试在主题中发布新回复(在下面的示例中,我没有将投票作为回复发送,只是让管理员自由选择要返回的内容或保持默认值):
# 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 || "A solution has been marked for this topic!",
)
end
end
但我不太确定应该是 PostCreator.create!,还是 PostCreator.reply,或者其他什么。这让我产生了一个问题:
- 是否有任何地方记录了在创建自定义自动化脚本时要使用的关键字?
基于上述自动化,一旦我通过标记回复为解决方案来触发它,1秒后,屏幕上就会出现一个带有“500内部服务器错误”消息的弹出窗口。
- 我是不是遗漏了什么?我的部署是使用 devcontainers 完成的,在我本地机器上进行开发测试。
- 在创建自定义脚本后需要做什么?也许我遗漏了这个阶段的什么东西?或者脚本本身有问题?
- 是否有任何地方记录了脚本完成后要遵循的步骤?例如:需要修改哪些文件才能让一切顺利工作?(我费了很大力才发现需要更改
client.en.yml以便在自动化列表中显示正确的名称和描述)
我计划尝试根据内置的 send pms 脚本,修改我的脚本,使其发送私信而不是创建回复,但我不确定以下几点:
- 我将如何标记创建主题的人,而不是标记那个将回复标记为解决方案的人?
非常感谢您提前提供的任何提示和帮助。