one1
1
我正尝试使用 创建帖子 脚本配合 用户更新后 触发器,以实现新用户介绍/通知工作流,但我不确定自己是否正确理解了文档中提到的限制,或者是否存在受支持的变通方法。
我已经阅读了以下内容:
我的使用场景
我希望在新用户完成 必填 的注册/个人资料字段时,自动创建一篇帖子。
同时,我希望该帖子还能包含一些 可选 的自定义用户字段(如果用户填写了的话),例如:
因此,预期的行为是:
- 一个必填字段 确保自动化被触发
- 其他可选字段 仅在用户填写时才会包含在帖子中
我遇到的困惑
该触发器的文档说明:
只有当用户填写了所有指定字段后,自动化才会触发。
UI 上也显示:
仅当用户填写了所有这些字段时才会触发
因此,据我理解,如果我在触发器配置中添加了可选字段以便使用它们的占位符,那么对于自动化而言,这些字段就不再是“可选”的了,因为自动化只有在所有字段都填写完成后才会触发。
这似乎形成了一个两难困境:
- 如果我将可选字段包含在触发器中,那么对于跳过这些字段的用户,自动化可能永远不会触发
- 如果我不将这些字段包含在触发器中,那么我可能无法在帖子中可靠地使用它们的占位符
我的问题
- 我对当前行为的理解是否正确?
- 文档中提到的限制目前是否仍然准确?
- 是否存在任何受支持的方式可以:
- 由 一个必填字段 触发自动化
- 同时,如果存在,仍能在帖子内容中访问 其他可选的自定义/个人资料字段?
- 如果不行,针对此用例是否有推荐的变通方法?
理想行为
我希望实现的效果类似于:
- 当 任意必填触发条件 满足时触发
- 如果存在值,则替换可选占位符
- 如果不存在值,则留空、保持不变或省略可选占位符
但我不确定这是否已经可行,还是我仅仅配置有误。
任何指导都将不胜感激。
谢谢!
您应该能够在自定义字段上触发操作,并将个人资料字段添加到帖子内容部分。
例如,如果触发条件是确认指南,那么在帖子内容中您可以这样写:
大家好!我是新来的
{{#pronouns}}我的代词是{{pronouns}}{{/pronouns}}
{{#languages}}我会说{{languages}}{{/languages}}
这正是您想要的吗?
one1
3
是的。
所以我本应提及确切的字段名称。抱歉。
我正在生成的帖子只是发往一个正在进行的员工线程,以便提醒新用户的加入。
我不太清楚如何使用您建议的格式,也不知道如何转换包含符号的字段名称。我只是想要一个列表。我应该这样做吗?
* {{#pronouns/gender}} {{pronouns/gender}}{{pronouns/gender}}
* {{#languages}} {{languages}}{{/languages}}
* {{#community_guidelines_(understood)}} {{/community_guidelines_(understood)}}{{community_guidelines_(understood)}}
我是否只需在字段名称中去掉符号字符?
我可以继续尝试,但由于这些字段是可选的(而且我也不想创建大量测试新用户),测试可能需要一些时间。
问得好,粗略一看,带符号的字段名确实可能导致自动化无法运行……我们这边可能需要稍作更新,以便针对此类用途将其移除。
能否暂时移除自定义字段中的符号?{{pronouns_or_gender}} 和 {{community_guidelines_undersood}} 在没有符号的情况下应该可以正常用于自动化。
one1
5
由于目前没有符号,我暂时先放入语言一。我也会尝试其他选项。
你能解释一下 {{#foo}} {{/foo}}{{foo}} 的模式吗?
好的,{{foo}} 是字段本身,而包裹它的 {{#foo}} {{/foo}} 是一个条件块。因此,如果 foo 未填写,{{#foo}} {{/foo}} 之间的内容将不会渲染。
例如,如果你写了
我的名字是 {{foo}}
而 foo 未定义,帖子中只会显示“我的名字是”。
但如果你使用
{{#foo}}我的名字是 {{foo}}{{/foo}}
且 foo 未定义,那么“我的名字是”也会被排除在帖子之外。
one1
7
哦!真讲究!
所以我在想,测试各种变体是否会导致整个流程失败?也就是说,根本不会创建新帖子。如果不是的话,那我就可以尝试各种带符号的字段组合,看看哪些能更快生效。
one1
8
好的,好消息。
这个可以工作:
* 语言:{{languages}}
但以下这些不行:
* 代词:{{pronouns_gender}}
* 指南:{{community_guidelines_understood}}
提醒一下,这些是字段名称:
Pronouns/gender
Community Guidelines (understood)
我将尝试:
* 代词:{{pronouns/gender}}
* 指南:{{community_guidelines_(understood)}}
如果这不起作用,也许我们需要修复代码?我宁愿不更改字段名称。
one1
9
好的,结果发现并非如此。
而且保留括号 在 里面会破坏自动化。日志中出现了以下错误:
Mustache::Parser::SyntaxError (未闭合的标签
第 12 行
* guidelines: {{community_guidelines_(understood)}}
^
)
那么,我是否需要提交一个 bug 或功能请求,以便从字段名中移除这些符号?
哦,是的,抱歉,刚才表述不清。只有从自定义字段中移除特殊符号后,它们才能在自动化中生效……Discourse 需要进行一些调整,以自动去除特殊字符,这样它们才能按照您当前的配置用于自动化。