one1
1
新しいユーザー紹介/通知ワークフローにおいて、ユーザー更新後トリガー付きの投稿作成スクリプトを使用しようとしていますが、ドキュメントに記載されている制限を正しく理解しているのか、あるいはサポートされている回避策があるのか判断に迷っています。
すでに以下の記事を読みました:
私のユースケース
新しいユーザーが必須のサインアップ/プロフィール項目を完了した際に、自動化された投稿を作成したいと考えています。
同時に、その投稿には、ユーザーが入力した場合に限り、いくつかの任意のカスタムユーザーフィールドも含めたいと考えています。例えば以下のようなものです:
- 代名詞/性別
- 言語
- コミュニティガイドラインの理解確認
したがって、意図した動作は以下のようになります:
- 1 つの必須フィールドにより、自動化が発火することが保証される
- その他の任意フィールドは、入力されている場合のみ投稿に含まれる
行き詰まっている点
トリガーのドキュメントには以下のように記載されています:
自動化は、ユーザーが指定されたすべてのフィールドを入力した後にのみ発火します。
UI でも以下のように表示されています:
ユーザーがこれらのすべてのフィールドを入力した場合にのみ発火します
つまり、プレースホルダーを使用するためにトリガー設定に任意フィールドを追加すると、自動化の観点からはそれらが任意ではなくなります。なぜなら、自動化はそれらすべてが入力されるまで発火しないからです。
これはジレンマを生み出しているように思えます:
- 任意フィールドをトリガーに含めると、それらをスキップするユーザーに対して自動化が一度も発火しない可能性がある
- トリガーに含めなければ、投稿内でそれらのプレースホルダーを確実に使用できない可能性がある
私の質問
- 現在の動作を正しく理解していますか?
- ドキュメントに記載されている制限は現在も正確ですか?
- 以下のことをサポートされている方法で行うことは可能ですか?
- 1 つの必須フィールドから自動化を発火させる
- ただし、存在する場合は投稿コンテンツ内で他の任意のカスタム/プロフィールフィールドにアクセスする
- 不可能な場合、このユースケースに対する推奨される回避策はありますか?
理想的な動作
私が期待しているのは、以下のような動作です:
- 任意の必須トリガー条件が満たされたときに発火する
- 値が存在する場合は任意のプレースホルダーを置換する
- 値が存在しない場合は、任意のプレースホルダーを空白のまま、変更せず、または省略する
しかし、それがすでに可能で、単に設定を誤っているだけなのかどうかはわかりません。
ご教示いただけますと幸いです。
よろしくお願いいたします。
カスタムフィールドでトリガーを設定し、プロフィールフィールドを投稿コンテンツセクションに追加できるはずです。
例えば、トリガーがガイドラインの確認であれば、投稿コンテンツでは以下のように記述できます:
こんにちは!私は新しい利用者です
{{#pronouns}}私の代名詞は {{pronouns}} です{{/pronouns}}
{{#languages}}話せる言語は {{languages}} です{{/languages}}
これがご希望のものですか?
one1
3
そうです。
正確なフィールド名に触れておくべきでしたね。すみません。
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}} は、記号なしであれば自動化で問題なく動作するはずです。
one1
5
現時点では記号がないため、言語を1つに設定しました。他の言語も試してみます。
{{#foo}} {{/foo}}{{foo}} のパターンについて説明いただけますか?
はい、{{foo}} はフィールドそのものを指し、それを囲む {{#foo}} {{/foo}} は条件分岐ブロックです。つまり、foo が入力されていない場合、{{#foo}} {{/foo}} の間の内容は一切表示されません。
したがって、
私の名前は {{foo}}
と記述し、foo が定義されていない場合、投稿には「私の名前は」のみが表示されます。
しかし、
{{#foo}}私の名前は {{foo}}{{/foo}}
と記述し、foo が定義されていない場合、「私の名前は」という部分も投稿から除外されます。
one1
7
おっ、素敵ですね!
それで、変数を試すことで、全体が失敗してしまうようなことはあるのでしょうか?つまり、新しい投稿が全く作成されないような場合です。もしそうではないなら、記号を含んだフィールドのあらゆる組み合わせを試して、何がより早く機能するかを確認できますね。
one1
8
OK、素晴らしいニュースです。
これは動作します:
* Languages: {{languages}}
しかし、これらは動作しません:
* Pronouns: {{pronouns_gender}}
* guidelines: {{community_guidelines_understood}}
おさらいですが、フィールド名は以下の通りです:
Pronouns/gender
Community Guidelines (understood)
私は以下を試してみます:
* Pronouns: {{pronouns/gender}}
* guidelines: {{community_guidelines_(understood)}}
それでも動作しない場合、コードの修正が必要かもしれませんか?フィールド名を変更したくありません。
one1
9
OK、実際にはそうではないことがわかりました。
そして、括弧を 中 に残すと自動化が壊れます。ログには以下が表示されました:
Mustache::Parser::SyntaxError (タグが閉じられていません
行 12
* guidelines: {{community_guidelines_(understood)}}
^
)
なので、フィールド名から記号を削除するようバグ/機能リクエストを提出する必要がありますか?
ああ、はい、申し訳ありません。それが不明瞭でした。カスタムフィールドから特殊記号を削除すれば、自動的に機能するようになります……Discourse は、特殊文字を自動的に除去するように調整する必要があります。そうすれば、現在設定されているように、自動化でそれらを使用できるようになります。