我正在使用Smack来开发一个Java/Spark内部控制面板,该面板可以在LDAP用户组之间启动Google Talk会议。当我运行时
MultiUserChat.isServiceEnabled(connection, "user@mydomain.com")
返回false。我知道通过GMail客户端,可以开始一个群组对话。这可能是因为我的Google Apps域中的某些原因导致了返回false,还是谷歌在Google Talk中使用其他方式进行群组聊天?
我正在使用Smack来开发一个Java/Spark内部控制面板,该面板可以在LDAP用户组之间启动Google Talk会议。当我运行时
MultiUserChat.isServiceEnabled(connection, "user@mydomain.com")
返回false。我知道通过GMail客户端,可以开始一个群组对话。这可能是因为我的Google Apps域中的某些原因导致了返回false,还是谷歌在Google Talk中使用其他方式进行群组聊天?
事实证明,GTalk实际上支持MUC。使用Smack和Java,只需以下简单的代码:
UUID uid = UUID.randomUUID();
String chatRoomName = String.format("private-chat-%1s@%2s", uid, "groupchat.google.com");
MultiUserChat muc = new MultiUserChat(connection, chatRoomName);
muc.join("My username");
从那里开始,只需要像添加以下用户一样:
muc.invite("someguy@somedomain.tld", "Some reason");
MultiUserChat.isServiceEnabled()
进行检查的内容。但是,如果用户使用第三方XMPP客户端(例如Gajim)与谷歌聊天,则可以像任何其他XMPP用户一样加入MUC房间。另请参阅Google产品论坛上的这些问题:http://productforums.google.com/forum/#!topic/chat/HLyMGBxJM7Q。但是有一个例外,请参见此答案。我发现这个:Google Talk多用户聊天规范
它展示了Talk和XMPP规范之间的几个不同之处。希望在talk.google.com服务上创建或加入私人MUC房间的第三方客户端需要遵循这些规范。
房间名称必须遵循private-chat-GUID@groupchat.google.com的特定格式。
从客户端到talk.google.com的存在广播必须包含实体能力元素。
当然,Talk支持XMPP。