用户更新自动化后:能否仅由一个必填字段触发,同时可选地包含其他(如存在的)个人资料/自定义字段?

我正尝试使用 创建帖子 脚本配合 用户更新后 触发器,以实现新用户介绍/通知工作流,但我不确定自己是否正确理解了文档中提到的限制,或者是否存在受支持的变通方法。

我已经阅读了以下内容:

我的使用场景

我希望在新用户完成 必填 的注册/个人资料字段时,自动创建一篇帖子。

同时,我希望该帖子还能包含一些 可选 的自定义用户字段(如果用户填写了的话),例如:

  • 代词/性别
  • 语言
  • 确认已理解社区准则

因此,预期的行为是:

  • 一个必填字段 确保自动化被触发
  • 其他可选字段 仅在用户填写时才会包含在帖子中

我遇到的困惑

该触发器的文档说明:

只有当用户填写了所有指定字段后,自动化才会触发。

UI 上也显示:

仅当用户填写了所有这些字段时才会触发

因此,据我理解,如果我在触发器配置中添加了可选字段以便使用它们的占位符,那么对于自动化而言,这些字段就不再是“可选”的了,因为自动化只有在所有字段都填写完成后才会触发。

这似乎形成了一个两难困境:

  • 如果我将可选字段包含在触发器中,那么对于跳过这些字段的用户,自动化可能永远不会触发
  • 如果我不将这些字段包含在触发器中,那么我可能无法在帖子中可靠地使用它们的占位符

我的问题

  1. 我对当前行为的理解是否正确?
  2. 文档中提到的限制目前是否仍然准确?
  3. 是否存在任何受支持的方式可以:
    • 一个必填字段 触发自动化
    • 同时,如果存在,仍能在帖子内容中访问 其他可选的自定义/个人资料字段
  4. 如果不行,针对此用例是否有推荐的变通方法?

理想行为

我希望实现的效果类似于:

  • 任意必填触发条件 满足时触发
  • 如果存在值,则替换可选占位符
  • 如果不存在值,则留空、保持不变或省略可选占位符

但我不确定这是否已经可行,还是我仅仅配置有误。

任何指导都将不胜感激。

谢谢!

您应该能够在自定义字段上触发操作,并将个人资料字段添加到帖子内容部分。

例如,如果触发条件是确认指南,那么在帖子内容中您可以这样写:

大家好!我是新来的
{{#pronouns}}我的代词是{{pronouns}}{{/pronouns}}
{{#languages}}我会说{{languages}}{{/languages}}

这正是您想要的吗?

是的。

所以我本应提及确切的字段名称。抱歉。

  • 代词/性别
  • 语言
  • 社区准则(已理解)

我正在生成的帖子只是发往一个正在进行的员工线程,以便提醒新用户的加入。

我不太清楚如何使用您建议的格式,也不知道如何转换包含符号的字段名称。我只是想要一个列表。我应该这样做吗?

* {{#pronouns/gender}} {{pronouns/gender}}{{pronouns/gender}}
* {{#languages}} {{languages}}{{/languages}}
* {{#community_guidelines_(understood)}} {{/community_guidelines_(understood)}}{{community_guidelines_(understood)}}

我是否只需在字段名称中去掉符号字符?

我可以继续尝试,但由于这些字段是可选的(而且我也不想创建大量测试新用户),测试可能需要一些时间。

问得好,粗略一看,带符号的字段名确实可能导致自动化无法运行……我们这边可能需要稍作更新,以便针对此类用途将其移除。

能否暂时移除自定义字段中的符号?{{pronouns_or_gender}}{{community_guidelines_undersood}} 在没有符号的情况下应该可以正常用于自动化。

由于目前没有符号,我暂时先放入语言一。我也会尝试其他选项。

你能解释一下 {{#foo}} {{/foo}}{{foo}} 的模式吗?

好的,{{foo}} 是字段本身,而包裹它的 {{#foo}} {{/foo}} 是一个条件块。因此,如果 foo 未填写,{{#foo}} {{/foo}} 之间的内容将不会渲染。

例如,如果你写了

我的名字是 {{foo}}

foo 未定义,帖子中只会显示“我的名字是”。

但如果你使用

{{#foo}}我的名字是 {{foo}}{{/foo}}

foo 未定义,那么“我的名字是”也会被排除在帖子之外。

哦!真讲究!

所以我在想,测试各种变体是否会导致整个流程失败?也就是说,根本不会创建新帖子。如果不是的话,那我就可以尝试各种带符号的字段组合,看看哪些能更快生效。

好的,好消息。

这个可以工作:

* 语言:{{languages}}

但以下这些不行:

* 代词:{{pronouns_gender}}
* 指南:{{community_guidelines_understood}} 

提醒一下,这些是字段名称:

Pronouns/gender
Community Guidelines (understood)

我将尝试:

* 代词:{{pronouns/gender}}
* 指南:{{community_guidelines_(understood)}} 

如果这不起作用,也许我们需要修复代码?我宁愿不更改字段名称。

好的,结果发现并非如此。

而且保留括号 里面会破坏自动化。日志中出现了以下错误:

Mustache::Parser::SyntaxError (未闭合的标签
  第 12 行
    * guidelines: {{community_guidelines_(understood)}}
                                        ^
)

那么,我是否需要提交一个 bug 或功能请求,以便从字段名中移除这些符号?

哦,是的,抱歉,刚才表述不清。只有从自定义字段中移除特殊符号后,它们才能在自动化中生效……Discourse 需要进行一些调整,以自动去除特殊字符,这样它们才能按照您当前的配置用于自动化。