Yammer JSON Feed只返回20条消息

时间:2013-12-12 08:22:22

标签: yammer

我正在尝试从特定群组获取所有消息。我得到了json反馈。唯一的问题是,它只返回20条消息。这是默认设置还是其他设置。在执行请求时,有什么方法可以指定我是否需要所有消息,默认情况下只需20条甚至是在开始日期和结束日期之间发布的消息?

我的RestApi电话是:

  

https://www.yammer.com/api/v1/messages/in_group/ [ID]上传.json

来自Yammer开发者文档 <

自动完成:10秒内发出10个请求。

消息:30秒内有10个请求。

通知:30秒内发出10次请求。

所有其他资源:10秒钟内10次请求。

这些限制是独立的,例如在相同的30秒时间内,您可以拨打10个留言和10个通知电话。具体的费率限制可能会发生变化,但遵循以下指南可确保您的应用不被屏蔽。>>

我已尝试使用limit作为参数来更改超过20的消息数。但它似乎无法正常工作?

这是因为速率限制造成的问题。如果没有,问题是什么?

3 个答案:

答案 0 :(得分:6)

Yammers Developer documentation

的官方文件

消息 - 查看消息

终点:

1)用户的所有公共消息(其访问令牌用于进行API调用,此后称为当前用户)Yammer网络。对应于Yammer Web界面中的“所有”对话。

GET https://www.yammer.com/api/v1/messages.json

2)用户的Feed,基于他们在“关注”和“热门”对话之间做出的选择。

GET https://www.yammer.com/api/v1/messages/my_feed.json

3)对应于“热门”对话的用户算法源,这是绝大多数用户将在Yammer Web界面中看到的。

GET https://www.yammer.com/api/v1/messages/algo.json

4)“关注”Feed是与用户关注的人,群组和主题的对话。

GET https://www.yammer.com/api/v1/messages/following.json

5)用户发送的所有消息。 /api/v1/messages/from_user/logged-in_user_id.format的别名。

GET https://www.yammer.com/api/v1/messages/sent.json

6)用户收到的私人消息。

GET https://www.yammer.com/api/v1/messages/private.json

7)用户收到的所有消息。

GET https://www.yammer.com/api/v1/messages/received.json

参数:

消息API端点返回类似的结构并支持以下查询参数:

older_than - 返回早于指定为数字字符串的消息ID的消息。这对于分页消息很有用。例如,如果您当前正在查看20条消息,而最早的消息是2912号,则可以在您的请求中附加“?older_than = 2912”,以便在您看到的消息之前获取20条消息。

newer_than - 返回比指定为数字字符串的消息ID更新的消息。轮询新邮件时应使用此选项。如果您正在查看邮件,并且返回的最新邮件是3516,您可以使用参数“?newer_than = 3516”发出请求,以确保您没有获得页面上已有邮件的重复副本。

threaded = [true |扩展] - threaded = true只返回每个线程中的第一条消息。此参数适用于显示折叠消息线程的应用程序。 threaded = extended将按照最近活动的顺序返回线程启动程序消息以及两条最新消息,因为它们在Yammer Web界面的默认视图中查看。

limit - 仅返回指定数量的邮件。适用于threaded = true和threaded = extended。


注意到您可以在GET请求中设置的 limit 参数 - 所以基于此文档,如果它是正确的(我不是Yammer开发人员,但我确实使用它),您应该能够做

https://www.yammer.com/api/v1/messages.json?limit=50

这是理论上的,但通过文档阅读有关搜索的部分

  

页面 - 每个页面只返回20种类型的结果,但每次查询都会返回总计数。 page = 1(默认值)将返回1-20项,page = 2将返回项目21-30等

对我说,他们只能回复20个结果。

<强>更新

使用https://www.yammer.com/api/v1/messages.json?limit=50对此进行测试后,它不返回50条消息,但执行https://www.yammer.com/api/v1/messages.json?limit=5只会返回5条消息,我会说Yammer会将消息数量限制为{ {1}}在阅读完文档之后我还读了

  

例如,如果您当前正在查看20封邮件,而最早的邮件是2912号邮件,则可以在您的请求中附加“?older_than = 2912”,以便在您看到的邮件之前获取20条消息“

这告诉我他们最多只返回20个。所以我认为你一次只能处理20条消息。

希望这有帮助。

答案 1 :(得分:1)

您需要使用参数: 消息API端点返回类似的结构并支持以下查询参数:

older_than - Returns messages older than the message ID specified as a numeric string. This is useful for paginating messages. For example, if you’re currently viewing 20 messages and the oldest is number 2912, you could append “?older_than=2912″ to your request to get the 20 messages prior to those you’re seeing.

newer_than - Returns messages newer than the message ID specified as a numeric string. This should be used when polling for new messages. If you’re looking at messages, and the most recent message returned is 3516, you can make a request with the parameter “?newer_than=3516″ to ensure that you do not get duplicate copies of messages already on your page.

threaded = [true |扩展] - threaded = true只返回每个线程中的第一条消息。此参数适用于显示折叠消息线程的应用程序。 threaded = extended将按照最近活动的顺序返回线程启动程序消息以及两条最新消息,因为它们在Yammer Web界面的默认视图中查看。

limit - 仅返回指定数量的消息。适用于threaded = true和threaded = extended。

示例:GET https://www.yammer.com/api/v1/messages.json?older_than=2912 虽然旧版可以是第20条消息的ID,依此类推,您可以获得20 x 20

答案 2 :(得分:0)

我通过以递归方式请求后续页面来解决。

您可以简单地增加page参数,直到响应为空,或者更新older_than参数,直到属性meta.older_available为false。