ユーザー更新自動化後:必須フィールド1つからトリガー可能か?存在する場合は他のプロフィール/カスタムフィールドも任意で含めるか?

新しいユーザー紹介/通知ワークフローにおいて、ユーザー更新後トリガー付きの投稿作成スクリプトを使用しようとしていますが、ドキュメントに記載されている制限を正しく理解しているのか、あるいはサポートされている回避策があるのか判断に迷っています。

すでに以下の記事を読みました:

私のユースケース

新しいユーザーが必須のサインアップ/プロフィール項目を完了した際に、自動化された投稿を作成したいと考えています。

同時に、その投稿には、ユーザーが入力した場合に限り、いくつかの任意のカスタムユーザーフィールドも含めたいと考えています。例えば以下のようなものです:

  • 代名詞/性別
  • 言語
  • コミュニティガイドラインの理解確認

したがって、意図した動作は以下のようになります:

  • 1 つの必須フィールドにより、自動化が発火することが保証される
  • その他の任意フィールドは、入力されている場合のみ投稿に含まれる

行き詰まっている点

トリガーのドキュメントには以下のように記載されています:

自動化は、ユーザーが指定されたすべてのフィールドを入力した後にのみ発火します。

UI でも以下のように表示されています:

ユーザーがこれらのすべてのフィールドを入力した場合にのみ発火します

つまり、プレースホルダーを使用するためにトリガー設定に任意フィールドを追加すると、自動化の観点からはそれらが任意ではなくなります。なぜなら、自動化はそれらすべてが入力されるまで発火しないからです。

これはジレンマを生み出しているように思えます:

  • 任意フィールドをトリガーに含めると、それらをスキップするユーザーに対して自動化が一度も発火しない可能性がある
  • トリガーに含めなければ、投稿内でそれらのプレースホルダーを確実に使用できない可能性がある

私の質問

  1. 現在の動作を正しく理解していますか?
  2. ドキュメントに記載されている制限は現在も正確ですか?
  3. 以下のことをサポートされている方法で行うことは可能ですか?
    • 1 つの必須フィールドから自動化を発火させる
    • ただし、存在する場合は投稿コンテンツ内で他の任意のカスタム/プロフィールフィールドにアクセスする
  4. 不可能な場合、このユースケースに対する推奨される回避策はありますか?

理想的な動作

私が期待しているのは、以下のような動作です:

  • 任意の必須トリガー条件が満たされたときに発火する
  • 値が存在する場合は任意のプレースホルダーを置換する
  • 値が存在しない場合は、任意のプレースホルダーを空白のまま、変更せず、または省略する

しかし、それがすでに可能で、単に設定を誤っているだけなのかどうかはわかりません。

ご教示いただけますと幸いです。

よろしくお願いいたします。

カスタムフィールドでトリガーを設定し、プロフィールフィールドを投稿コンテンツセクションに追加できるはずです。

例えば、トリガーがガイドラインの確認であれば、投稿コンテンツでは以下のように記述できます:

こんにちは!私は新しい利用者です
{{#pronouns}}私の代名詞は {{pronouns}} です{{/pronouns}}
{{#languages}}話せる言語は {{languages}} です{{/languages}}

これがご希望のものですか?

そうです。

正確なフィールド名に触れておくべきでしたね。すみません。

  • Pronouns/gender
  • Languages
  • Community Guidelines (understood)

私が生成しようとしている投稿は、新規ユーザーについてスタッフスレッドに知らせるためのものです。

あなたが提案したフォーマットの使い方や、記号を含むフィールド名の変換方法がわかりません。単にリストを作りたいだけです。以下のようにすればよいのでしょうか?

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

フィールド名から記号を単純に削除するだけでよいのでしょうか?

試行錯誤を続けることもできますが、これらのフィールドはオプションであり(多数のテスト用新規ユーザーを作成したくありません)、テストに時間がかかるかもしれません。

いい質問ですね。一見すると、記号が含まれるフィールド名は自動化を機能させない可能性があります……このような用途では、当側で少し修正して記号を除去する必要があるかもしれません。

当面は、カスタムフィールドから記号を削除していただけますか?{{pronouns_or_gender}}{{community_guidelines_undersood}} は、記号なしであれば自動化で問題なく動作するはずです。

現時点では記号がないため、言語を1つに設定しました。他の言語も試してみます。

{{#foo}} {{/foo}}{{foo}} のパターンについて説明いただけますか?

はい、{{foo}} はフィールドそのものを指し、それを囲む {{#foo}} {{/foo}} は条件分岐ブロックです。つまり、foo が入力されていない場合、{{#foo}} {{/foo}} の間の内容は一切表示されません。

したがって、

私の名前は {{foo}}

と記述し、foo が定義されていない場合、投稿には「私の名前は」のみが表示されます。

しかし、

{{#foo}}私の名前は {{foo}}{{/foo}}

と記述し、foo が定義されていない場合、「私の名前は」という部分も投稿から除外されます。

おっ、素敵ですね!

それで、変数を試すことで、全体が失敗してしまうようなことはあるのでしょうか?つまり、新しい投稿が全く作成されないような場合です。もしそうではないなら、記号を含んだフィールドのあらゆる組み合わせを試して、何がより早く機能するかを確認できますね。

OK、素晴らしいニュースです。

これは動作します:

* Languages: {{languages}}

しかし、これらは動作しません:

* Pronouns: {{pronouns_gender}}
* guidelines: {{community_guidelines_understood}} 

おさらいですが、フィールド名は以下の通りです:

Pronouns/gender
Community Guidelines (understood)

私は以下を試してみます:

* Pronouns: {{pronouns/gender}}
* guidelines: {{community_guidelines_(understood)}} 

それでも動作しない場合、コードの修正が必要かもしれませんか?フィールド名を変更したくありません。

OK、実際にはそうではないことがわかりました。

そして、括弧を に残すと自動化が壊れます。ログには以下が表示されました:

Mustache::Parser::SyntaxError (タグが閉じられていません
  行 12
    * guidelines: {{community_guidelines_(understood)}}
                                        ^
)

なので、フィールド名から記号を削除するようバグ/機能リクエストを提出する必要がありますか?

ああ、はい、申し訳ありません。それが不明瞭でした。カスタムフィールドから特殊記号を削除すれば、自動的に機能するようになります……Discourse は、特殊文字を自動的に除去するように調整する必要があります。そうすれば、現在設定されているように、自動化でそれらを使用できるようになります。