2010-08-20 40 views
6

Tôi đã tự hỏi liệu có ai ở đây có thể cung cấp một số mẫu mã trên các kịch bản sau đây không. Tôi đặc biệt quan tâm đến việc sử dụng xmpppy để làm điều này vì tôi đã sử dụng thư viện cho ứng dụng của mình, nhưng các thư viện khác cũng ok. Thật không may là trang web của dự án xmpppy không có bất kỳ mẫu nào về điều này. Duyệt tài liệu API chuyên gia/nâng cao, tôi không thể tìm ra cách thực hiện hoặc là trò chuyện nhiều người dùng (MUC) không được hỗ trợ với xmpppy?Cách tạo MUC và gửi tin nhắn đến MUC hiện có bằng Python và XMPP

  • tạo MUC bằng cách mời người dùng cụ thể (chẳng hạn 2 hoặc 3)

  • gửi thông điệp tới một MUC hiện (giả sử bạn biết đó là MUC JID xử lý hoặc nickname)

  • nhìn lên hiện MUC trên máy chủ XMPP, nhận được JID hoặc biệt hiệu, v.v. Nếu điều này được thực hiện bằng cách nhận danh sách, chúng tôi chỉ muốn tìm MUC, bỏ qua người dùng.

tôi thấy loại một câu trả lời ở đây, nhưng sau đó tôi có lẽ sẽ phải học các cuộc gọi thư viện API mới và tìm ra cách để làm kịch bản nêu trên của tôi như là mẫu này không bao gồm tất cả trong số họ:

pyxmpp: quick tutorial for creating a muc client?

Tôi thực sự đang tìm kiếm một trình tạo tải để truyền thông điệp tới các MUC và tạo MUC lớn với nhiều người tham gia. Tôi đã có một phần tại chỗ để bơm tin nhắn cho người nhận.

Trả lời

5

Mặc dù tôi không biết về giao diện MUC cụ thể ở đó, xmpppy hỗ trợ các thông điệp tùy chỉnh, vì vậy nó hỗ trợ toàn bộ XMPP.

Để tham gia trò chuyện, bạn cần phải gửi hiện diện stranza, conn.send(xmpp.Presence(to='{0}/{1}'.format(room, nick)))

Để gửi tin nhắn để trò chuyện:

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

Đối với việc tạo ra cuộc trò chuyện mới hoặc tìm nó trong danh sách này, tôi không có mã sẵn sàng trong tầm tay, nhưng nó rất dễ dàng để viết theo cùng một kiểu, chỉ cần nhìn lên stranzas cần thiết trong 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 không hỗ trợ sử dụng dịch vụ MUC, nhưng sự hỗ trợ là rất cơ bản và một số mã bổ sung này sẽ là cần thiết để quản lý nhiều phòng.

Để "tham gia" phòng MUC, bạn cần phát sóng sự hiện diện của mình với JID.

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

Sau đó, để gửi tin nhắn, bạn gửi chúng bằng cách sử dụng loại thông báo 'groupchat' tới phòng JID.

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

Đối với câu hỏi của bạn về việc tìm phòng MUC, điều đó sẽ được thực hiện thông qua khám phá dịch vụ.

+0

có bạn đang sử dụng đúng khám phá, chúng tôi có thể tìm thấy danh sách phòng, nhưng làm cách nào? –

Các vấn đề liên quan