Проблема с протоколом Jabber

Один из контактов моего джаббер-робота,

чье значение атрибута "подписка" равно "к",

что в соответствии с протоколом Jabber означает:

**** робот подписался на онлайн-статус другой стороны, но другая сторона не подписалась на мой робот.****

Но когда я вхожу в чужую учетную запись,

Я вижу, что робот онлайн,

почему так?

Протокол Jabber сейчас в хаосе?

2 ответа

Если вы скажете "У моего бота есть подписка на берег" или "У берега есть подписка ОТ моего бота", "от" и "до" будет иметь больше смысла.

Итак, если в списке ботов есть:

<item jid='shore@example.com' subscription='to'/>

Тогда бот увидит присутствие берега, но берег не увидит присутствие бота, если предположить, что в списке берега есть:

<item jid='bot@example.com' subscription='from'/>

Эти состояния могут быть не синхронизированы из-за проблем с сетью и тому подобного. В этих случаях самый простой способ решить проблему - это удалить элемент (что должно привести к эффективному удалению элемента с другой стороны), а затем повторно добавить (см. RFC 3921bis, раздел 2.5.1 для получения подробной информации):

<iq from='bot@example.com/background'
   id='delete_1'
   type='set'>
 <query xmlns='jabber:iq:roster'>
   <item jid='shore@example.com' subscription='remove'/>
 </query>
</iq>
<presence type='subscribe' 
          from='bot@example.com/background' 
          to='shore@example.com'/>

Следует иметь в виду, что, даже если подписка идет в указанном направлении, бот МОЖЕТ посылать направленное присутствие на берег, и в этом случае берег будет видеть присутствие обоих, даже если он не подписан на бот. Проверьте протокол протокола бота, и вы можете увидеть что-то вроде:

<presence to='shore@example.com'/>

Прошло много времени с тех пор, как я испортил XMPP, но быстрое перечитывание спецификации заставило меня подумать, что вы перепутали значение "to". Если пользователь указан в списке роботов как "to", то это означает, что пользователь следит за присутствием роботов, а не наоборот. "От" означает, что робот отслеживает или получает разделы присутствия от - учетной записи пользователя.

Вы знаете, как выглядит список пользователей? Если все синхронизировано, список пользователей должен иметь робота в списке "от".

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