2010-08-20 64 views
6

我想知道這裏的任何人是否可以在下列情況下提供一些代碼示例。我特別感興趣的是使用xmpppy來做到這一點,因爲我已經在使用我的應用程序庫,但其他庫也可以。不幸的是,xmpppy項目網站上沒有任何樣本。瀏覽專家/高級API文檔,我無法弄清楚如何去做,或者多用戶聊天(MUC)不支持xmpppy?如何使用Python和XMPP創建MUC並將消息發送到現有的MUC

  • 邀請特定用戶(比如說2或3)

  • 發送消息到現有的MUC創建MUC(假設你知道這是MUC JID手柄或暱稱)

  • 查找現有XMPP服務器上的MUC,獲取JID或暱稱等。如果通過獲得名單來完成此操作,我們只希望查找MUC,而忽略用戶。

,我發現這裏的排序的答案,但我很可能要學習新的庫API調用,並找出如何做我上面提到的情況,因爲這樣品不涵蓋所有的人:

pyxmpp: quick tutorial for creating a muc client?

我真正希望做的是泵消息MUCs,創造了許多與會者大MUCs負載生成器。我已經拿到了用於向用戶收件人提供信息的部分。

回答

5

雖然我不知道特定的MUC接口,但xmpppy支持自定義消息,因此它支持整個XMPP。

要加入聊天,您需要發送存在stranza,conn.send(xmpp.Presence(to='{0}/{1}'.format(room, nick)))

要發送信息聊天:

stranza = "<message to='{0}' type='groupchat'><body>{1}</body></message>".format(room, text) 
    conn.send(stranza) 

至於創造新的聊天或在名冊尋找它,我不手邊有現成的代碼,但它很容易以同樣的方式來寫,只是仰望需要stranzas在XEPs:

http://xmpp.org/extensions/xep-0045.html#createroom

http://xmpp.org/extensions/xep-0045.html#disco-rooms

http://xmpp.org/extensions/xep-0045.html#invite

5

Xmpppy不支持使用MUC服務,但是支持是很基本的,將需要一些額外的代碼來管理多個房間。

要「加入」MUC房間,您需要將您的狀態廣播到JID。

conn.send(xmpp.Presence(to="%s/%s" % (room, nickname))) 

然後發送消息,您使用'groupchat'消息類型將它們發送到房間JID。

msg = xmpp.protocol.Message(body=text) 
msg.setTo(room) 
msg.setType('groupchat') 
conn.send(msg) 

至於你有關尋找MUC房間的問題,這將通過服務發現完成。

+0

是的你是對的使用發現我們可以找到房間列表,但如何? – 2014-07-18 07:52:20