0
我想通過mod_mam(如所示)查詢ejabberd中用戶的郵件存檔(來自jessie-backports的16.09)示例2.用戶查詢他們的檔案中的消息),但不斷收到「沒有模塊正在處理此查詢」錯誤。當查詢給定用戶的檔案時出現503「服務不可用」錯誤(mod_mam)
與服務器的交互正在使用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對於給定用戶和有效載荷,並且查詢服務器:
UserMessageArchiveQuery payload = new UserMessageArchiveQuery();
IQ iq = IQ.set(Jid.of("[email protected]"), payload);
return client.query(iq).getResult();
在ejabberd日誌偷看,正被髮送到服務器生成的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已啓用並正常工作,因爲我可以在「存檔」表中看到存檔的消息。我不知道如何繼續下去。