[jdev] SleekXMPP, XEP-0004, XEP-0050 and sender JabberID
Mateusz Biliński
mateusz.bilinski at gmail.com
Thu Jan 29 18:24:10 CST 2009
On Wed, Jan 28, 2009 at 20:41, Remko Tronçon <remko at el-tramo.be> wrote:
>> Has anybody used SleekXMPP [1] (or SleekBot [2]) to handle forms with
>> XEP-0004 [3] (+ XEP-0050 [4])?
>
> Yes, it's even used in the book ;-)
Great to hear that. It's a really nice lib IMHO. :)
>> My question is how to get JID of sender in command handler - the only thing
>> that it gets is 'form' and 'sessionid' (and none of this can point out to
>> full jid of sender).
>
> self.xmpp.plugin['xep_0050'].sessions[sessionId]['jid']
Unfortunately, this does not work for me. I get KeyError (no 'jid').
Here's what's in my self.bot.plugin['xep_0050'].sessions[sessionID]:
{'next':
<bound method memberbot.votingHandler of
<plugins.memberbot.memberbot object at 0x339fa90>>,
'past':
[(<sleekxmpp.plugins.xep_0004.Form object at 0x33c9a10>, None)]}
Item at 'next' key is my command handler. At 'past' I have Form object from
which I cannot however JID (as stated in previous posts). I get these at
breakpoint in my handler method.
These values are set in xep_0050.handler_command (or
xep_0050.handler_command_next) in xep_0050.py plugin file.
I think I've pretty much investigated all surroundings of 'sessions'
dictionary and I cannot find sender JID.
I've checked out latest SleekXMPP version from SVN to see whether I don't have
some old version, but the code is pretty much the same in that file.
Maybe I'm missing something?
Of course, I could add code to above metioned xep_0050 methods (patching
SleekXMPP), like this one (to make your code work):
self.sessions[sessionid]['jid'] = xml.attrib['from']
However, I want to avoid changing libs code locally. Other approach would be
patch SleekXMPP officially - I don't have anything against it, but (once
again) maybe I'm missing something :)
--
Regards,
Mateusz Biliński
More information about the JDev
mailing list