Если вы скажете, что «у моего бота есть подписка на берег» или «у берега есть подписка от моего бота», «из» и «в» будет иметь больше смысла.
Итак, если в списке ботов есть:
<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'/>