API経由でステージングユーザーを作成しますか?

2つの異なるDiscourseフォーラムの指定されたカテゴリを接続するために、WebhookとAPIブリッジサービスを構築することを検討しています。大まかなアイデアは次のとおりです。

  1. トピックおよび投稿イベント[1]に対する各サーバーのWebhook
  2. これらを受け取り、API経由で反対側のサーバーでイベントを複製するリスナー
    • 明らかにループを防ぐための何か[2]
    • 同じメールアドレスを持つユーザーが反対側のサーバーに存在するかどうかを確認します[3]
    • そのようなユーザーが存在しない場合は、ステージングされたユーザーを作成します
    • ステージングされたユーザーの通知設定を変更して、メール通知を受け取らないようにします[4]
    • 適切な実際のユーザーまたはステージングされたユーザーの下に投稿を作成または更新します
  3. おそらく、何も見逃されていないことを確認し、必要に応じて両側が合意するように並べ替えるトピックを処理する定期的なルーチン

ユーザーのステータス、役割、および権限の理解から、ステージングされたユーザーが基本的に私たちが望むことを行うと思います。もし誰かが後でそのメールアドレスでアカウントを作成した場合、彼らはそれを「請求」し、あたかも最初からそこにいたかのようにすべての投稿を操作できます。

しかし、APIからステージングされたユーザーを作成する方法はありますか? Discourse API Docs にはそれが見当たりません。


  1. およびおそらくいいねおよび解決済みイベントも、最初のカットでは除外 ↩︎

  2. このリストを書く前に、確かにこれを考えました ↩︎

  3. アカウントシステムに同じユーザー名がない可能性があるため、メールアドレスをキーとして使用します ↩︎

  4. ここでどこかで見ました… ↩︎

お探しのものか分かりませんが?

「いいね!」 3

まあ、ある意味では。そのトピックのOPが返信しているように…

…そしてそこでの答えは、基本的にメールを挿入し、メール処理コードに対処させることです。しかし、これはこのケースでは機能しません。投稿を作成する前に、ユーザーのメール通知をオフにするように介入する必要があるからです。

提案されたブリッジの片側ではSSOがユーザー名をオーバーライドするように設定されているため、「othersite-user」のようなものを作成することが回避策になると思いますが…しかし、そのSSO設定がないと必ずしも機能しません。

staged: true を管理者ユーザー作成呼び出しに渡しても機能しない場合は、それを有効にするための PR を検討します。

(あなたのユースケース以外では、ややニッチな機能だと思いますか?)

おそらく、handle_mail ルートを使用して、ユーザーとして偽のメールを投稿できますか?(ああ、@blake が示唆するように こちら

これにより、必要に応じてステージングされたユーザーとトピックが同時に作成されます。

「いいね!」 2

このアプローチでは、ユーザーがメール経由でトピックや返信を作成したように見えます。ステージングされたユーザーはメール経由でのみ投稿できます。API経由でステージングされたユーザーのメール以外の投稿を作成しようとすると、無効なアクセスエラーが発生します。

ステージングされたユーザーのアプローチには、何かがしっくりこない気がします。ユーザーに懸念がないかアンケートを取る価値があるかもしれません。ユーザーから許可を得られれば、ミラーサイトでアクティブな非ステージングユーザーを作成し、API経由でトピックやコメントを投稿できます。

staged: trueを渡すと、ステージングされたユーザーが作成されます。このように作成されたユーザーはメール経由で投稿できると想定しています。私のローカル開発サイトは、Discourseにメールを送信するように設定されていないため、現時点ではテストできません。

「いいね!」 1

コンタクトフォームを処理するために、Discourse を汎用フォームプロセッサとして使用したいと考えています。コンタクトフォームは嫌いですが、メールを送るよりもコンタクトフォームを使いたいユーザーもいます。たとえそのユーザーが悪い決断をしていると思っても、連絡を容易にしてお金を払ってもらいたいのです。

フォームを処理してメールを送信するために他のシステムに頼ることなく、ステージングされたユーザーを作成するメッセージを作成できると非常に便利でしょう。

これを実現するにはプラグインを作成する必要があると思いますが、それが私の計画です。

これは、WordPress を廃止するために私が解決しなければならない残りのことの 1 つです。

したがって、プラグインでは、メール投稿のように投稿を作成するかもしれません。プラグインではそれほど難しくないかもしれません。そして、それは API を介して可能になるでしょう。

「いいね!」 2

:mage: カスタムウィザードプラグイン を使えば、それほど手間をかけずに実現できると思います。今は匿名ウィザードも可能です。必要であれば、お手伝いします!

「いいね!」 3

はい、これは機能します: Creating a staged user with an API call - #8 by blake.

「いいね!」 1

ああ、もちろんです。それがメール受信者がメールを配信する方法です。どんなフォームからでも任意のフィールドを受け入れ、それをトピックに格納し、私に配信するエンドポイントが欲しいと思います。そうすれば、APIキーを公開せずに済みます(メール配信に限定されているので、JavaScriptがフォームを処理してから既存のエンドポイントに配信するのは、それほどひどいことではないように思えます)。

「いいね!」 1