2017-08-17 52 views
1

你好我已经使用这个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" 
}] 
} 

请帮助我。 谢谢。

回答

5

由于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代码。

+0

会不会是可供私人团体呢?因为当前“firstUnread”块未显示在私人组历史响应中。 – PVR

+0

@PVR是的,它将在频道,群组和直接消息上启用。发布还没有完成,其中包含解决问题的代码,它将在Rocket.Chat的下一个版本中为0.59。 – bradleyhilton

+0

嘿感谢您的回复。将等待下一个版本。 – PVR

相关问题