4

我正在尝试从特定组中获取所有消息。我收到了 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条消息的数量。但它似乎不起作用?

这个问题是因为速率限制吗?如果不是,有什么问题?

4

3 回答 3

7

Yammers 开发者文档中的官方文档


消息 - 查看消息

端点:

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

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

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

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)“关注”提要是涉及用户关注的人、组和主题的对话。

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 端点返回类似的结构并支持以下查询参数:

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

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

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

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


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

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

那是理论上的,但通读文档有一个关于搜索的部分

page - 每页仅返回每种类型的 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 将消息数量限制为20此外,在阅读了更多文档之后,我阅读了

例如,如果您当前正在查看 20 条消息并且最早的消息是编号 2912,您可以在请求中附加“?older_than=2912”,以获取您正在查看的消息之前的 20 条消息”

这告诉我他们最多只能返回 20 条消息。所以我认为您一次只能收到 20 条消息。

希望这可以帮助。

于 2013-12-12T08:31:24.277 回答
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.

线程= [真 | extended] - 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 乘以 20

于 2014-06-25T07:09:49.037 回答
0

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

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

于 2014-04-11T07:00:04.380 回答