如何通过REST API获取未读消息在Rocket.chat
你好我已经使用这个https://rocket.chat/docs/developer-guides/rest-api/im/history经由休息API获取未读邮件。如何通过REST API获取未读消息在Rocket.chat
示例呼叫
1)(https://rcserver.rocket.chat/api/v1/im.history?roomId=ByehQjC44FwMeiLbX?&unreads=true)
2)(https://rcserver.rocket.chat/api/v1/im.history?roomId=ByehQjC44FwMeiLbX?&unreads=“+真)
代码
HttpClient client = new HttpClient();
client.BaseAddress = new Uri(Constants.CONST_SITEURL);
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.Add("X-Auth-Token", authToken);
client.DefaultRequestHeaders.Add("X-User-Id", userRcId);
HttpResponseMessage msgHistory = client.GetAsync(Constants.CONST_CHATHISTORY + userDetail.RC_RoomID + "&count=20&unreads=true").Result;
if (msgHistory.IsSuccessStatusCode)
{
using (HttpContent content = msgHistory.Content)
{
var result = content.ReadAsStringAsync();
value = JObject.Parse(result.Result);
}
directChatWindow = JsonConvert.DeserializeObject<DirectChatWindowBO>(value.ToString());
}
我尝试上述链路和代码,但它不会给结果中的任何未读属性
示例结果
{
"messages": [
{
"_id": "7e6691fc-16sdfd3-ecbfsd8-317a-4076bb307e5dfsfd-4564",
"rid": "CBsDHB7M8fsdfsdfN8G4X2BjsBDt5khnkenENacLN",
"msg": "hittti",
"ts": "2017-08-16T11:08:21.011Z",
"u": {
"_id": "CBsDHsdadsaB7M8N8G4X2Bj",
"username": "xyz",
"name": "xyz21"
},
"mentions": [],
"channels": [],
"_updatedAt": "2017-08-16T11:08:21.013Z"
},
{
"_id": "eaf75056-bcxcvxcv40c-4a68-0128-c40503289d60",
"rid": "CBsDHxcvB7M8cvxvxcvN8G4X2BjsBDt5kxcvhnkenENacLN",
"msg": "hi",
"ts": "2017-08-16T11:07:53.579Z",
"u": {
"_id": "CBsDHB7M8N8G4X2Bj",
"username": "Abc",
"name": "Abc123 "
},
"mentions": [],
"channels": [],
"_updatedAt": "2017-08-16T11:07:53.583Z"
}]
}
请帮助我。 谢谢。
由于Rocket.Chat REST API的维护者,你居然引起了我们的关注,其就一直存在很长一段时间了(因为我们从CoffeeScript的转换)的错误。我已经提交了pull request它修正了这个问题,但是拿到unreads出现它需要改变你如何使用im.history
端点。
要使未读取出现,您还必须传入查询参数oldest
,该参数是一个可成功转换为JavaScript Date对象的字符串,请参阅Date.parse()
documentation for details。
示例查询网址如下所示:
http://localhost:3000/api/v1/channels.history?roomName=general&unreads=true&oldest=2017-01-01
然后一个成功的响应,其中包括未读信息如下所示:
{
"messages": [
{
"_id": "pwiJmc7ZfEwebMEKP",
"alias": "",
"msg": "hello ;) ;)",
"attachments": null,
"parseUrls": true,
"bot": null,
"groupable": false,
"ts": "2017-08-18T08:27:26.746Z",
"u": {
"_id": "HL2hEQSGask47a82K",
"username": "graywolf336",
"name": "graywolf336"
},
"rid": "GENERAL",
"mentions": [],
"channels": [],
"_updatedAt": "2017-08-18T08:27:26.749Z"
},
{
"_id": "YRch8iRsur7L6WF5B",
"alias": "",
"msg": "hello world",
"attachments": null,
"parseUrls": true,
"bot": null,
"groupable": false,
"ts": "2017-08-18T08:21:50.072Z",
"u": {
"_id": "HL2hEQSGask47a82K",
"username": "graywolf336",
"name": "graywolf336"
},
"rid": "GENERAL",
"mentions": [],
"channels": [],
"_updatedAt": "2017-08-18T08:21:50.073Z"
}
],
"firstUnread": {
"_id": "3gJZbwLia6tuznPTk",
"t": "uj",
"rid": "GENERAL",
"ts": "2017-07-31T22:53:20.579Z",
"msg": "graywolf336",
"u": {
"_id": "HL2hEQSGask47a82K",
"username": "graywolf336"
},
"groupable": false,
"_updatedAt": "2017-07-31T22:53:20.579Z"
},
"unreadNotLoaded": 259,
"success": true
}
截至2017年8月8日,这将在拉取请求合并之前不能工作。然而,在合并后,这将与开发版本一起工作,一旦Rocket.Chat的版本0.59
被发布,那么你可以更新你的服务器并使用它。
希望这可以帮助,让我知道如果您有任何问题,我会更新我的答案。
免责声明:我是Rocket.Chat的员工和我做维护REST API代码。
会不会是可供私人团体呢?因为当前“firstUnread”块未显示在私人组历史响应中。 – PVR
@PVR是的,它将在频道,群组和直接消息上启用。发布还没有完成,其中包含解决问题的代码,它将在Rocket.Chat的下一个版本中为0.59。 – bradleyhilton
嘿感谢您的回复。将等待下一个版本。 – PVR