ejabberd(jessie-backportsから16.09)のユーザーのメッセージのアーカイブをmod_mam(例2.ユーザーがアーカイブにメッセージを照会しますが、「No module is handling this query」エラーが発生し続けます。503指定されたユーザー(mod_mam)のアーカイブを照会するときに "service-unavailable"エラーが発生しました
サーバーとの対話は、Babbler Javaクライアントで実行されています。その後、セッション構成に追加されている
@XmlRootElement(name = "query", namespace = "urn:xmpp:mam:2")
@XmlAccessorType(XmlAccessType.FIELD)
public final class UserMessageArchiveQuery {
@XmlAttribute(name = "queryid")
private String queryId;
public UserMessageArchiveQuery() {}
public String getQueryId() {
return queryId;
}
public void setQueryId(String string) {
this.queryId = string;
}
}
:ここ
は、カスタムペイロードクラスです。XmppSessionConfiguration sessionConfiguration =
XmppSessionConfiguration
.builder()
.extensions(Extension.of(UserMessageArchiveQuery.class))
.build();
これで、私はそれに応じてメッセージを送受信できるようになり、正常に動作する接続を確立できます。
XmppClient client = XmppClient.create("localhost", sessionConfiguration, tcpConfiguration, boshConfiguration);
client.connect();
client.login("someuser", password);
ここでは、物事は南に行く。所与のユーザおよびペイロードのIQの準備、およびサーバを照会次のようejabberdのログを覗く
UserMessageArchiveQuery payload = new UserMessageArchiveQuery();
IQ iq = IQ.set(Jid.of("[email protected]"), payload);
return client.query(iq).getResult();
、サーバに送信されたXMLは、次のとおり
<iq id="47a6204a-6ac3-453b-9dfd-7488ec6de734" to="[email protected]" type="set">
<query xmlns="urn:xmpp:mam:2"></query>
</iq>
に我々が得るどの:
packet {xmlel,<<"iq">>,[{<<"type">>,<<"error">>},{<<"from">>,<<"[email protected]">>},{<<"xml:lang">>,<<"en-US">>},{<<"id">>,<<"47a6204a-6ac3-453b-9dfd-7488ec6de734">>}],[{xmlel,<<"query">>,[{<<"xmlns">>,<<"urn:xmpp:mam:2">>}],[]},{xmlel,<<"error">>,[{<<"code">>,<<"503">>},{<<"type">>,<<"cancel">>}],[{xmlel,<<"service-unavailable">>,[{<<"xmlns">>,<<"urn:ietf:params:xml:ns:xmpp-stanzas">>}],[]},{xmlel,<<"text">>,[{<<"xmlns">>,<<"urn:ietf:params:xml:ns:xmpp-stanzas">>}],[{xmlcdata,<<"No module is handling this query">>}]}]}]}
私はmod_mamが有効になっており、私は、「アーカイブ」の表にアーカイブされたメッセージを見ることができるように、正常に動作していることを確信しています。私はさらに進める方法を知らない。