XMPP4r - Невозможно получить автономные сообщения
Я пытаюсь получить историю многопользовательского группового чата openfire, используя библиотеку ruby xmpp4r с сервером openfire. Я могу создать запрос, но не получаю ответа от сервера. Ниже приведен запрос на обнаружение
iqr = Iq.new(:get,"example.com")
iqr.add_namespace("http://jabber.org/protocol/disco#info")
client.send(iqr)
и это запрос, который оформлен
<iq to='example.com' type='get' xmlns='http://jabber.org/protocol/disco#info'/>
но я не получаю ответ от сервера. Я следовал XEP-0160 и XEP-0013.
Что мне здесь не хватает?
Предоставляет ли openfire историю чатов в комнатах? Есть ли API для этого?
Любая помощь высоко ценится. И я не очень понимаю OpenFire, поэтому любая информация о нем очень ценится.
1 ответ
Из того, что я знаю, вы можете извлечь историю чата из комнаты, только если эта комната была настроена на сохранение и настроена на запись разговоров. Существует также ограничение на количество дней, за которые сервер возвращает историю. Раньше этот лимит составлял 2 дня, но давным-давно обсуждались некоторые исправления, чтобы исправить это ограничение.
В соответствии с другим вопросом здесь, на SO, невозможно извлечь историю через прямой HTTP-запрос, не проксируя историю сначала через отдельный сервер XMMP, это то, что вы пытаетесь сделать, или вы разговариваете с сервером Openfire?
В заключение кажется, что то, что вы хотите, было бы возможно. Согласно спецификации XMPP. любой новый пользователь получит полную историю комнаты при присоединении, при условии, что комната была настроена на ее отправку. Таким образом, простое присоединение к правильно сконфигурированной комнате в качестве случайно созданного пользователя даст вам историю, которую вы ищете.
Таким образом, в зависимости от того, работает ли эта служба или вы пытаетесь заархивировать чужой сервер, ваш учет может быть опасен. Если вы настроите сервер, это будет возможно, даже если не с помощью специального вызова API. Однако, если служба находится вне вашего контроля, вам может не повезти, поскольку история может просто отсутствовать...
Надеюсь, что это помогло вам немного, даже если я не могу дать конкретное решение.
Обнаружение услуг
В соответствии с документацией по обнаружению услуги ваш запрос не завершен:
<iq type='get'
from='romeo@montague.net/orchard'
to='plays.shakespeare.lit'
id='info1'>
<query xmlns='http://jabber.org/protocol/disco#info'/>
</iq>
Может быть, вам стоит немного прочитать о том, как установить базовое соединение со службой XMPP с помощью гема? Похоже, это то, что вам нужно, чтобы начать. У них есть много примеров, которые должны помочь вам с особенностями гемов...