Как создать MUC и отправить сообщения в существующий MUC, используя Python и XMPP - PullRequest
7 голосов
/ 20 августа 2010

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

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

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

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

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

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

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

Ответы [ 2 ]

6 голосов
/ 23 августа 2010

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, то это будет сделано с помощью службы обнаружения.

5 голосов
/ 20 августа 2010

Хотя я не знаю о конкретном интерфейсе 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

...