今天我正在使用Hipchat API(v2)并遇到了一个奇怪的问题,我无法真正完成房间的所有历史记录。例如,当我查询特定日期时,它似乎只能检索给定日期的一小部分历史记录。我曾计划简单地遍历房间的所有日期,以我可以使用的格式提取历史记录,但最终达到了这个目标,现在我不确定是否真的可以完全取出历史记录。
我意识到这有点笨重。它将JSON拉成一个字符串,然后我必须将它形成一个哈希值,所以我知道我没有做到这一点就好了,但这里大致是我快速做的只是为了测试{{ 1}} API的方法:
history
显然,对此的扩展只是诅咒所需范围内的日期(使用: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
),但同样,我只获得了房间历史的一小部分。我是否缺少一些额外的参数,以使其按预期工作?
答案 0 :(得分:6)
我得到了这个工作,但这是一个巨大的痛苦。
首先以UTC格式发送当前 时间的查询,但不包括时区,作为开始日期:
这非常繁琐:
400 Bad Request This day has not yet come to pass
。当您收到回复时,请取出最早的items.date
媒体资源,删除时区,然后使用更新的date
参数重新提交上述网址:
请确保包含微秒,以防通知在同一时间内向同一房间发布多条消息。
这将为您提供下一页消息。继续这样做,直到收到少于max-results
条消息为止。
在我完成上述工作之前,我尝试了一个start-index
参数,它会给你几页结果,响应缺少links.next
属性,但它不会给出你完整的历史。在根据statistics.messages_sent
的历史记录中包含9166条消息的聊天室中,它只返回了3217条消息。所以不要使用它。您可以使用statistics.messages_sent
作为完整性检查,以确定是否收到所有消息。
哦是的,last_active
调用中的/v2/room
属性无法信任,因为当通知消息发布到会议室时,它不会更新。