谷歌聊天服务器存档(XEP-0136)

21

我想知道如何使用 XEP-0136 标准从 Google 服务器检索聊天消息的存档,但是当我尝试请求此功能时,仅得到了以下结果。

请求:

<iq type="get"><pref xmlns="urn:xmpp:archive"/></iq>

响应:

<iq xmlns="jabber:client" type="error" to="myEmail@gmail.com/9FF72CA7">
    <pref xmlns="urn:xmpp:archive"/>
        <error code="501" type="cancel">
            <feature-not-implemented xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/>
        </error>
</iq>

看起来Google没有实现这个功能,但这是真的吗?我不这么认为。

尝试设置隐身时发生了同样的事情,而这绝对是Google服务器支持的功能。

请求:

<iq type="set" id="invisible1" from="myEmail@gmail.com/00230F07">
    <query xmlns="jabber:iq:privacy">
        <active name="invisible"/>
    </query>
</iq>

响应:

<iq xmlns="jabber:client" type="error" id="invisible1" to="myEmail@gmail.com/00230F07">
    <query xmlns="jabber:iq:privacy">
        <active name="invisible"/>
    </query>
    <error code="501" type="cancel">
        <feature-not-implemented xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/>
    </error>
</iq>

所以我可能做错了什么。任何帮助都将不胜感激。


1
谷歌 XMPP 服务器为什么会对你撒谎呢? - Flow
1
我只是猜测,因为我的聊天记录还在。 - Vanya
3个回答

11

我也一直在研究这个问题。正如JoSo所指出的,似乎没有任何XMPP标准可以通过访问聊天历史记录来实现。XMPP与聊天历史记录唯一的交互方式是通过非标准的XMPP扩展启用或禁用Off-the-Record。

话虽如此,官方的Google Chat客户端,例如Chrome扩展程序,他们已经放弃的Windows客户端和Android应用程序均能同步聊天记录。因此,至少外部有一些方法可以访问聊天历史记录。然而,在任何地方都没有关于这个功能的文档,所有在Google论坛上的问题都无人回答。相当多的人猜测它可能是通过XEP-0136实现的,因为这是有道理的,但没有任何官方消息,它也可能是完全专有的XMPP扩展。

对于隐身状态,它得到支持,但是Google又走了自己的路线,而不是使用XEP-0016扩展。至少在这种情况下,他们的方式被记录在这里。因此,只需使用他们的google:shared-status命名空间将自己设置为隐身。

总之,尝试在Google的聊天服务器上使用任何XMPP扩展都非常麻烦,因为许多功能都是专有的,使用自己的奇怪扩展而不是标准,或者根本没有实现。至少一些公共扩展的文档相当不错。

如果你想从谷歌官方获取答案,那么你需要一些运气。大多数第三方客户端(如Pidgin)的Google Talk功能都是由开发人员进行反向工程处理的。在你提问之前,他们的音频/视频和文件传输扩展功能也相对落后于当前标准。


10

谷歌确实保存了您的聊天记录。但是它存储在您的Google Mail帐户中,而不是在XMPP服务器上,因此XEP-0136不可用。

至于状态。您正在尝试设置隐私,这与rfc3921中定义的在线状态不同(请参见http://xmpp.org/rfcs/rfc3921.html)。谷歌没有实现XEP-0126中定义的隐私功能。


嗨JoSo,好的现在我明白了。关于隐身,你是不正确的。如果你阅读XEP-0126隐身http://xmpp.org/extensions/xep-0126.html,你会发现这是正确的方式,但是就像在第一个案例中,Google可能没有这样做。谢谢。 - Vanya
隐身模式在XEP-0126中有定义,但Google没有实现XEP-0126。然而,Google实现了rfc3921,因为如果没有它,它就不会成为聊天客户端。BinaryBucks提供了大量文本和一些链接,介绍了Google的实现方式。我很抱歉没有写很多的散文,并推荐阅读BinaryBucks的答案。 - konqi

0

隐身状态实际上是通过谷歌特定的"共享状态"扩展设置的。

消息检索不通过XMPP公开。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接