Как создать MUC и отправлять сообщения в существующий MUC с помощью Python и XMPP
Вопрос
Мне было интересно, может ли кто -нибудь здесь предоставить некоторые образцы кода в следующих сценариях. Я особенно заинтересован в использовании Xmpppy для этого, так как я уже использую библиотеку для своего приложения, но другие библиотеки тоже в порядке. К сожалению, на веб -сайте проекта XMPPPY нет образцов. Просматривая экспертные/передовые документы API, я не мог понять, как это сделать, или многопользовательский чат (MUC) не поддерживается XMPPPY?
Создайте MUC, приглашая конкретных пользователей (скажем, 2 или 3)
Отправить сообщение существующему MUC (при условии, что вы знаете, что это ручка Muc Jid или прозвище)
Посмотрите на существующие MUCS на сервере XMPP, получая джид или псевдоним и т. Д. Если это сделано, получая список, мы хотим искать только MUCS, игнорируя пользователей.
Я нашел здесь своего рода ответ, но тогда мне, вероятно, придется изучить новые звонки API библиотеки и выяснить, как сделать мои вышеупомянутые сценарии, поскольку этот образец не охватывает их все:
PYXMPP: Быстрый учебник для создания клиента MUC?
Я действительно хочу сделать генератор нагрузки, который накачивает сообщения MUCS и создает большие MUCS со многими участниками. У меня уже есть часть для накачки сообщений получателям пользователей.
Нет правильного решения
Другие советы
XMPPPY поддерживает использование сервисов MUC, но поддержка очень простая, и для управления несколькими комнатами потребуется дополнительный код.
Чтобы «присоединиться» к комнате MUC, вам нужно транслировать свое присутствие в Джид.
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, это будет сделано с помощью Service Discovery.
Хотя я не знаю о конкретном интерфейсе 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