gpt4 book ai didi

xmpp - 在不开始聊天的情况下发送 XMPP 消息

转载 作者:行者123 更新时间:2023-11-30 23:56:26 29 4
gpt4 key购买 nike

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

我的设置是这样的:

  • 我有 洋泾浜在配置为使用帐户运行的机器上运行 x@xyz.com .
  • 我有 我自己的 jabber 客户 配置为使用同一帐户运行 x@xyz.com .
  • 可能有其他 XMPP 客户端 .

    这是我的要求:

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

    现在我已经对我的客户进行了编码以自动回复。这工作正常。但我面临的问题是,一旦我回复(我使用 smack 库),发送到 x@xyz.com 的所有后续消息都只能由我的 XMPP 客户端接收。这显然是一个问题,因为我自己的客户端非常垃圾并且没有 UI,所以我看不到发送给我的其余消息,从而使我“丢失”消息。

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

    我希望我的问题很清楚。
  • 最佳答案

    您可能必须为您的机器人设置一个负面的存在优先级..

    首先要知道的是,在 XMPP 协议(protocol)中,每个客户端都应该有一个完整的 JID。这是一个简单的 JID - 在你的情况下 x@xyz.com 最后有一个资源,例如x@xyz.com/pidgin 或 x@xyz.com/home(其中/pidgin 和/home 是资源)。这是应该如何实现将消息路由到不同客户端的一部分。

    然后是存在节。当上线时,客户端通常会向服务器发送一个在线状态节。这通知例如如果客户可以聊天或外出吃午饭。可以与此信息一起发送优先级。当有多个客户端连接时,具有最高优先级的客户端将接收发送到裸 JID 的消息(例如 ClientA(prio=50) 和 ClientB(prio=60) -> ClientB 接收发送到 x@xyz 的消息。 com)。但也有消极的优先事项。小于 0 的优先级表示永远不应向该客户端发送任何消息。这样的节可能看起来像这样

    <presence from="x@xyz.com/bot">
    <priority>-1</priority>
    </presence>

    这可能适合您的情况。请记住,它还取决于您的帐户所在的 XMPP 服务器,它可能会也可能没有完全实现协议(protocol)的这一部分。

    总结一下:我建议您查看 Smack API 如何在连接后立即为您的机器人客户端设置状态并将优先级设置为 <0。

    关于xmpp - 在不开始聊天的情况下发送 XMPP 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4112306/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com