如何通过API从Hipchat获取房间的所有消息历史记录?

氨基甲酸酯

今天有点使用Hipchat API(v2),遇到了一个奇怪的问题,即我无法真正了解房间的所有历史记录。例如,当我查询一个特定日期时,它似乎只会检索给定日期的历史记录的一小部分。我本来打算简单地遍历一个房间的所有日期,以一种我可以使用的格式提取历史记录,但是最终还是碰到了这个问题,现在不确定是否真的有可能完全提取历史记录。

我意识到这有点笨拙。它以字符串的形式提取JSON,然后我必须将其形成为哈希值,所以我知道我做得并不尽如人意,但这只是我快速测试一下的大致history方法API:

api_token = "MY_TOKEN"

client = HipChat::Client.new(api_token, :api_version => 'v2')
history = client['ROOM_NAME'].history

history = JSON.parse(history)

history.each do |key, history|
  if history.is_a? Array
    history.each do |message|
      if message.is_a? Hash
        puts "#{message['from']['name']}: #{message['message']}"
      end
    end
  end
end

显然,对此的扩展是只是在所需范围内诅咒日期(使用:)client['ROOM_NAME'].history(:date => '2010-11-19', :timezone => 'PST'),但是同样,我只得到了房间历史的一小部分。为了使它按预期工作,我是否缺少一些其他参数?

安德鲁多顿

我完成了这项工作,但这是一个很大的痛苦。

首先以UTC当前 时间发送查询,但不包括时区作为开始日期:

https:// internal-hipchat-server / v2 / room / 2 / history?reverse = false&date = 2015-06-25T20:42:18.658439&max-results = 1000&auth_token = XXX

这很奇怪:

  • 如API中所述,如果仅指定当前日期而不指定时区,则该日期将被解释为昨晚的午夜,并且您只会收到昨天或更早的消息。
  • 如果您尝试指定明天的日期,则响应为400 Bad Request This day has not yet come to pass
  • 如果您将时间指定为2015-06-25T20:42:18.658439 + 00:00(HipChat API响应中使用的时间格式),则HipChat的解析器似乎会失败并将其解释为昨晚的午夜。

当您获得响应时,请使用最早的items.date属性,删除时区,然后使用更新的date参数重新提交上述URL

https:// internal-hipchat-server / v2 / room / 2 / history?reverse = false&date = 2015-06-17T19:56:34.533182&max-results = 1000&auth_token = XXX

如果通知在同一秒内将多条消息发布到同一房间,请确保包含微秒。

这将为您提供下一页消息。继续这样做,直到收到的max-results信息少于返回的信息为止

start-index完成上述工作之前,我尝试传递一个参数,它会给您几页结果,并且响应缺少links.next属性,但不会提供完整的历史记录。在根据的历史记录中有9166条消息的聊天室中statistics.messages_sent,它仅返回3217条消息。所以不要使用它。您可以statistics.messages_sent用作是否检查所有消息的健全性检查。

哦,是的,通话中last_active属性/v2/room无法信任,因为通知消息发布到会议室时它不会更新。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在aSmack API中获取加入房间的历史记录?

来自分类Dev

是否可以通过 Viber API 获取消息历史记录?

来自分类Dev

获取所有AD用户的登录历史记录

来自分类Dev

如何访问所有Emacs命令的历史记录?

来自分类Dev

如何获取CLPPLUS SQL命令的所有历史记录?

来自分类Dev

TFS API:如何获取文件的历史记录?

来自分类Dev

如何在Chrome扩展程序中使用历史记录API获取浏览历史记录

来自分类Dev

我用--depth 1克隆存储库后如何获取所有git历史记录?

来自分类Dev

如何获取Google Chrome v17存档5个月前的所有历史记录?

来自分类Dev

如何从log4j的日志文件中获取Apache Camel消息历史记录?

来自分类Dev

如何在 git 分支中获取给定作者的提交消息历史记录?

来自分类Dev

通过Web API或libspotify获取Spotify播放历史记录

来自分类Dev

在单个SVN分支上进行GIT迁移-无法获取中继的所有历史记录

来自分类Dev

拉力赛回溯:帮助根据未来状态获取所有历史记录

来自分类Dev

在单个SVN分支上进行GIT迁移-无法获取中继的所有历史记录

来自分类Dev

意外单击“关闭有关文件历史记录的消息”。如何重新打开它们?

来自分类Dev

是否可以搜索所有bash历史记录

来自分类Dev

Perforce删除所有历史记录

来自分类Dev

从所有git历史记录中删除文件

来自分类Dev

显示进程的所有堆栈历史记录

来自分类Dev

Perforce删除所有历史记录

来自分类Dev

如何通过Google App脚本获取单元格编辑历史记录?

来自分类Dev

Chrome扩展程序历史记录API是否未显示所有结果?

来自分类Dev

从TeamCity API获取统计历史记录

来自分类Dev

获取Paypal API上的付款历史记录

来自分类Dev

如何清除git历史记录中的所有先前提交?

来自分类Dev

如何在git中查找历史记录中包含提交的所有引用

来自分类Dev

如何清除历史记录并从头开始运行所有迁移?

来自分类Dev

如何进行SSH并删除所有以前的SSH活动历史记录?

Related 相关文章

  1. 1

    如何在aSmack API中获取加入房间的历史记录?

  2. 2

    是否可以通过 Viber API 获取消息历史记录?

  3. 3

    获取所有AD用户的登录历史记录

  4. 4

    如何访问所有Emacs命令的历史记录?

  5. 5

    如何获取CLPPLUS SQL命令的所有历史记录?

  6. 6

    TFS API:如何获取文件的历史记录?

  7. 7

    如何在Chrome扩展程序中使用历史记录API获取浏览历史记录

  8. 8

    我用--depth 1克隆存储库后如何获取所有git历史记录?

  9. 9

    如何获取Google Chrome v17存档5个月前的所有历史记录?

  10. 10

    如何从log4j的日志文件中获取Apache Camel消息历史记录?

  11. 11

    如何在 git 分支中获取给定作者的提交消息历史记录?

  12. 12

    通过Web API或libspotify获取Spotify播放历史记录

  13. 13

    在单个SVN分支上进行GIT迁移-无法获取中继的所有历史记录

  14. 14

    拉力赛回溯:帮助根据未来状态获取所有历史记录

  15. 15

    在单个SVN分支上进行GIT迁移-无法获取中继的所有历史记录

  16. 16

    意外单击“关闭有关文件历史记录的消息”。如何重新打开它们?

  17. 17

    是否可以搜索所有bash历史记录

  18. 18

    Perforce删除所有历史记录

  19. 19

    从所有git历史记录中删除文件

  20. 20

    显示进程的所有堆栈历史记录

  21. 21

    Perforce删除所有历史记录

  22. 22

    如何通过Google App脚本获取单元格编辑历史记录?

  23. 23

    Chrome扩展程序历史记录API是否未显示所有结果?

  24. 24

    从TeamCity API获取统计历史记录

  25. 25

    获取Paypal API上的付款历史记录

  26. 26

    如何清除git历史记录中的所有先前提交?

  27. 27

    如何在git中查找历史记录中包含提交的所有引用

  28. 28

    如何清除历史记录并从头开始运行所有迁移?

  29. 29

    如何进行SSH并删除所有以前的SSH活动历史记录?

热门标签

归档