Как получить историю чата с помощью библиотеки 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.

https://community.igniterealtime.org/message/249993#249993