Hi Dave,
This seems to assume that all results from a disco#items request are
uniform. This doesn't jive with my idea of how XMPP in general, and
especially Service Discovery, should work. XEP-0030 clearly explains
that after getting the items, you have to send a separate request to
find out details for such items. From section 2:
Discovering information about a child item MUST be accomplished by
sending a separate discovery request to that item, not to the parent
entity. (One result of this is that discovering complete information
about an entire tree will require multiple request/response pairs in
order to "walk the tree".)
I also note that there is a difference in how the items are returned for
MUC and MIX. For MUC, the items representing occupants have no node
attribute, whereas for MIX the items representing nodes naturally do
have a node attribute.
Section 4.2 (Items Nodes) also seems to imply that the node attribute
for Service Discovery is not meant as a filtering mechanism.
I am curious if just combining them would actually cause problems in
practice. Has this been tested?
--
ralphm
On 2018-09-25 22:32, Dave Cridland wrote:
Ralph,
As I vaguely recall, the problem wasn't disco#info clashing between MUC
and MIX - as you say, those shouldn't clash.
The problem is disco#items, where MIX and MUC use disco#items to yield
entirely different information. MUC will respond with room occupants,
whereas MIX responds with channel nodes. It's the only clash between the
protocols.
Seems fair to have the channel nodes be children of an abstract mix
node. But this should only be needed for disco#items, not disco#info.
Dave.
On Thu, 20 Sep 2018 at 08:43, Ralph Meijer <[email protected]
<mailto:[email protected]>> wrote:
Hi,
Recently I have been looking at discovery of entities to determine what
kind of thing it is, knowing nothing more than its JID. The starting
point is a client that shows a list of entities, based on past
conversations (MAM), ordered by last interaction. Entities could be
regular user accounts, bots, group chat rooms, etc.
The core idea behind XEP-0030 (Service Discovery) is that given a JID,
you can find out what kind of entity it is, by sending a Disco Info
request and getting one or more identities in return. Additional
information like supported features/protocols, and meta-data as Disco
Extension Data Forms (XEP-0128), can be included there, too.
Reading XEP-0369, section 6.3, on discovering channel information, I
see
that it currently requires the node attribute to be set to 'mix'. From
what I understand this is to allow a particular JID to support both MUC
and MIX, and have a way to request the MIX specific information.
The problem I have with this, is that it requires prior knowledge of a
certain JID (also) being a MIX channel. So you can't find out the
identity (the thing that's telling you what a JID is) without knowing
what the thing is. I do understand this works if you start out with
discovering the MIX service first, but I don't believe that should be
the only entry point.
I don't see the need for explicitly asking for the MIX information
(only). XEP-0030 and XEP-0128 support returning multiple identities as
well as multiple extension forms. So a Disco Info result, without node,
could look like this:
<iq from='[email protected]'
id='ik3vs715'
to='[email protected]/UUID-c8y/1573'
type='result'>
<query xmlns='http://jabber.org/protocol/disco#info'>
<identity
category='conference'
name='A Dark Cave'
type='mix'/>
<identity
category='conference'
name='A Dark Cave'
type='text'/>
<feature var='urn:xmpp:mix:core:0'/>
<feature var='urn:xmpp:mam:2'/>
<feature var='http://jabber.org/protocol/muc'/
<http://jabber.org/protocol/muc%27/>>
<feature var='http://jabber.org/protocol/muc#stable_id'/
<http://jabber.org/protocol/muc#stable_id%27/>>
<feature var='muc_passwordprotected'/>
<feature var='muc_hidden'/>
<feature var='muc_temporary'/>
<feature var='muc_open'/>
<feature var='muc_unmoderated'/>
<feature var='muc_nonanonymous'/>
<x xmlns='jabber:x:data' type='result'>
<field var='FORM_TYPE' type='hidden'>
<value>urn:xmpp:mix:core:0</value>
</field>
<field var='Name'>
<value>Witches Coven</value>
</field>
<field var='Description'>
<value>A location not far from the blasted heath where
the three witches meet</value>
</field>
</x>
<x xmlns='jabber:x:data' type='result'>
<field var='FORM_TYPE' type='hidden'>
<value>http://jabber.org/protocol/muc#roominfo</value>
</field>
<field var='muc#roominfo_description'
label='Description'>
<value>The place for all good witches!</value>
</field>
</x>
</query>
</iq>
Note that I included the channel info from section 6.5 here. I was
surprised to find we aren't using XEP-0128 disco extensions instead of
doing a pubsub items request here. I /do/ see the value for having the
pubsub node as way to get notifications on changes, so having both
would
be even better. If you have to do a Disco Info request anyway, it saves
one request.
Finally, section 12, on Registrar Considerations, doesn't mention the
required registration [1] of the identity conference/mix. Unfortunately
one identity can have at most one extension form, so reusing
conference/text is probably not a good idea.
[1] https://xmpp.org/registrar/disco-categories.html#conference
--
ralphm
_______________________________________________
Standards mailing list
Info: https://mail.jabber.org/mailman/listinfo/standards
Unsubscribe: [email protected]
<mailto:[email protected]>
_______________________________________________
_______________________________________________
Standards mailing list
Info: https://mail.jabber.org/mailman/listinfo/standards
Unsubscribe: [email protected]
_______________________________________________
_______________________________________________
Standards mailing list
Info: https://mail.jabber.org/mailman/listinfo/standards
Unsubscribe: [email protected]
_______________________________________________