こんにちは。Zapier を通じて、Discourse を現在使用している他のツールと統合できるか確認しています。特定の投稿をトリガーとするイベントがあり、その投稿の情報を Webhook で送信できればと思っていたのですが、タグはトピックレベルで設定されるもので、特定の投稿に限定することはできないようです。バッジは投稿を通じて付与できますが、適切な Webhook の送信をトリガーするようには見受けられません。
このようなことは可能でしょうか?
よろしくお願いいたします。
こんにちは。Zapier を通じて、Discourse を現在使用している他のツールと統合できるか確認しています。特定の投稿をトリガーとするイベントがあり、その投稿の情報を Webhook で送信できればと思っていたのですが、タグはトピックレベルで設定されるもので、特定の投稿に限定することはできないようです。バッジは投稿を通じて付与できますが、適切な Webhook の送信をトリガーするようには見受けられません。
このようなことは可能でしょうか?
よろしくお願いいたします。
はい、これはトリガーアプリとして Zapier Webhook を使用し、Discourse Webhook を Zapier へ送信するように設定することで実現できます。Trigger a Zapier task with Discourse Webhooks の「Set up Trigger」セクションに、この設定方法の詳細が記載されています。そのトピックをお読みいただけますか?不明な点があれば、そのトピック内で質問してください。こちらから回答いたします。
こんにちは、サイモン。情報ありがとうございます!![]()
Webhook を使って設定を試みたのですが、すべての投稿を Zapier に送信するオプションしか表示されず、手動で送信する投稿を選択できる方法が見つかりませんでした。つまり、特定の投稿のみを送信したいのです。それを実現するための設定や方法をご存知でしょうか?
Discourse の Webhook 設定にある「トリガー対象のカテゴリ」「トリガー対象のタグ」「トリガー対象のグループ」で、Webhook を発火させる投稿やトピックを制限できます。スタッフメンバーのみが閲覧または使用できるタグを含むタググループを作成すれば、Webhook を特定のトピックに限定する有効な方法となります。
また、Zapier 側でフィルターステップを追加し、指定した条件を満たすトピックの場合のみ処理を続行させることも可能です。ユーザー Webhook の設定例については、「Catch the Discourse User Created Event」セクションの Create a Salesforce lead via Zapier when a user signs up on Discourse をご参照ください。トピックや投稿のフィルター設定も、同様の手順で行えます。
私の理解では、Zap がフィルターステップまで進んだ時点で、そのイベントは Zapier 上のタスクとしてカウントされます。したがって、Discourse 側で可能な限りフィルターを行い、Zapier へのリクエストを減らすのが望ましいでしょう。カテゴリ、タグ、グループによるフィルタリングが、これを実現する最良の方法です。
@simon さん、ありがとうございます!お話しされている設定オプションをいろいろ試してみましたが、Discourse 上で特定の投稿データの変更を検知し、その投稿を他のシステムと同期させるために、投稿レベルで何か設定できるか見つけられませんでした。
特定のタグが付いたトピックのすべてのデータを送信することは可能です。実際に動作しているのを見たことがあります。ただし、適切な Zap を構築し、生成されるタスク数を処理するには、Zapier のアカウントをより上位のものにする必要があります。これは問題ないかもしれません。ただ、Discourse の管理者が投稿に対して何か操作を行った際に、その特定の投稿(タグ付きトピック内のすべての投稿ではなく)を Zapier が検知して webhook をトリガーする方法がまだ見つかっていません。
Discourse は全くの初心者なので、投稿に固有の何かを見落としているのではないかと疑問に思っています。
投稿レベルでのフィルタリングは、おそらくZapier側で行う必要があります。Zapをトリガーするかどうかを判断するために、どのようなデータを使用したいですか?
Discourseに関する私の知識が不足している箇所です。投稿に固有で、投稿の同期を指定するために使用でき、 webhook のペイロードに渡されるデータが何であるか確信が持てません。
フラグは別の目的で使用されるため、それは機能しないかもしれません。
ユーザーに表示される投稿の内容を変更したくありません。
バッジは可能かもしれませんが、webhook をトリガーするものとは見なされていません。
アイデアはありますか?
私の最初の考えは、解決済みとしてマークされた投稿、またはスタッフメンバーに「いいね」された投稿をフィルタリングする方法でしたが、残念ながらこれらのアクションのいずれも webhook をトリガーしません。いいねに対して webhook をトリガーしないのには良い理由があると思いますが、トピックが解決済みとしてマークされたときに webhook をトリガーする機能を追加することは可能かもしれません。
現在の Discourse 機能で特定の投稿をきっかけに webhook をトリガーするには、フラグイベントをトリガーとする webhook を設定してみてください。Zapier では、特定のユーザーによって「その他」としてフラグが立てられた投稿を検索することで、フラグ付きの投稿をフィルタリングできます。
フラグイベントで渡されるペイロードを確認する最も簡単な方法は、Discourse でフラグイベントをトリガーとして選択した webhook を作成することです。テスト用として、webhook の「ペイロード URL」フィールドに任意の URL(例:http://example.com)を入力できます。サイト上で投稿にフラグを立てた後、[管理] / [API] / [Webhooks] に移動し、「配信ステータス」リンクをクリックして、webhook のリクエスト一覧を表示します。
「リクエスト」ボタンをクリックして、webhook によって渡されたペイロードを確認します。
Zapier では、リクエストのペイロード内の任意の値にアクセスできます。特定のユーザーによって「その他」としてフラグが立てられた投稿をフィルタリングするには、リクエストの flag_type が notify_moderators であり、かつ created_by フィールドが Zapier アクションをトリガーしたいユーザーのユーザー名に設定されていることを確認する必要があります。
はい、その仕組みが機能する可能性は理解できました。ここで話題にしている投稿がフラグ付けされていることがユーザーにわかるでしょうか?「その他」をフラグの理由として特定のコンテンツを指定したいのですが、これはこのウェブフックをトリガーしようとする人にとっては少しブラックマジックな部分です。投稿にアクションを追加して、これらの手順を自動化することは可能でしょうか(あるいはアクションを追加できるなら、投稿に関する必要な情報を収集し、それを Zapier のウェブフックアクションエンドポイントに呼び出すだけのアクションを作成する方法はありますか)?
ご親切なサポートに心から感謝いたします!
「その他」にフラグ付けされた投稿を確認できるのは、スタッフメンバーのみです。
残念ながら、投稿が「その他」にフラグ付けされた際に追加されるメッセージは、ウェブフックのペイロードに含まれていません。そのため、このアプローチは最適ではないと思われます。
エンジニアによる確認が必要ですが、スタッフメンバーが投稿の「管理アクション」メニューに追加されたボタンをクリックした際に、カスタムウェブフックを発火させるプラグインを作成するのは、比較的簡単だと思われます。
確かにその通りです。
素晴らしい、二人とも助かりました。
これが、プラグイン開発の実際を見るのに最適な場所だと思いますか?
はい、自分でプラグインを開発したい場合は、そこから始めるのが最も良い方法です。