И так, бот наш подключается к серверу, теперь можно и к конференциям подключится, как всегда целью нашей будет конференция 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 ник
*/
Продолжение следует