Zapier の Discourse 用 Zap テンプレートを使用する

Zapier には、Discourse の公式統合テンプレートが多数用意されています。これらのテンプレートを使用すれば、最小限の設定で Discourse と外部アプリケーションを接続できます。以下から確認できます:

ページをスクロールして、現在利用可能な統合の一覧を表示してください。

これらのテンプレートは 2 種類に分類されます。1 つ目は、Discourse がトリガーアプリとなるタイプです。これにより、Discourse の投稿を Slack、Mattermost、Discord、Facebook グループ、Facebook ページ、Google スプレッドシート、その他のサービスに公開できます。2 つ目は、Discourse がアクションアプリとなるタイプです。これらを使用すると、WordPress や Ghost からの投稿を Discourse に公開できます。また、Twitch のライブストリームを Discourse に公開するためのテンプレートもあります。

Zapier での Discourse 認証情報の追加

Zapier の Discourse 統合を使用するには、Zap の初期設定時に、フォーラムのベース URL、Discourse のユーザー名、および API キーを追加する必要があります。

ほとんどの場合、Zap はサイトの管理者が自身の Discourse ユーザー名と API キーを使用して設定します。API キーは、Discourse の管理画面(管理 / API / キー)から作成できます。なお、完全な API キーの値は、キー作成時に一度だけ表示されるため、その時点で必ずコピーしてください。

Discourse の認証情報を Zapier に追加したら、「Continue(続行)」ボタンをクリックします。画面上に「Success(成功)」というメッセージが表示されるはずです。

Zap が取得する投稿の指定

Discourse がトリガーアプリの場合、デフォルトではサイトのすべての新しい投稿が Zap のトリガーとなります。「Edit Options(オプションの編集)」という任意のステップで、特定のトピックで投稿された場合のみ、または特定のユーザーが投稿した場合にのみ Zap がトリガーされるように制限できます。

ステップの「Topic(トピック)」ドロップダウンメニューから、Zap をトリガーする特定のトピックを選択してください。これを設定すると、選択したトピックで作成された投稿のみが Zapier によって取得されます。また、「Author(著者)」ドロップダウンメニューから、Zap の対象となるユーザー名を選択してください。これを設定すると、このユーザーが作成した投稿のみが Zapier によって取得されます。

投稿に対するより細かな制御のためのフィルターステップの追加

「Edit Options(オプションの編集)」ステップでは、Zap のトリガーとなる投稿を制御するのに十分な制御が得られない場合、Zap に任意の「Filter(フィルター)」ステップを追加できます。フィルターでできることの例として、特定のカテゴリの最初の投稿の場合にのみ Zap を実行し続けるように設定できます。フィルターを追加するには、トリガーの下にある + アイコンをクリックし、メニューから「Filter」を選択します。

フィルターを使用すると、Zap を継続する条件を設定できます。以下の例では、カテゴリ ID が 2 のトピックにおける最初の投稿の場合にのみ、処理が継続されます。

公開する Discourse コンテンツの選択

Discourse の投稿を他のアプリケーションに公開する場合、Zapier では投稿のどの部分を公開するかを選択できます。公開する内容は、対象のアプリケーションによって異なります。ここでは、Discourse の投稿を Facebook グループに公開する例を用いて説明します。

フォームの「Message(メッセージ)」フィールドで、公開されるコンテンツを設定します。投稿の全文を公開するには、「Message」ドロップダウンから「Raw」フィールドを選択してください。トピックのタイトルのみを公開するには、ドロップダウンから「Topic Title」を選択してください。

投稿またはトピックへのリンクの作成

Discourse の投稿を外部アプリケーションに公開する際、Discourse から返されるデータを用いて、投稿またはそのトピックへのリンクを作成する必要がある場合があります。そのためには、リンクを追加するフィールドに、サイトのベース URL を入力し、その後に /t/ を続けて入力してください。例えば、サイトの URL が https://discourse.example.com の場合、フォームに https://discourse.example.com/t/ と入力します。

次に、フィールドのドロップダウンメニューを開き、「Topic Slug」を選択してください。

