发送XMPP消息而不启动聊天

发送XMPP消息而不启动聊天,xmpp,smack,Xmpp,Smack,我基本上是在编写一个XMPP客户端来自动回复特定的聊天消息 我的设置如下: 我在我的机器上运行pidgin,配置为使用帐户运行x@xyz.com. 我有自己的jabber客户端,配置为使用相同的帐户运行x@xyz.com. 可能还有其他XMPP客户机 以下是我的要求: 我正在尝试自动处理我在gtalk上收到的某些类型的消息。因此,每当我收到一条特定的消息,例如:你好,我自己的XMPP客户机应该自动回复“很好”。你好吗在客户端答复之前和之后发送的所有邮件x@xyz.com但是应该被所有的客户端接收

我基本上是在编写一个XMPP客户端来自动回复特定的聊天消息

我的设置如下:

我在我的机器上运行pidgin,配置为使用帐户运行x@xyz.com. 我有自己的jabber客户端,配置为使用相同的帐户运行x@xyz.com. 可能还有其他XMPP客户机

以下是我的要求:

我正在尝试自动处理我在gtalk上收到的某些类型的消息。因此,每当我收到一条特定的消息,例如:你好,我自己的XMPP客户机应该自动回复“很好”。你好吗在客户端答复之前和之后发送的所有邮件x@xyz.com但是应该被所有的客户端接收我自己的客户端没有UI,只能响应特定的消息

现在我已经将我的客户编码为自动回复。这个很好用。但我面临的问题是,一旦我回复,我就会使用smack库,所有随后发送到x@xyz.com仅由我的XMPP客户端接收。这显然是一个问题,因为我自己的客户机非常垃圾,没有UI,所以我无法看到发送给我的其余消息,从而使我丢失消息

我在其他XMPP客户机上也观察到了同样的行为。现在的问题是,这是XMPP的要求吗?很抱歉,我没有很好地阅读XMPP协议。是否可以对XMPP客户端进行编码,以向用户发送回复,并且仍然能够在当前侦听消息的所有客户端中接收所有后续消息?让我的客户机成为一个成熟的XMPP客户机是一个解决方案,但我不想走这条路


我希望我的问题是清楚的

您可能必须为您的机器人设置负的状态优先级

首先要知道的是,在XMPP协议中,每个客户机都应该有一个完整的JID。这是一个赤裸裸的JID-在你的情况下x@xyz.com最后有一个资源,例如。x@xyz.com/洋泾浜x@xyz.com/home,其中/pidgin和/home是资源。这是如何将消息路由到不同客户机的一部分

然后是临场节。联机时,客户机通常向服务器发送状态节。这会通知客户是否可以聊天或外出就餐。与此信息一起可以发送一个优先级。当连接多个客户端时,具有最高优先级的客户端将接收发送到裸JID的消息,例如ClientPrio=50和ClientBprio=60->ClientB接收发送到的消息x@xyz.com. 但也有消极的优先事项。优先级小于0表示不应向该客户端发送任何消息。这样一节可能是这样的

<presence from="x@xyz.com/bot">
    <priority>-1</priority>
</presence>
这可能适合你的情况。请记住,这还取决于您的帐户所在的XMPP服务器,该服务器可能完全实现了协议的这一部分,也可能尚未完全实现


因此,总结一下:我建议您查看Smack API如何设置状态并将优先级设置为感谢,我将查看它并发回评论