503 Ошибка "недоступен сервис" при запросе архива данного пользователя (mod_mam)

Я пытаюсь запросить архив сообщений для пользователя в ejabberd (16.09 из jessie-backports) через mod_mam (как указано в примере 2. Пользователь запрашивает в своем архиве сообщения), но продолжает получать "Ни один модуль не обрабатывает этот запрос " ошибка.

Взаимодействие с сервером осуществляется с помощью Java-клиента Babbler.

Вот пользовательский класс полезной нагрузки:

@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("someuser@localhost"), payload);
return client.query(iq).getResult();

Посмотрев на логи ejabberd, получаемый в результате XML, отправляемый на сервер, выглядит следующим образом:

<iq id="47a6204a-6ac3-453b-9dfd-7488ec6de734" to="someuser@localhost" type="set">
    <query xmlns="urn:xmpp:mam:2"></query>
</iq>

На что мы получаем:

packet {xmlel,<<"iq">>,[{<<"type">>,<<"error">>},{<<"from">>,<<"someuser@localhost">>},{<<"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.

Другие вопросы по тегам