获取与 XEP-0313 每次对话的最后一条消息?

2024-01-28

我正在使用一个 XMPP 服务器来实现XEP-0313 http://xmpp.org/extensions/xep-0313.html用于检索对话历史记录。我只想获取每个对话的最后一条消息,以便我可以构建您最近的对话列表,预览最后一条消息。

我已经设法获取所有对话的所有消息,并基于此我可以构建列表,但这是对数据的巨大浪费,而不是一个选择。我不确定这是否是完成此任务的正确扩展,因此如果我应该考虑其他扩展,请引导我走向正确的方向。


您可以轻松做的一件事是首先检索用户的花名册,然后为每个联系人检索最新消息。

<iq from='[email protected] /cdn-cgi/l/email-protection/balcony'
    id='bv1bs71f'
    type='get'>
  <query xmlns='jabber:iq:roster'/>
</iq>

Result:

<iq id='bv1bs71f'
    to='[email protected] /cdn-cgi/l/email-protection/chamber'
    type='result'>
   <query xmlns='jabber:iq:roster' ver='ver7'>
     <item jid='[email protected] /cdn-cgi/l/email-protection'/>
     <item jid='[email protected] /cdn-cgi/l/email-protection'/>
   </query>
 </iq>

检索发件人或收件人的最后一条消息[电子邮件受保护] /cdn-cgi/l/email-protection:

<iq type='set' id='juliet1'>
  <query xmlns='urn:xmpp:mam:1'>
    <x xmlns='jabber:x:data' type='submit'>
      <field var='FORM_TYPE' type='hidden'>
        <value>urn:xmpp:mam:1</value>
      </field>
      <field var='with'>
        <value>[email protected] /cdn-cgi/l/email-protection</value>
      </field>
    </x>
    <set xmlns='http://jabber.org/protocol/rsm'>
      <max>1</max>
      <before/>
    </set>
  </query>
</iq>

当然,用户可以与不在其名册上的人进行对话,但实际上这在 XMPP 上很少见。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

获取与 XEP-0313 每次对话的最后一条消息? 的相关文章

