Yammer REST API - 在更新之前获取所有旧消息,因此不能 return older_than
Yammer REST API - Get all messages older message before newer and therefore cannot return older_than
我们正在尝试检索来自 Yammer 中特定组的所有消息,但在某些情况下检索旧消息时会遇到问题。
示例:
在 Yammer 组中的每个 post 同步添加且不被评论或点赞的完美世界中,我们可以使用参数 older_than:id
轻松检索每条消息
但是,如果对较旧的消息进行了评论,则似乎会在较新的消息之间返回此消息。
这可能会导致边缘情况,其中较旧的消息是消息数组中的最后一项,并且当使用该消息项 id 查询较旧的消息时,我们只会得到比该消息更早的消息,并且有可能不返回介于两者之间的较新消息。
我们正在使用 REST API /messages/in_group/[:group_id].json,记录在此处:
https://developer.yammer.com/docs/messagesin_groupgroup_id
代码示例:
我们已经精简了代码示例来说明我们检索所有消息的方法。
yam.platform.request({
url: 'messages/in_group/' + vm.webpartSettings.feedId + '.json?threaded=true' + (oldest ? ('&older_than=' + oldest) : ''),
method: 'GET',
success: function (response) {
// Parse messages
var lastId;
var parsedMessages = response.messages.map(function (m, i) {
if (i === (response.messages.length - 1)) {
lastId = m.id;
}
return {
id: m.id,
author: response.references.filter(function (r) {
r.type === 'user' && r.id === m.sender_id;
})[0],
date: new Date(m.created_at),
url: m.web_url,
image: getImageFromAttachments(m.attachments),
text: m.body.parsed,
likes: m.liked_by.count,
likedByCurrentUser: m.liked_by.names.some(function (u) {
return u.user_id === response.meta.current_user_id;
})
};
}).filter(function (m) {
return m.image;
});
vm.messages = vm.messages.concat(parsedMessages);
// If there are more messages get them, otherwise render the grid
if (response.meta.older_available) {
getAndParseMessages(lastId);
} else {
// render method removed
}
},
error: function (response) {
// error method removed
}
});
当使用查询参数 threaded:true 调用 API 时,我们希望检索每个线程的线程启动器(第一条消息)并按创建日期而不是 "latest activity" 对它们进行排序.
有谁知道这个功能是如何用来查询旧消息的,还是我们遗漏了什么?
更新
我为 Yammer 创建了一个 Uservoice,以便与完整的 Office 365 开发人员平台集成。您可以在这里投票:https://yammer.uservoice.com/forums/399627-yammer/suggestions/36474385-integrate-yammer-in-the-full-office-365-developer
您应该使用 Data Export API 来完成像这样的批量数据任务。 REST API 是为用户客户端应用程序设计的,以您所遵循的模式查询数据是限制之一。
我们正在尝试检索来自 Yammer 中特定组的所有消息,但在某些情况下检索旧消息时会遇到问题。
示例:
在 Yammer 组中的每个 post 同步添加且不被评论或点赞的完美世界中,我们可以使用参数 older_than:id
轻松检索每条消息但是,如果对较旧的消息进行了评论,则似乎会在较新的消息之间返回此消息。
这可能会导致边缘情况,其中较旧的消息是消息数组中的最后一项,并且当使用该消息项 id 查询较旧的消息时,我们只会得到比该消息更早的消息,并且有可能不返回介于两者之间的较新消息。
我们正在使用 REST API /messages/in_group/[:group_id].json,记录在此处:
https://developer.yammer.com/docs/messagesin_groupgroup_id
代码示例:
我们已经精简了代码示例来说明我们检索所有消息的方法。
yam.platform.request({
url: 'messages/in_group/' + vm.webpartSettings.feedId + '.json?threaded=true' + (oldest ? ('&older_than=' + oldest) : ''),
method: 'GET',
success: function (response) {
// Parse messages
var lastId;
var parsedMessages = response.messages.map(function (m, i) {
if (i === (response.messages.length - 1)) {
lastId = m.id;
}
return {
id: m.id,
author: response.references.filter(function (r) {
r.type === 'user' && r.id === m.sender_id;
})[0],
date: new Date(m.created_at),
url: m.web_url,
image: getImageFromAttachments(m.attachments),
text: m.body.parsed,
likes: m.liked_by.count,
likedByCurrentUser: m.liked_by.names.some(function (u) {
return u.user_id === response.meta.current_user_id;
})
};
}).filter(function (m) {
return m.image;
});
vm.messages = vm.messages.concat(parsedMessages);
// If there are more messages get them, otherwise render the grid
if (response.meta.older_available) {
getAndParseMessages(lastId);
} else {
// render method removed
}
},
error: function (response) {
// error method removed
}
});
当使用查询参数 threaded:true 调用 API 时,我们希望检索每个线程的线程启动器(第一条消息)并按创建日期而不是 "latest activity" 对它们进行排序.
有谁知道这个功能是如何用来查询旧消息的,还是我们遗漏了什么?
更新
我为 Yammer 创建了一个 Uservoice,以便与完整的 Office 365 开发人员平台集成。您可以在这里投票:https://yammer.uservoice.com/forums/399627-yammer/suggestions/36474385-integrate-yammer-in-the-full-office-365-developer
您应该使用 Data Export API 来完成像这样的批量数据任务。 REST API 是为用户客户端应用程序设计的,以您所遵循的模式查询数据是限制之一。