Zapier がトピックのスラッグのプレースホルダーをフィールドに追加します。

次に、トピックのスラッグプレースホルダーの後にスラッシュ(/)を入力し、ドロップダウンメニューから「Topic ID」を選択してください。

最終的な結果は、以下のスクリーンショットのようになります。

トピック内の特定の投稿へのリンクを作成するには、フィールドにさらにスラッシュ(/)を追加し、メニューから「Post Number」を選択してください。

Zap の設定で使用したプレースホルダーの値は、新しい投稿が公開された際に、Discourse から渡された値に置き換えられることに注意してください。

テンプレートなしで統合を作成する

Zapier の統合ページに記載されているテンプレートは、Discourse と外部アプリケーションの接続を容易にするために設計されています。テンプレートが存在しないアプリケーションに Discourse を接続したい場合、または Discourse の Webhook を監視する、あるいは Discourse API に対して POST リクエストを送信する Zap を作成したい場合は、以下のガイドのいずれかを参照して実行、または修正してください:

「いいね!」 17

Getting the following on the add credentials zapier screen

We hit an error adding your new account

authentication failed: Error code 500: {“status”:500,“error”:“Internal Server Error”}

All details are correct.

Discourse reports successful use of the API key:

And the following error log:

Message

Draft::OutOfSequence (Draft::OutOfSequence)
/var/www/discourse/app/models/draft.rb:124:in `get'

Backtrace

/var/www/discourse/app/models/draft.rb:124:in `get'
/var/www/discourse/lib/topic_list_responder.rb:11:in `respond_with_list'
/var/www/discourse/app/controllers/list_controller.rb:152:in `block in generate_message_route'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-6.0.3/lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-6.0.3/lib/abstract_controller/base.rb:195:in `process_action'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-6.0.3/lib/action_controller/metal/rendering.rb:30:in `process_action'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-6.0.3/lib/abstract_controller/callbacks.rb:42:in `block in process_action'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3/lib/active_support/callbacks.rb:135:in `run_callbacks'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-6.0.3/lib/abstract_controller/callbacks.rb:41:in `process_action'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-6.0.3/lib/action_controller/metal/rescue.rb:22:in `process_action'

Env

HTTP HOSTS: discuss.bevry.me

Running 2.5.0.beta4 ( 811bc3544f )


That said, refreshing the add zap page that prompted the popup, results in the following:

So seems it was added successfully despite the error


However, selecting one of the added entries just prompts the auth flow again:

「いいね!」 4

Are you using a Discourse All Users API Key and the username of an admin user on your site? I am not sure if that is what is required, but I setup a new Zapier Discourse account with admin API credentials last week. It worked for me then.

「いいね!」 1

We ran across this issue as well.

It is now edit: was impossible to do anything (well, a lot) with a user with a negative ID, due to this change:

https://github.com/discourse/discourse/commit/d301af39bd3d0808fa3c0c40740539237058bee7#diff-f2feb5a7249b1fd4020b0074eac2152bR26

@tgxworld It would be cool if it was possible to disable this new behavior, and/or to whitelist accounts.

「いいね!」 3

That was a bug and has been fixed in
https://github.com/discourse/discourse/commit/165fa13c9d45f486927a00d9c08bc307817a27cb

「いいね!」 3

It was indeed something we ran into yesterday :laughing: .
Thanks!! (and I should have checked before making this post)

「いいね!」 3

どうもありがとうございます。完璧に機能しています!

「いいね!」 1

こんにちは、Discourse の投稿をトリガーとしてフィルタリングし、新しいトピック(スレッドの最初の投稿)のみを保持し、スレッド内の回答を除外する方法はありますか?ありがとうございます。

最終的にその方法を発見しました:

「いいね!」 1

これは、Zap の「トリガーの設定」部分で、作成者を指定する必要があるところで、依然として 403 エラーが発生します。

「すべてのユーザー、グローバル」と「単一ユーザー、グローバル」の設定、および「すべてのユーザー、読み取り専用」の設定を試しましたが、すべて同じエラー (403) が返されます。

「いいね!」 1