哪个钩子可以限制用户每天可以发送的消息数量?

Which hook to limit the number of messages a user can send per day?

我们想在具有相当独特和业务规则的 Web 应用程序的上下文中使用 ejabberd,因此我们需要让每条聊天消息(不是协议消息,而是用户发送给另一个人的消息)通过我们的 web 应用程序,然后让 web 应用程序代表用户将消息传递给 ejabberd(如果我们的业务规则允许发送消息)。

Web 应用程序也是提供联系人列表的应用程序(如果我对 ejabberd 的理解正确,则称为花名册)。我们需要成为并保持唯一的事实来源,以简化维护工作。

对我们来说,ejabberd 的附加值是向客户近乎实时地传送聊天消息,并启用状态指示器等很酷的功能。 Web 客户端将通过 websocket 保持与 ejabberd 的直接连接,但就聊天消息而言,此连接必须是只读的,就状态消息而言,该连接必须是可读写的。

音频和视频通话的情况类似。虽然这一次调用 per see 将直接由 ejabberd 管理以利用内置的 STURN、TURN 等...并且不需要通过我们的网络应用程序,但我们有自定义业务逻辑来管理谁能够调用谁、何时、多久等...(换句话说,我们有自定义业务逻辑来授权或不授权调用,我们希望将所有业务逻辑集中在 Web 应用程序中)。

我的问题是,为了实现我们所追求的目标,我们需要研究哪些合适的钩子?我花了一个小时左右的时间在文档中,但我找不到我想要的东西,所以希望有人能给我指点。在理想情况下,我们希望从我们的 Web 应用程序公开 ejabberd 挂钩可以命中的 API 个端点。然而,第一个问题是:ejabberd 提供了哪些相关的钩子,这些钩子记录在哪里?

任何帮助将不胜感激,谢谢!

当客户端向 ejabberd 发送数据包时,它会触发 user_send_packet 挂钩,提供数据包和客户端会话进程的状态。几个模块使用该挂钩,例如 mod_service_log.