0

这就是我要的

  1. 始终显示状态的用户(机器人)Online
  2. 当用户收到消息时,我将点击与用户关联的 webhook
  3. 来自 webhook 请求的响应将作为回复发送给发件人
  4. 该用户将能够截获任何消息(假设是亵渎节制)
  5. 该用户将能够向任何人发送消息(比如说广播)
  6. 该用户将默认进入每个用户名册(如Skype的回声机器人)

我似乎找不到任何关于如何实现这一目标的资源。我找到了一种在 openfire 中拦截传入数据包的方法,但我没有看到使用 MongooseIM 执行此操作的任何简单方法。我还没有开始深入研究源代码,仍在寻找一种方法来做到这一点,而无需接触源代码并将自己锁定到特定版本的 MongooseIM。

4

1 回答 1

2

免责声明:我在 MongooseIM 核心团队。


有多种方法可以实现这一点。实现这一点的最简单方法取决于您对 Erlang 的熟悉程度,这是编写 MongooseIM 的编程语言。

  1. 您不需要任何 Erlang 来使用事件推送模块及其 HTTP 后端和默认设置,但您需要一些 Erlang 来控制将哪些消息转发到 HTTP 服务或进行更复杂的设置。要发回消息,您要么需要使用MongooseIM REST API ,要么使用现有的众多 XMPP 库之一作为普通 XMPP 客户端连接到服务器。这可能是实现目标的最佳方法。
  2. 您可以跳过使用事件推送器,只需将您的机器人连接为以任何语言编写的 XMPP 客户端。该机器人可能包含您的业务逻辑,或者可以将它获取的消息转发到 HTTP 服务。
  3. 如果您习惯在 Erlang 中工作,那么扩展服务器的机制称为Hooks 和处理程序,并在 MongooseIM 官方文档中进行了描述。这需要在 Erlang 中编写代码并从源代码构建,但不一定需要修改上游 MongooseIM 代码。
  4. 您可以使用XMPP 组件协议,它允许扩展 XMPP 服务器的功能,并将其构建为多个服务。组件可以用任何你想要的技术编写,最流行的 XMPP 库应该支持开箱即用的组件协议。

根据您从上述列表中的选择以及您喜欢的语言和环境,您可能必须选择要使用的 XMPP 库。有适用于 iOS(ObjC 和 Swift)、Android(Java 和 Kotlin)、Python、JavaScript、C 的 XMPP 库,甚至还有一些适用于 Rust、Dart 和可能更多的新兴库。

于 2020-09-23T07:28:01.420 回答