在XMPP中如何拥有从单个物理“超级机器人”继承的实际“虚拟机器人”的联系JID?

时间:2016-03-28 14:11:10

标签: xmpp ejabberd bots

如何创建一个通用机器人(称为SUPER BOT),根据命名的JID,它会采取不同的行动?

我不是指XMPP中常见的单机器人JID策略,即mybot @ host对每个用户的响应不同,我的意思是:

  1. 根据分配联系人的JID,SUPER BOT应具有不同的行为。机器人本身是独一无二的(“SUPER BOT”),单个实现/单个脚本,机器人本身没有JID,也不能添加到任何人的联系人。
  2. 公司联系人应该有自己的JID,例如:store1 @ host,它将具有SUPER BOT行为。 SUPER BOT会知道它在store1数据下运行,并且它也会知道它正在与之交互的用户。
  3. 公司联系人必须通过网络界面作为普通联系人创建,但链接到SUPER BOT(实际上是继承SUPER BOT?一种新型联系人?)。
  4. 公司联系人不能在服务器中拥有自己的文件/脚本,而是必须是普通联系人,服务器中唯一的文件/脚本将是SUPER BOT 。< / p>

    示例:对于我的需求,store1 @host必须是继承/实现单件SUPER BOT的联系人,然后机器人将相应地执行store1,由于JID检测到它是store1。

    user1会将store1 @ host添加到他的名单中,在进行对话时,SUPER BOT会知道对话是在store1和user1之间进行的。

    问题

    1. SUPER BOT必须是一个组件?一个模块?协议?什么?

    2. 最重要的问题:商店/公司JID如何充当超级BOT?如何将所有内容链接在一起?

    3. 如何禁用直接用户&lt; - &gt;公司对话,但总是创建一个MUC房间/组与用户&lt; - &gt;公司

    4. 帮助说明预期流量的图表: Diagram to help illustrate the expected flow

      到目前为止我的发现

      我在想像黑客联系人和分配组/角色:(1)用户,(2)公司,然后使用Ejabberd过滤器钩子我将拦截发送给公司用户的消息。这个拦截模块实际上是超级BOT。但是在我看来这种感觉并不正确或可扩展。

      PS:虽然我说Ejabberd,但我正在寻找一种XMPP-ish方式,因为我还没有决定使用哪种服务器。

1 个答案:

答案 0 :(得分:1)

您需要的只是一个组件,可以为其子记录(个人机器人)路由所有流量。

最好的方法是创建符合XEP-0114的组件并将其连接到ejabberd。它将能够以jid@superbot.domain.net的形式处理任意数量的jid。