8

openfireサーバーでrubyxmpp4rライブラリを使用して、openfireマルチユーザーグループのチャット履歴を取得しようとしています。リクエストをフレーム化することはできますが、サーバーからの応答がありません。以下は発見リクエストです

iqr = Iq.new(:get,"example.com")
iqr.add_namespace("http://jabber.org/protocol/disco#info")
client.send(iqr)

これがフレーム化されたリクエストです

<iq to='example.com' type='get' xmlns='http://jabber.org/protocol/disco#info'/>

しかし、サーバーからの応答がありません。XEP-0160とXEP-0013をフォローしました。

ここで何が欠けていますか?


openfireはルームチャットの履歴を提供しますか?そのためのAPIはありますか?

どんな助けでも深く感謝します。そして、私はオープンファイアをあまり理解していないので、それに関する情報は非常にありがたいです。

4

1 に答える 1

1

私が知っていることから、その部屋が持続するように構成され、会話を記録するように設定されている場合にのみ、部屋からチャット履歴を取得できます。サーバーが履歴を返す日数にも制限があります。制限は以前は 2 日間でしたが、長年の議論とその制限を修正するためのいくつかのパッチがありました。

SO に関する別の質問によると、最初に別の XMMP サーバーを介して履歴をプロキシせずに、直接の HTTP 要求を介して履歴を取得することはできません。

最後に、あなたが望むことが可能であるように見えます。XMPP仕様によると。ルームが送信するように構成されていれば、新しいユーザーは参加時にルームの完全な履歴を受信します。したがって、ランダムに作成されたユーザーとして適切に構成されたルームに参加するだけで、探している履歴が得られます。

したがって、これがあなたが実行しているサービスのためのものなのか、それとも他の誰かのサーバーをアーカイブしようとしているのかによって、あなたのマイレージは警戒するかもしれません. サーバーをセットアップすれば、特定の API 呼び出しでなくても可能に見えます。ただし、サービスが制御できない場合は、履歴が存在しない可能性があるため、運が悪い可能性があります...

具体的な解決策を提示できなくても、少しでもお役に立てば幸いです。

サービス発見

サービス ディスカバリのドキュメントによると、リクエストは完了していません。

<iq type='get'
    from='romeo@montague.net/orchard'
    to='plays.shakespeare.lit'
    id='info1'>
  <query xmlns='http://jabber.org/protocol/disco#info'/>
</iq>

gem を使用して XMPP サービスへの基本的な接続を確立する方法について、少し読んだほうがよいのではないでしょうか? これは、開始するために必要なもののようです。gem の仕様を理解するのに役立つ例がたくさんあります...

于 2013-02-03T17:55:14.967 に答える