Как получить историю чата с помощью библиотеки Java Smack с сервера openfire?
после установки плагина Open Archive на сервере Openfire я вижу чат-разговор между двумя пользователями из админ-панели openfire, что довольно просто, и это тоже веб-сайт. Теперь я хочу повторить этот разговор или историю чата из клиентского приложения чата(написанного на java), где я использовал библиотеку Smack. Я не нашел для этого никакого полезного ресурса. Любой совет будет полезен.
4 ответов
Smack только что реализовал функцию MAM [XEP 0313] , но еще не выпущен, надеюсь получить его в следующем выпуске, если вы хотите использовать эту функцию построить библиотеку smack из источник или вы можете использовать пользовательский IQ для получения архивированных сообщений с сервера.
это может быть поздний ответ, но теперь, как SMACK API поддерживает XEP-0136 и XEP-0313, поэтому ниже код может помочь людям посадки на эту страницу.
public MamManager.MamQueryResult getArchivedMessages(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");
formField.addValue(jid);
form.addField(formField);
// "" empty string for before
RSMSet rsmSet = new RSMSet(maxResults, "", RSMSet.PageDirection.before);
MamManager.MamQueryResult mamQueryResult = mamManager.page(form, rsmSet);
return mamQueryResult;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
решение, которое вы ищете, подпадает под архивирование сообщений XEP-0136 спецификации XMPP, но Smack еще не реализовал эти функции. но вы можете получить историю сообщений с сервера, используя функции "custom-stanza", предоставляемые Smack API. Следующие ссылки описывают как отправить заказ строфы. "Как получить историю чата с помощью библиотеки Java Smack с сервера openfire?".
наконец-то я получил ответ. Архивные функции обмена сообщениями в настоящее время не реализованы в библиотеке Smack.