Discourse アンケート

|||
-|-|-|
:discourse2: | 概要 | Discourse Surveys プラグインを使用すると、簡単な Markdown 構文を使用して Discourse フォーラムの投稿内に直接アンケートを作成できます。
:hammer_and_wrench: | リポジトリリンク | https://github.com/discourse/discourse-surveys
:open_book: | インストールガイド | Discourse でプラグインをインストールする方法

Discourse Surveys プラグインを使用すると、簡単な Markdown 構文を使用して Discourse フォーラムの投稿内に直接アンケートを作成できます。このプラグインは現在、ラジオボタン、チェックボックス、ドロップダウン、数値入力、テキストエリア、星評価、サムズアップ/ダウン評価など、さまざまな質問タイプをサポートしています。

基本的なアンケート Markdown

以下は、利用可能なすべてのフィールドを含む、基本的なアンケート Markdown の例です。

[survey name="awesome-survey-thumbs" title="Awesome Survey"]

[radio question="Choose any one option:"]
- cat
- dog
[/radio]

[checkbox question="Choose multiple options:"]
- red
- blue
- green
[/checkbox]

[dropdown question="Gender:"]
- Male
- Female
[/dropdown]

[number question="Rate this survey from 1 to 10:"]
[/number]

[textarea question="What is your feedback about xyz?" required="false"]
[/textarea]

[star question="How would you rate overall experience?"]
[/star]

[thumbs question="Were you satisfied with our services?"]
[/thumbs]

[/survey]

アンケートのレンダリング

以下は、上記の Markdown が Discourse でどのようにレンダリングされるかの例です。

アンケート結果

現在、このプラグインには、アンケート結果を直接表示するためのバックエンド UX はありません。代わりに、Data Explorer クエリを使用してアンケート回答を取得および分析できます。以下はクエリの例です。

-- [params]
-- text :survey_name = survey

SELECT s.id, s.name, s.post_id, sf.question, COALESCE(sr.value, sfo.html) AS value, sr.user_id, sr.created_at as responded_at
FROM surveys s
JOIN survey_fields sf ON sf.survey_id = s.id
JOIN survey_responses sr ON sr.survey_field_id = sf.id
LEFT JOIN survey_field_options sfo ON sfo.id = sr.survey_field_option_id
WHERE s.name = :survey_name
ORDER BY s.id DESC

将来のスコープ

このプラグインには、多くの改善の可能性があります。自由にディスカッションに参加し、プラグインのリポジトリにプルリクエストを送信してください。

「いいね!」 28

ユーザーは結果を見ることができない(クエリを使用する権利がない限り)そしてこれは完全に管理者/バックグラウンドスタッフのためですか?

「いいね!」 3

はい、その通りです。

「いいね!」 7

あまり実用的ではないですね :cry:

「いいね!」 3

アンケート結果を公開するオプションが必要です。それ以外の場合は、複数の投票を使用する方が良いでしょう。

「いいね!」 3

こんにちは

以下のように、サンプルMarkdownが新しいトピックにレンダリングされます。私のDiscourseは最新バージョンに更新されています。

何が問題なのでしょうか?

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

@ppcoleさん

上記は、アンケートを作成する際にコンポーザープレビューに表示されるものです。トピックを作成すると、期待どおりに正しくレンダリングされます。

アルピット、ありがとう。うまくいきました。機能強化を楽しみにしています。

「いいね!」 1

そちらの件について、実際には優先度を高くせずに取り組んでいるのかどうかお伺いしてもよろしいでしょうか?

これは開発が継続されると素晴らしいでしょう - 多くの可能性を秘めています。

上記のSQLは結果を取得しましたが、扱いやすい形式ではありませんでした。基本的に、有用な分析を可能にするためには、スプレッドシートレベルで大量の変換が必要になります。

しかし、Gen AIの助けを借りて、非常に優れたData Explorerクエリを作成することができました。Data Explorerのいくつかの制限により、さまざまなアンケートに対応できるほど動的にすることはできません。基本的に、アンケートごとにカスタムクエリが必要です。

幸いなことに、Gen AIはそれを非常に簡単にすることができます。以下は、ほとんどのGen AIサービスで機能する可能性のあるサンプルプロンプトです(AIプラグインがアクティブでない場合)。アンケートのMarkdownを貼り付けるだけで、すぐに利用できます。

特定のアンケート用のカスタムSQLクエリを生成するためのGen AIプロンプト

Markdown形式で定義されたアンケートがあり、Data Explorerプラグインを使用してDiscourseデータベースからアンケート結果を抽出するためのSQLクエリが必要です。アンケートには、ラジオボタン、ドロップダウン、スター、チェックボックス、テキストエリア、サムズ、数値など、さまざまな種類の質問が含まれています。クエリは、各ユーザーが1つの行を持ち、各質問が独自の列を持つように結果を出力したいと思います。チェックボックスの質問については、複数の回答を単一の文字列に連結する必要があります。

アンケートのMarkdownは次のとおりです。

ここにアンケートのMarkdownを貼り付けてください

アンケート結果を取得するために使用された元のクエリは次のとおりです。

-- [params]
-- text :survey_name = survey

SELECT s.id, s.name, s.post_id, sf.question, COALESCE(sr.value, sfo.html) AS value, sr.user_id, sr.created_at as responded_at
FROM surveys s
JOIN survey_fields sf ON sf.survey_id = s.id
JOIN survey_responses sr ON sr.survey_field_id = sf.id
LEFT JOIN survey_field_options sfo ON sfo.id = sr.survey_field_option_id
WHERE s.name = :survey_name
ORDER BY s.id DESC

次のSQLクエリを生成してください。

  • アンケート名をハードコードします。
  • 条件付き集計を使用してデータをピボットし、各質問を列にします。
  • チェックボックスの質問にはSTRING_AGGを使用して複数の回答を処理します。
  • user_idでグループ化し、user_idで並べ替えます。
  • 可読性のためにフォーマットし、ロジックを説明するコメントを含めます。

Data Explorerプラグインの追加ガイダンス:

  • クエリはDiscourse Data Explorerプラグインと互換性がある必要があります。つまり、セミコロンで終わるべきではありません。
  • Data Explorer内の自動リンク機能を利用するために、user_idのような列名を使用します。
  • プラグインは動的SQLをサポートしていないため、動的SQLの使用は避けてください。
  • 大規模なデータセットで実行される可能性があるため、クエリが効率的でパフォーマンスが最適化されていることを確認してください。
「いいね!」 7

これは素晴らしい小さなプラグインで、驚くほど機能が豊富です。作成していただきありがとうございます。

@nathank 結果クエリを迅速に構築するためのガイドについて素晴らしい仕事をしました。

「いいね!」 4

セルフホストサイトにこれをインストールして試してみましたが、実に素晴らしいです!

これはディスコースのアンチテーゼであることは承知していますが、ログインせずに匿名で回答できるアンケートを作成できれば、それは役立つでしょう。あるいは少なくとも、結果が特定のユーザーと関連付けられないように匿名化できれば。

そしてもちろん、データエクスプローラーに頼ることなく、投票のように結果を見ることができる機能があれば素晴らしいでしょう。

「いいね!」 4

はい、私も同じ問題に直面しました。解決策があるといいのですが。

「いいね!」 3