随机推荐

  • WordPress“REST API”-渲染 VisualComposer 内容

    我正在通过 REST API V2 插件从 WordPress 请求内容 这很好用 只剩下一个问题 由 VisualComposer 插件创建的内容不会在 de REST Response 中呈现 回应是 vc row Hello Worl
  • 如何使用vue + axios在get请求中使用async/await?

    我有以下代码 想知道如何使用 async await 执行相同的函数来实现 try catch import Vue from vue import axios from axios new Vue el app data skills m
  • 如何在 Powershell 中使用基于当前日期的名称创建文件夹?

    我有大约 50 个 xml 文件 每次运行特定逻辑时都会新生成这些文件 现在我希望将这 50 个文件存储在特定的日期时间文件夹中 无论我为某个特定日期运行该逻辑多少次 都应该仅针对该特定日期覆盖 xml 文件 基于 hhmmss 简单来说
  • SqlMetal 错误地生成我的存储过程的返回类型 (LINQ)

    您好 有一个存储过程 它总是根据参数返回一行 IF bleh 1 SELECT TOP 1 Xyz FROM Abc ELSE SELECT TOP 1 Def FROM Abc 我必须使用 SqlMetal 生成 DataContext
  • 如何为每个键值选择具有最新时间戳的行?

    我有一张传感器数据表 每行都有一个传感器 ID 时间戳和其他字段 我想为每个传感器选择具有最新时间戳的单行 包括一些其他字段 我认为解决方案是按传感器 id 分组 然后按 max timestamp 排序 如下所示 SELECT senso
  • Android 相当于 iOS MobileSubstrate 风格的挂钩吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 列表理解与映射

    有理由更喜欢使用map https docs python org 3 8 library functions html map过度列表理解还是反之亦然 它们中的任何一个通常比另一个更高效还是被认为更Pythonic map在某些情况下 微
  • C++ 参考——它们只是语法糖吗?

    C 参考只是语法糖 还是在某些情况下提供任何加速 例如 无论如何 指针调用都涉及副本 对于引用调用似乎也是如此 基本机制似乎是相同的 编辑 在大约六个答案和许多评论之后 我仍然认为引用只是语法糖 人们是否可以直接回答 是 或 否 以及是否有
  • 以批处理模式运行时提示输入 SAS ODBC 连接密码

    由于各种原因 我更喜欢尽可能以批处理模式运行 SAS 程序 出于安全原因 我希望每当与 Teredata 仓库建立 ODBC 连接时 SAS 都会提示我输入密码 我可以同时拥有这两个东西吗 以下代码在从 SAS 交互运行时工作正常 但在批量
  • 在 C 函数声明中,“...”作为最后一个参数的作用是什么?

    我经常看到这样声明的函数 void Feeder char buff 这是什么意思 它允许可变数量的未指定类型的参数 例如printf does 您必须使用以下命令访问参数va start va arg and va end功能 See h
  • ZipException:重复条目:com/google/android/gms/internal/zzbtt.class

    错误 任务 app transformClassesWithJarMergingForDebug 执行失败 com android build api transform TransformException java util zip Z
  • ol/ul 应该在

    内部还是外部?

    这两者之间哪个符合标准 p Text text text p ol li First element li ol p Other text text p OR p Text text text p ol li First element l
  • 在 MySQL 插入语句中使用 Python 变量

    我已经尝试了一段时间了 在网上查了一下 但无法弄清楚 变量是numbers and animals sql INSERT INTO favourite number info VALUES numbers animals cursor ex
  • 在 MVC Core 应用程序中使用 AddAzureADB2C 时向 ClaimsPrincipal 添加自定义声明

    使用 azure AzureADB2C 进行身份验证时 我想将在门户中管理的自定义声明添加到声明原则 current code in start up services AddAuthentication AzureADB2CDefault
  • 一次读取时按长度对文件中的所有单词进行排序。 (爪哇)

    我的数据结构课的作业是找到从一个单词到另一个单词的最短路径 即开始 流血 gt 混合 gt 金发 gt 结束 血液 成本为 3 我得到了一个单词列表 我必须使用地图对其进行分组 在哪里 键 单词的长度 值 具有该长度的所有单词的集合 我已经
  • “双重”分配——应该避免吗?

    考虑一下你有一些像这样的表达 i j 0 假设这是在您选择的语言中明确定义的 通常将其分成两个表达式会更好吗 i 0 j 0 我有时会在库代码中看到这一点 就简洁性而言 它似乎并没有给您带来太多好处 并且不应该比这两个语句执行得更好 尽管这
  • Hazelcast 中基于时间的驱逐

    我正在满足一个要求 即我有 N 个 hazelcast 实例在集群中运行 并且 kafka 消费者在所有实例上运行 现在的问题是 kafka 上传入的每条消息都应添加到分布式映射中 并且必须每 20 秒驱逐该条目 这是我通过在映射中结合使用
  • Lint-staged 找不到与 glob 匹配的暂存文件

    我正在使用 NodeJS Typescript 我想设置lint staged在提交之前验证我的文件 但它不起作用 我从指南中添加如下 husky hooks pre commit lint staged lint staged js js
  • 如何将数组中的值复制到新数组中?

    我已经断断续续地尝试解决这个问题一个星期了 但我不断遇到问题 我的目标 编写一个为整数数组分配内存的函数 该函数将整数指针 数组大小和要分配的 newSize 作为参数 该函数返回一个指向分配的缓冲区的指针 第一次调用该函数时 大小将为零并
  • 获取与 XEP-0313 每次对话的最后一条消息?

    我正在使用一个 XMPP 服务器来实现XEP 0313 http xmpp org extensions xep 0313 html用于检索对话历史记录 我只想获取每个对话的最后一条消息 以便我可以构建您最近的对话列表 预览最后一条消息 我