Я пытался получить заархивированные сообщения от MAM и использовал встроенные функции smack api для извлечения всех заархивированных сообщений пользователя, скажем, abc@xmpp.domain.com, используя queryArchive (...) и все егодругие перегруженные варианты всегда возвращают счет 0
try {
if (lastMessageMamId == null) {
mamQueryResult = getArchivedMessages(mamManager,chat.getUser().getJid().toString(), PAGE_SIZE);
// mamQueryResult = mamManager.queryArchive(50);
} else {
mamQueryResult = mamManager.pageAfter(chat.getUser().getJid(), lastMessageMamId, PAGE_SIZE);
}
}
и всегда возвращают счет 0 в качестве результата для переадресованных сообщений для инициализации mamManager с использованием
org.jivesoftware.smackx.mam.MamManager mamManager
= org.jivesoftware.smackx.mam.MamManager.getInstanceFor(connection);
. Я также создал метод для полученияархивированные сообщения, создавая пользовательский пакет с началом и концом, я думаю, что он также создается внутри другого метода, который принимает дату начала и окончания (queryArchive (...))
public org.jivesoftware.smackx.mam.MamManager.MamQueryResult getArchivedMessages(org.jivesoftware.smackx.mam.MamManager mamManager, String jid, int maxResults) {
//MamManager mamManager = MamManager.getInstanceFor(connection);
try {
DataForm form = new DataForm(DataForm.Type.submit);
FormField field = new FormField(FormField.FORM_TYPE);
field.setType(FormField.Type.hidden);
field.addValue(MamElements.NAMESPACE);
form.addField(field);
//FormField formField = new FormField("with");
Calendar calendar = Calendar.getInstance();
calendar.get(Calendar.DAY_OF_MONTH-1);
FormField formField = new FormField("start");
formField.addValue("2010-06-07T00:00:00Z");
form.addField(formField);
FormField formField2 = new FormField("end");
formField2.addValue("2019-04-08T18:10:02.907Z");
form.addField(formField2);
RSMSet rsmSet = new RSMSet(maxResults);
return mamManager.page(form,rsmSet);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
, но такжевернуть тот же счетчик 0, но я видел архивную таблицу на сервере, в ней есть сообщения, но я не уверен, что мне не хватает, я также пытался запросить маму, используя
mamQueryResult = mamManager.queryArchive(50);
но та же проблема
<iq id="H6q9q-60" type="set">
<query xmlns="urn:xmpp:mam:1" queryid="825e94c6-bd82-421e-b362-90072b421606">
<x xmlns="jabber:x:data" type="submit">
<field var="FORM_TYPE" type="hidden">
<value>urn:xmpp:mam:1</value>
</field>
<field var="start">
<value>2010-06-07T00:00:00Z</value>
</field>
<field var="end">
<value>2019-04-08T18:10:02.907Z</value>
</field>
</x>
<set xmlns="http://jabber.org/protocol/rsm">
<max>50</max>
</set>
</query>
</iq>
Я также пытался использовать pageBefore (...) и pageAfter (...), которые также, кажется, неработатьНа данный момент я не уверен, что мне не хватает и что мне нужно сделать. Это какая-то проблема, связанная с сервером, в которой я тоже не уверен.