Как создать MUC и отправлять сообщения в существующий MUC с помощью Python и XMPP

Мне было интересно, может ли кто-нибудь здесь предоставить несколько примеров кода для следующих сценариев. Меня особенно интересует использование xmpppy для этого, поскольку я уже использую библиотеку для своего приложения, но другие библиотеки тоже подходят. К сожалению, на веб-сайте проекта xmpppy нет примеров. Просматривая экспертную/расширенную документацию по API, я не мог понять, как это сделать, или многопользовательский чат (MUC) не поддерживается с помощью xmpppy?

  • создать MUC, пригласив определенных пользователей (скажем, 2 или 3)

  • отправить сообщение на существующий MUC (при условии, что вы знаете, что это дескриптор или псевдоним MUC JID)

  • поиск существующих MUC на сервере XMPP, получение JID или псевдонима и т. д. Если это делается путем получения списка, мы хотим искать только MUC, игнорируя пользователей.

Я нашел ответ здесь, но тогда мне, вероятно, придется изучить новые вызовы API библиотеки и выяснить, как выполнять мои вышеупомянутые сценарии, поскольку этот пример не охватывает все из них:

pyxmpp: краткое руководство по созданию клиента muc?

Я действительно хочу сделать генератор нагрузки, который перекачивает сообщения в MUC и создает большие MUC со многими участниками. У меня уже есть часть для пересылки сообщений пользователям-получателям.


person David    schedule 20.08.2010    source источник


Ответы (2)


Хотя я не знаю о конкретном интерфейсе MUC, xmpppy поддерживает пользовательские сообщения, поэтому он поддерживает весь XMPP.

Чтобы присоединиться к чату, отправьте сообщение о присутствии, 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)

Что касается создания нового чата или поиска его в реестре, у меня нет под рукой готового кода, но его легко написать таким же образом, просто ищите нужные транзы в XEP:

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

person Daniel Kluev    schedule 20.08.2010

Xmpppy поддерживает использование сервисов MUC, но эта поддержка очень проста, и для управления несколькими комнатами потребуется дополнительный код.

Чтобы «присоединиться» к комнате MUC, вам нужно транслировать свое присутствие в JID.

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

Затем, чтобы отправлять сообщения, вы отправляете их, используя тип сообщения «групповой чат», на JID комнаты.

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

Что касается вашего вопроса о поиске комнат MUC, это будет сделано с помощью службы обнаружения.

person Andrew Williams    schedule 23.08.2010
comment
Да, вы правы, используя Discovery, мы можем найти список комнат, но как? - person Jigar Bhatt; 18.07.2014