SpliFF Asked: 2009-06-22 20:09:24 +0800 CST2009-06-22 20:09:24 +0800 CST 2009-06-22 20:09:24 +0800 CST xmpp 在聊天中更改状态 772 我已经使用 ejabberd 建立了实时聊天。它工作得很好,但我希望能够根据谁已经在聊天中以及谁可以自由交谈,对不同的操作员进行循环聊天会话。为了实现这一点,我需要一些方法来根据他们当前是否在私人聊天中更新用户的存在。我目前正在使用 mod_shared_roster 来宣传存在,但它只报告用户是否可用。 这确实需要在服务器端完成,因为我需要依赖不同的 IM 客户端,具体取决于运营商的系统。 xmpp ejabberd 2 个回答 Voted SpliFF 2009-06-22T20:34:03+08:002009-06-22T20:34:03+08:00 我找到了解决方法。由于 livechat 系统使用 jsjac(xmpp 的 javascript 接口),我可以制作自己的存在数据包。当客户端连接到操作员时,我将客户端的状态设置为“聊天”并将状态设置为“ talking to <operator jid>”。 当新客户端连接时,我可以查询所有其他客户端的状态,以查看他们正在与谁聊天,并选择聊天活动最少的运营商。 如果有人知道更好/更简单的方法,我很高兴听到它。 Best Answer smokku 2009-07-17T05:37:30+08:002009-07-17T05:37:30+08:00 您可以考虑在一个帐户和不同资源下连接所有操作员会话。前任。[email protected]/Operator1 [email protected]/Operator2 [email protected]/Operator3 所有优先级为 1。 当操作员与用户聊天时,发送优先级 -1 的出席信息。当用户向“[email protected]”发送消息时,这会从资源池中删除要联系的资源。当操作员完成与用户的聊天时 - 发送优先级为 1 的出席信息。 此模型的一个附加功能是您只有一个 Jabber ID 可以与您的用户交流 - [email protected]
我找到了解决方法。由于 livechat 系统使用 jsjac(xmpp 的 javascript 接口),我可以制作自己的存在数据包。当客户端连接到操作员时,我将客户端的状态设置为“聊天”并将状态设置为“
talking to <operator jid>
”。当新客户端连接时,我可以查询所有其他客户端的状态,以查看他们正在与谁聊天,并选择聊天活动最少的运营商。
如果有人知道更好/更简单的方法,我很高兴听到它。
您可以考虑在一个帐户和不同资源下连接所有操作员会话。前任。[email protected]/Operator1 [email protected]/Operator2 [email protected]/Operator3 所有优先级为 1。
当操作员与用户聊天时,发送优先级 -1 的出席信息。当用户向“[email protected]”发送消息时,这会从资源池中删除要联系的资源。当操作员完成与用户的聊天时 - 发送优先级为 1 的出席信息。
此模型的一个附加功能是您只有一个 Jabber ID 可以与您的用户交流 - [email protected]