2017-06-30 36 views
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已啓用並正常工作,因爲我可以在「存檔」表中看到存檔的消息。我不知道如何繼續下去。

回答

1

ejabberd目前不支持urn:xmpp:mam:2。

相關問題