For our xmpp deployment, we mostly use MUCs for spontaneous unique group chat rooms, rather than the irc-model of persistent, moderated rooms.

Luckily for us, XEP-0045 is flexible enough to accommodate this, but lacks one bit of polish in our use cases: the built-in ability to get a list of pending invitees to the current room.

We're currently doing it by having the inviter set the message stanza to type='groupchat' when sending the invite, so other occupants are made aware:

(firstwitch and secondwitch are in the 'darkcave' room)

firstwitch sends invite to thirdwitch:
--
<message from=' [EMAIL PROTECTED]/desktop'
                    to='[EMAIL PROTECTED]'
                    type='groupchat'>
  <x xmlns='http://jabber.org/protocol/muc#user'>
    <invite to='[EMAIL PROTECTED]'/>
  </x>
</message>
--

secondwitch receives:
--
<message from='[EMAIL PROTECTED]/firstwitch'
                    to='[EMAIL PROTECTED]/laptop'
                    type='groupchat'>
  <x xmlns='http://jabber.org/protocol/muc#user'>
    <invite to='[EMAIL PROTECTED]'>
  </x>
</message>

(not shown - the invite message from darkcave to thirdwitch, on behalf of firstwitch)

The new 'outsider' role makes it simple for the decline to be relayed back to the room occupants:

thirdwitch sends decline:
--
<message from='[EMAIL PROTECTED]''
                    to='[EMAIL PROTECTED]'
                    type='groupchat'>
   <x xmlns='http://jabber.org/protocol/muc#user'>
     <decline to='[EMAIL PROTECTED]'/>
   </x>
</message>
--

(not shown - decline message from darkcave to firstwitch)

secondwitch receives:
--
<message from='[EMAIL PROTECTED]'
                    to='[EMAIL PROTECTED]/laptop'
                    type='groupchat'>
  <x xmlns='http://jabber.org/protocol/muc#user'>
    <item affiliation='none'
               jid='[EMAIL PROTECTED]'/pda'
               role='outsider'/>
    <decline to='[EMAIL PROTECTED]'/>
  </x>
</message>
--

Anyway we find this pretty handy, and allows for the client UI to keep a nice updated display of pending invitees.

In addition to 'broadcast invitations', we have added extensions to allow the inviter to cancel its pending invitations at any time, or have the room do it on their behalf after a specified timeout. For the sake of brevity I won't stanza-spam these case unless there is interest :D

I don't know if it any of these features are useful enough to others to consider inclusion into XEP-0045 v 1.23pre3, or some future version?

-James

---
James Tomson
james at wimba dot com

Reply via email to