И так, бот наш подключается к серверу, теперь можно и к конференциям подключится, как всегда целью нашей будет конференция linux на xdsl.by.

Продолжаем модифицировать класс Bot.
Подключим необходимый заголовочный файл :
#include <gloox/mucroom.h>
Добавим в protected одно поле :
gloox::MUCRoom *room;
Соответственно, указатель на Multi User Conference Room из библиотеки gloox.
В конструктор класса Bot добавим такую строчку :
room = new gloox::MUCRoom( client, std::string("linux@conference.xdsl.by/gloox"), 0, 0 );
В итоге мы создали объект класса gloox::MUCRoom, который будет подключаться к linux@conference.xdsl.by с ником gloox.
Ну а в деструктор :
delete room;
Ну и в завершении правки, изменим Bot::onConnect() таким образом :
virtual void onConnect(){ room->join(); // подключаемся к конференции std::cout << "Соеденилисьn"; }
В итоге, наш бот теперь может подключится к конференции.

Теперь более подробно рассмотрим методы класса gloox::MUCRoom :
/* конструктор */ MUCRoom( /*1*/ ClientBase* parent, /*2*/ const JID& nick, /*3*/ MUCRoomHandler* mrh, /*4*/ MUCRoomConfigHandler* mrch = 0 ); /* 1 указатель на объект gloox::ClientBase, в нашем примере это client 2 ник, содержащий : конференция@сервер/ник_в_конференции 3 указатель на объект класса, перехватывающий события, в нашем случае это 0 4 указатель на объект класса, перехватывающий конфигурацию комнаты */ /* устанавливает пароль, который используется при подключении к конференции */ void setPassword( /*1*/ const std::string& password ); /* 1 пароль */ /* возвращает имя конференции */ const std::string name(); /* возвращает сервер, на котором располагается конференция, к примеру : conference.xdsl.by */ const std::string service(); /* возвращает ник на данной конференции */ const std::string nick(); /* Подключаемся к конференции и устанавливаем статус( опционально ) */ virtual void join( Presence::PresenceType type = Presence::Available, const std::string& status = EmptyString, int priority = 0 ); /* выходим из конференции */ void leave( /*1*/ const std::string& msg = EmptyString ); /* 1 сообщение при выходе, к примеру, "чмоки-поки" */ /* отправляем сообщение в конференцию */ void send( /*1*/const std::string& message ); /* 1 текст сообщения */ /* устанавливаем тему конференции( при наличии прав ) */ void setSubject( /*1*/ const std::string& subject ); /* 1 тема */ /* возвращает текущие права в конференции, почему-то у меня не работает */ MUCRoomAffiliation affiliation() const; /* возвращает текущую роль в конференции, опять же, почему-то не работает */ MUCRoomRole role() const; /* Устанавливаем ник для конференции */ void setNick( /*1*/ const std::string& nick ); /* 1 ник */
Продолжение следует

Навигация по записям