ejabberd: подписать пользователя на комнату, вернуть имя комнаты в качестве ответа - PullRequest
0 голосов
/ 07 мая 2019

Я использую Strophe.js вместе с плагином MUC. Я подключен как «агент» в браузере, и я использовал внешний скрипт Python, чтобы добавить «агент» в комнату. Так будет работать приложение: бэкэнд добавит подключенного пользователя в определенные комнаты, но клиент должен знать, куда отправлять сообщения.

def add_user_to_room(user_name, room_name):
    command = 'subscribe_room'
    url = '{}/{}/{}'.format(base_url, api, command)

    data = {
        "user": add_host(user_name)+'/180062769060911144972260',
        "nick": add_host(user_name),
        "room": room_name + '@' + muc_service,
        "nodes": "urn:xmpp:mucsub:nodes:messages,urn:xmpp:mucsub:nodes:affiliations,urn:xmpp:mucsub:nodes:subscribers"
    }

    response = requests.post(url, json=data)
    print('Got result code {} with text {}'.format(response.status_code, response.text))
    return response.status_code, response.text

Это ответ, который я получаю в сокете:

<message xmlns='jabber:client' to='agent@chat.domain.com/6665193359253278721998' from='agent@chat.domain.com'>
  <event xmlns='http://jabber.org/protocol/pubsub#event'>
    <items node='urn:xmpp:mucsub:nodes:subscribers'>
      <item id='8698546583380897793'>
        <subscribe jid='agent@chat.domain.com' nick='agent@chat.domain.com' xmlns='urn:xmpp:mucsub:0'/>
      </item>
    </items>
  </event>
</message>

Есть ли способ получить имя комнаты в браузере, когда внешний скрипт добавляет пользователя в определенную комнату?

...