Я использую 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>
Есть ли способ получить имя комнаты в браузере, когда внешний скрипт добавляет пользователя в определенную комнату?