Проблема в создании чата на сервере openfire - PullRequest
4 голосов
/ 30 августа 2011

Когда я пытаюсь создать комнату в Многопользовательском чате (MUC), сервер отвечает: «Эта комната заблокирована от входа до подтверждения конфигурации».Как я могу преодолеть это?

Заранее спасибо

Ответы [ 2 ]

7 голосов
/ 31 августа 2011

Вам необходимо отправить конфигурационную форму для комнаты. Если вы используете smack, код будет выглядеть примерно так:

Form submitForm = multiUserChat.getConfigurationForm().createAnswerForm();
submitForm.setAnswer("muc#roomconfig_publicroom", false);
submitForm.setAnswer("muc#roomconfig_roomname", room);
multiUserChat.sendConfigurationForm(submitForm);
1 голос
/ 04 декабря 2014

У меня была эта проблема при использовании Candy Chat 1.7.1 с Openfire 3.9.3.

Мне потребовалось некоторое время, чтобы потренироваться, но после прочтения спецификации многопользовательского чата: http://xmpp.org/extensions/xep-0045.html#createroom

Я в конце концов решил это; сначала со Строфой, потом с того, что нашли путь Кенди.

Итак, чтобы ответить на ваш вопрос:

В Строфе

После создания комнаты путем отправки присутствия (Пример 153 в спецификации)

Я отправил ниже (согласно Примеру 155 в спецификации)

conn.sendIQ($iq({
    type: "set",
    to: escapedRoomId,
    from: me.getEscapedJid(),
    id: "create:" + conn.getUniqueId()
}).c("query", {
    xmlns: "http://jabber.org/protocol/muc#owner"
}).c("x", {
    xmlns: "jabber:x:data",
    type: "submit"
}));

где conn - Строфа. Соединение

Тогда, чтобы помочь другим, у кого может быть такая же проблема в Candy Chat:

В Candy Chat

После поиска битов сообщения Strophe выше в связке конфетных библиотек я нашел это:

createInstantRoom: function(room, success_cb, error_cb) {
    var roomiq;
    roomiq = $iq({
        to: room,
        type: "set"
    }).c("query", {
        xmlns: Strophe.NS.MUC_OWNER
    }).c("x", {
        xmlns: "jabber:x:data",
        type: "submit"
    });
    return this._connection.sendIQ(roomiq.tree(), success_cb, error_cb);
},

Итак, это решает проблему в Candy Chat.

$(Candy).on('candy:view.room.after-add', function(evt, args) {
    Candy.Core.getConnection().muc.createInstantRoom(Candy.Util.escapeJid(args.roomJid));
});

Раздражительно просто, когда знаешь как. Между прочим, я думаю, что метод должен называться configureAsInstantRoom, и в Candy chat должна быть опция для этого метода init или аналогичного.

...