Я пытаюсь создать чат с несколькими пользователями. Я получаю ошибку при входе в комнату. Метод создания чата:Ошибка при входе в комнату MUC в XMPP (smack)
public void createMultiUserChatRoom(String roomName, String nickName) {
// Get the MultiUserChatManager
MultiUserChatManager multiUserChatManager = MultiUserChatManager.getInstanceFor(connection);
// Get a MultiUserChat using MultiUserChatManager
MultiUserChat multiUserChat = multiUserChatManager.getMultiUserChat(roomName+"@conference.localhost");
try {
multiUserChat.create(nickName);
Form form = multiUserChat.getConfigurationForm();
Form submitForm = form.createAnswerForm();
List<FormField> formFieldList = submitForm.getFields();
for (FormField formField : formFieldList) {
if(!FormField.Type.hidden.equals(formField.getType()) && formField.getVariable() != null) {
submitForm.setDefaultAnswer(formField.getVariable());
}
}
submitForm.setAnswer("muc#roomconfig_persistentroom", true);
submitForm.setAnswer("muc#roomconfig_publicroom", true);
multiUserChat.sendConfigurationForm(submitForm);
} catch (Exception e) {
e.printStackTrace();
}
}
способ соединения MUC номер:
public void joinMultiUserChatRoom(String userName, String roomName) {
// Get the MultiUserChatManager
MultiUserChatManager manager = MultiUserChatManager.getInstanceFor(connection);
// Create a MultiUserChat using an XMPPConnection for a room
MultiUserChat multiUserChat = manager.getMultiUserChat(roomName + "@conference.localhost");
DiscussionHistory history = new DiscussionHistory();
history.setMaxStanzas(-1);
try {
multiUserChat.join(userName, "", history, connection.getPacketReplyTimeout());
} catch (Exception e) {
e.printStackTrace();
}
}
Getting список присоединенной комнату пользователем:
public List<String> getJoinedGroupByUserName(String userName) {
// Get the MultiUserChatManager
MultiUserChatManager manager = MultiUserChatManager.getInstanceFor(connection);
List<String> joinedRooms = null;
try {
// Get the rooms where [email protected] has joined
joinedRooms = manager.getJoinedRooms(userName+"@conference.localhost");
} catch (Exception e) {
e.printStackTrace();
}
return joinedRooms;
}
Хотя пользователь присоединиться к комнате я получаю это message: «Эта комната заблокирована от записи до подтверждения конфигурации».
Я отправляю конфигурацию при создании комнаты. Нужно ли мне снова отправлять конфигурацию при входе в комнату? И комната существует (есть запись для комнаты в базе данных) – Jennifer
Нет, просто создайте время, но «создайте» он будет готов ТОЛЬКО после того, как CREATOR присоединится к комнате. Однако, возможно, в комнате для постоянных гостей вы также должны отправить создателя конфигурации в качестве владельца (muC# roomconfig_roomowners -> Список владельцев) –
MrPk
Я пытаюсь присоединиться к участнику здесь для чата. Поэтому для этого мне также нужно добавить комнатных владельцев? Мне нужно добавить членов комнаты позже, поэтому я не могу добавить его при создании комнаты MUC – Jennifer