pawlean
(Pauline P. Narvas)
1
こんにちは!現在、Front App と Discourse の連携に取り組んでいます。現時点では、Pipedream を使ってこれらを接続しています。
2 つのワークフローをセットアップできました:
- Discourse → Front App。Discourse で新しいメッセージが届くと、そのメッセージが Front に投稿されます。
- Front → Discourse。Front でインポートされた Discourse のメッセージに返信すると、Pipedream の Webhook が Front の新しい返信を監視し、Discourse API を使ってその返信を Discourse に投稿します。これはうまく機能しているのですが、Front 側を見ると、私の返信が表示されてしまいます(これはワークフロー 1、つまり Discourse で新しいメッセージが届いたときにトリガーされるためです)。その結果、受信トレイのスレッドに 2 つのメッセージが表示されてしまいます。Front から送信されたメッセージと、ワークフロー 1 によってインポートされた同じメッセージです。
最初のワークフローで取り込まれた Front からのメッセージを「除外」する方法をご存知でしょうか?Discourse API でこれは可能でしょうか?
よろしくお願いいたします!
こんにちは
、素晴らしい統合をされているのですね。
よりお手伝いできるよう、いくつか質問させてください。
- ルーティングは、Discourse の PM(プライベートメッセージ)の作成時に行っていますか、それとも新規トピックやトピックへの返信時に行っていますか?
新規トピックやトピックへの返信時にルーティングを行う場合……
-
Discourse インスタンスでは、Front に新しいメッセージとして送信するために、すべてのトピックやトピックへの返信をルーティングしていますか?
-
Front からメッセージに返信する際、元のトピックに返信するために API を使用していますか?
pawlean
(Pauline P. Narvas)
3
こんにちは、Jordan さん!
返信ありがとうございます。
ご質問への回答です:
- はい、Front へのトピックまたはトピックへの返信は「任意のトピック」です。
- 私が Front から返信すると、Pipedream で生成された URL を介して送信され、それが Discourse の POST API をトリガーして元のトピック(トピック ID で特定)に送信されます。
つまり、仕組みは以下の通りです:
私が Front で誰かに返信メッセージを送信します。
その後、Discourse API(ワークフロー 1)がフォーラムに新しいメッセージが届いたことを検知し、それを Front に新しいメッセージとして送信します。
重複したメッセージは避けたいのです。
少し混乱しやすい話かもしれないので、もし私の説明が不十分でしたらおっしゃってください。
ご助言をいただければ大変助かります!
つまり、Discourse のトピックが作成された初回のみ Front へメッセージとしてプッシュし、それ以降は二度と行わない、と理解してよいでしょうか?
私の理解は正しいでしょうか?
- Discourse でトピックが作成される
1a) そのトピックが Front のメッセージに変換される
- ユーザーが Front のメッセージに返信する
2a) その Front のメッセージが、作成されたトピックへの返信として Discourse へプッシュされる
ここで、Discourse ユーザーが 2a の返信に対してさらに返信することはあるのでしょうか?それとも、この時点で会話は終了するのでしょうか?
私がこの点を確認したい理由は、Front から Discourse へトピックが作成される際、投稿 ID を確認する処理を検討する必要があるかもしれないからです。もし Front が post id#345 の作成を Discourse でトリガーした場合……
……その際、Discourse の投稿を Front の投稿に変換する Pipedream のコードでは、作成直後の Post Id と一致しないかを確認し、一致する場合は Front メッセージへ変換しないように設定できます。
これは Pipedream で可能でしょうか?私はその製品に詳しくありません。
pawlean
(Pauline P. Narvas)
6
はい、Discourse ユーザーは引き続き 2a に返信できます。この機能は正常に動作しています!コミュニティメンバーから新しい Discourse メッセージが送信されると、自動的に Front のスレッドに追加されます。
このスクリーンショットでより明確に説明できます:
ご覧の通り、Front 経由で「Just a test message from Front」と返信しました。このメッセージが Discourse に投稿されるため、Discourse API が新しいメッセージとして検知し、スレッドに新たなメッセージを送信します。
あなたの返信をきっかけに考えが浮かびました:thinking: Front の ID を検知して、Discourse の「メッセージ送信」API での送信を除外する機能を作成するのはどうでしょうか。試してみます。お手伝いいただきありがとうございます!
pawlean
(Pauline P. Narvas)
7
@jordan.vidrine さん、お手伝いいただきありがとうございます!このスレッドで一緒に話し合う中でアイデアが浮かび、今では問題が解決しました。
特に以下の部分です:
お尋ねしている理由は、フロントから来た際に投稿 ID を作成時に確認する必要があるかもしれないからです。Front が Discourse 上で投稿 ID#345 の作成をトリガーした場合
ありがとうございました!