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

StackOverflow https://stackoverflow.com/questions/3528373

  •  30-09-2019
  •  | 
  •  

Вопрос

Мне было интересно, может ли кто -нибудь здесь предоставить некоторые образцы кода в следующих сценариях. Я особенно заинтересован в использовании 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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top