外部サイトに投稿を読み込む必要があります。投稿の post_id は不明ですが、トピック作成時に設定した external_id はわかっています。
embed.js のロジックで external_id 変数を公開するか、私が何か見落としていることを教えていただけますでしょうか?
サポート例:
window.DiscourseEmbed = {
discourseUrl: ‘https://forums.blah.org/’,
external_id: ‘2023-4’
};
外部サイトに投稿を読み込む必要があります。投稿の post_id は不明ですが、トピック作成時に設定した external_id はわかっています。
embed.js のロジックで external_id 変数を公開するか、私が何か見落としていることを教えていただけますでしょうか?
サポート例:
window.DiscourseEmbed = {
discourseUrl: ‘https://forums.blah.org/’,
external_id: ‘2023-4’
};
API を使用してトピックを作成し、external_id パラメータを設定したと仮定します。
これが役に立つかわかりませんが、Discourse には t/external_id/:external_id というルートがあります。JSON データのみを返すようです。
そのため、(たとえば) トピックの JSON を次のように取得できます。
/t/external_id/2023-4.json
これにより、Discourse トピックのコンテンツと id が返されます。ただし、これが問題の解決になるとは思いません。
現在テスト中ですが、JSON データは返されますが、リクエストを行うと Discourse は実際の Discourse トピック URL に自動的にリダイレクトします。たとえば、http://localhost:4200/t/external_id/1.json への GET リクエストは、http://localhost:4200/t/testing-the-external-id-param/206.json にリダイレクトされます。
埋め込み投稿の形式で何かを求めています。Discourse はすでにそのレイアウトをうまく処理しており、車輪の再発明はしたくありません。
external_id で検索できないようにすると、フォーラムトピック ID を DB に保存してその方法で検索する必要が出てきます。API からトピックを作成したときにすでに external_id に格納されている一意の変数があるのに、冗長に思えます。
これで理解できたと思います。ここで示されているスクリプトを使用したいのですね。
https://meta.discourse.org/t/embed-discourse-comments-on-another-website-via-javascript/31963#alternate-configuration-linking-to-existing-topics-6
ただし、topicId パラメータの代わりに external_id パラメータを使用したいと考えているのですね。
これは機能として追加できるかもしれません。
クライアント側で次のようなリクエストを行うことも可能かもしれません。
http://localhost:4200/t/external_id/1.json
その後、レスポンスからトピックの実際のURLを抽出し、そのURLを解析してトピックの id を抽出するか、またはトピックのURLに2回目のリクエストを行ってトピックIDを取得します。
これはエラーが発生しやすいと思われます。
クライアント側ではなくサーバー側で埋め込みスクリプトを追加している場合は、単に http://localhost:4200/t/external_id/1.json に GET リクエストを行い、必要なアクションを実行してDiscourseトピックの id を取得してから、その id を使用してWebページにスクリプトを挿入することができます。
これは良いフィードバックであり、検討すべき点がいくつかあります。機能リクエストは最も簡単ですが、私が考えていなかったあなたのアイデアのいくつかも気に入っています!