mpemburn
(Mark Pemburn)
1
こんにちは、
昨日「Merge Users プラグインをプログラムから呼び出す」に関するトピック(現在はクローズ済み)を作成しました。Rafael 氏に親切にもリリースノートを紹介いただき、その中でプラグインに UI が追加されたことに触れられていました(https://meta.discourse.org/t/discourse-2-5-0-beta3-release-notes/148766)。残念ながら、Discourse API の知識が不足しており、これを API 呼び出しに変換することができません。これは、当社のアプリケーションから比較的頻繁に行う必要がある処理です。ご助力いただけますでしょうか。
あらかじめありがとうございます、
Mark Pemburn
Blue Ocean Ideas
riking
(Kane York)
2
ボタンは、ユーザーの管理ページの下部に表示されます。

ブラウザの開発者ツールを開いて操作すると、実行する必要があるリクエストが表示されます。
mpemburn
(Mark Pemburn)
3
こんにちは、ケーンさん。
ヒントをありがとうございます!サンドボックスの Discourse でユーザーを作成するのに少し時間がかかりましたが、本日ようやく作成することができました。開発ツールの Network パネルから得た情報を基に、Postman を使ってそれを再現しようと試みました。使用した値は以下の通りです。
メソッド: POST
エンドポイント: https://my-discourse-sandbox/admin/users/{source user ID}/merge.json
ヘッダー:
Content-Type: multipart/form-data
Accept: application/json
パラメータ:
Api-Key: {UI を介して作成}
Api-Username: system
context: /admin/users/{source user ID}/{source username}
target_username: {target username}
レスポンスは以下の通りでした:
{
"errors": [
"The requested URL or resource could not be found."
],
"error_type": "not_found"
}
私が間違っている箇所について、何かご存知でしょうか?
riking
(Kane York)
4
一見すると、すべて正しいようです。target_username の値が存在するか確認しましたか?
mpemburn
(Mark Pemburn)
5
Kane さん、
はい、ソースとターゲットの両方とも現在のユーザーです。ヘッダーを削除すると、「Oops! そのページは存在しないか、非公開です。」という HTML ページが返ってきます。「ページが存在しない」という部分は 404 エラーとして理解できますが、「非公開」という表現が何を意味するのかはわかりません。
Mark
artur
(Artur Lobanov)
6
@mpemburn これで成功しましたか?
メーリングリストを Discourse インスタンスに移行しています。多くの人が異なるメールアドレスを使用していたため、転送により、実際の人物ごとに多くのステージング済みユーザーが作成されます。API を介してユーザーのマージを自動化したいと思います。