Having trouble with Workgroup.joinQueue

Hi,

I am trying to write a simple servlet/jsp based client using smack/smackx and the fastpath plugin, but I am having some trouble when the client attempts to join a group chat room.

The client code looks something like this.

public void joinQueue() {

XMPPConnection connection = new XMPPConnection(“localhost”);
connection.connect();
connection.loginAnonymously();

workgroup= new Workgroup(“demo@workgroup.craigp-desktop”, connection);
if ( workgroup.isAvailable() ) {

workgroup.addInvitationListener(new WorkgroupInvitationListener() {
public void invitationReceived(WorkgroupInvitation workgroupInvitation) {
System.out.println("Invitation recieved to " + workgroupInvitation.getGroupChatName());
}
});

}
workgroup.joinQueue(new Form(“result”));

}

This seems to be mostly working, the agent receives an invitation to join a chat. A group chat room is created and the agent joins that. Next I was expecting the client’s invitationReceived listener method to be called, notifying the client that they can join the room, but it is never called. If I attach a QueueListener I get a joinedQueue() callback, but no departedQueue(), even though the client does appear to leave the workgroup’s queue.

Can anyone shed any light on this?

Thanks very much,

Craig.

Hi Craig,

Have you checked that you have registered IQ and Extension Providers, needed to work with FastPath?

e.g. we use the following when working with FastPath:

private static void setupProviders() {

addExtensionProvider(QueueDetails.ELEMENT_NAME, QueueDetails.NAMESPACE, new QueueDetails.Provider());

addExtensionProvider(QueueOverview.ELEMENT_NAME, QueueOverview.NAMESPACE, new QueueOverview.Provider());

addExtensionProvider(GroupChatInvitation.ELEMENT_NAME, GroupChatInvitation.NAMESPACE, new GroupChatInvitation.Provider());

addExtensionProvider(SessionID.ELEMENT_NAME, SessionID.NAMESPACE, new SessionID.Provider());

addExtensionProvider(MetaData.ELEMENT_NAME, MetaData.NAMESPACE, new MetaDataProvider());

    addIQProvider("offer", "[http://jabber.org/protocol/workgroup](http://jabber.org/protocol/workgroup)", new OfferRequestProvider());

    addIQProvider("offer-revoke", "[http://jabber.org/protocol/workgroup](http://jabber.org/protocol/workgroup)", new OfferRevokeProvider());

    addIQProvider("transcript", "[http://jivesoftware.com/protocol/workgroup](http://jivesoftware.com/protocol/workgroup)", new TranscriptProvider());

    addIQProvider("transcripts", "[http://jivesoftware.com/protocol/workgroup](http://jivesoftware.com/protocol/workgroup)", new TranscriptsProvider());

    addIQProvider("workgroups", "[http://jabber.org/protocol/workgroup](http://jabber.org/protocol/workgroup)", new AgentWorkgroups.Provider());

}

private static void addIQProvider(String elementName, String namespace, IQProvider provider) {

ProviderManager.getInstance().addIQProvider(elementName, namespace, provider);

}

private static void addExtensionProvider(String elementName, String namespace, PacketExtensionProvider provider) {

ProviderManager.getInstance().addExtensionProvider(elementName, namespace, provider);

}

private static void setupProviders() {

addExtensionProvider(QueueDetails.ELEMENT_NAME, QueueDetails.NAMESPACE, new QueueDetails.Provider());

addExtensionProvider(QueueOverview.ELEMENT_NAME, QueueOverview.NAMESPACE, new QueueOverview.Provider());

addExtensionProvider(GroupChatInvitation.ELEMENT_NAME, GroupChatInvitation.NAMESPACE, new GroupChatInvitation.Provider());

addExtensionProvider(SessionID.ELEMENT_NAME, SessionID.NAMESPACE, new SessionID.Provider());

addExtensionProvider(MetaData.ELEMENT_NAME, MetaData.NAMESPACE, new MetaDataProvider());

    addIQProvider("offer", "[http://jabber.org/protocol/workgroup](http://jabber.org/protocol/workgroup)", new OfferRequestProvider());

    addIQProvider("offer-revoke", "[http://jabber.org/protocol/workgroup](http://jabber.org/protocol/workgroup)", new OfferRevokeProvider());

    addIQProvider("transcript", "[http://jivesoftware.com/protocol/workgroup](http://jivesoftware.com/protocol/workgroup)", new TranscriptProvider());

    addIQProvider("transcripts", "[http://jivesoftware.com/protocol/workgroup](http://jivesoftware.com/protocol/workgroup)", new TranscriptsProvider());

    addIQProvider("workgroups", "[http://jabber.org/protocol/workgroup](http://jabber.org/protocol/workgroup)", new AgentWorkgroups.Provider());

}

private static void addIQProvider(String elementName, String namespace, IQProvider provider) {

ProviderManager.getInstance().addIQProvider(elementName, namespace, provider);

}

private static void addExtensionProvider(String elementName, String namespace, PacketExtensionProvider provider) {

ProviderManager.getInstance().addExtensionProvider(elementName, namespace, provider);

}

Hope this helps

Regards

Stuart

Thanks Stuart,

That infact was my problem. After registering the extension providers I am now recieving the apprpriate callbacks via the listeners.

Cheers,

Craig.