xmpp 改变聊天状态

xmpp 改变聊天状态

我已经使用 ejabberd 设置了实时聊天。它运行良好,但我希望能够根据谁已经在聊天以及谁有空聊天,将聊天会话轮询给不同的操作员。为了实现这一点,我需要某种方式来根据用户当前是否在私人聊天中来更新用户的状态。我目前使用 mod_shared_roster 来通告用户的状态,但它只报告用户是否有空。

这确实需要在服务器端完成,因为我需要依赖不同运营商系统的 IM 客户端。

答案1

您可以考虑将所有操作员会话连接到一个帐户和不同的资源下。例如[电子邮件保护]/Operator1[电子邮件保护]/Operator2[电子邮件保护]/Operator3 全部优先级为 1。

当操作员正在与用户聊天时,发送优先级为 -1 的状态。当用户向 ' 发送消息时,这会从资源池中移除要联系的资源[电子邮件保护]'. 当操作员结束与用户的聊天时 - 以优先级 1 发送状态信息。

此模型的一个附加功能是,您只有一个 Jabber ID 可以与您的用户进行沟通 -[电子邮件保护]

答案2

我找到了一个解决方法。由于实时聊天系统使用 jsjac(xmpp 的 javascript 接口),我可以制作自己的在线状态包。当客户端连接到操作员时,我将客户端的在线状态设置为“聊天”,将状态设置为“ talking to <operator jid>”。

当新客户连接时,我可以查询所有其他客户的状态,以查看他们正在与谁聊天,然后选择聊天最不活跃的操作员。

如果有人知道更好/更简单的方法我很高兴听到。

相关内容