![xmpp 改变聊天状态](https://linux22.com/image/485967/xmpp%20%E6%94%B9%E5%8F%98%E8%81%8A%E5%A4%A9%E7%8A%B6%E6%80%81.png)
我已经使用 ejabberd 设置了实时聊天。它运行良好,但我希望能够根据谁已经在聊天以及谁有空聊天,将聊天会话轮询给不同的操作员。为了实现这一点,我需要某种方式来根据用户当前是否在私人聊天中来更新用户的状态。我目前使用 mod_shared_roster 来通告用户的状态,但它只报告用户是否有空。
这确实需要在服务器端完成,因为我需要依赖不同运营商系统的 IM 客户端。
答案1
答案2
我找到了一个解决方法。由于实时聊天系统使用 jsjac(xmpp 的 javascript 接口),我可以制作自己的在线状态包。当客户端连接到操作员时,我将客户端的在线状态设置为“聊天”,将状态设置为“ talking to <operator jid>
”。
当新客户连接时,我可以查询所有其他客户的状态,以查看他们正在与谁聊天,然后选择聊天最不活跃的操作员。
如果有人知道更好/更简单的方法我很高兴听到。