差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
上一修订版 两侧同时换到之后的修订记录
im:server:basics:chatrecord [2019/09/26 08:37]
huanxinfudh [聊天记录]
im:server:basics:chatrecord [2020/09/17 03:18]
huanxinfudh [获取历史消息文件]
行 14: 行 14:
 |from|发送人username| |from|发送人username|
 |to|接收人的username或者接收group的ID| |to|接收人的username或者接收group的ID|
-|chat_type|用来判断单聊还是聊。chat: 单聊;groupchat:​ 群聊|+|chat_type|用来判断单聊、群聊还是聊天室。chat: 单聊;groupchat:​ 群聊;chatroom:​ 聊天室|
 |payload|消息bodies,不同的消息类型;消息ext,自定义扩展属性等| |payload|消息bodies,不同的消息类型;消息ext,自定义扩展属性等|
  
行 197: 行 197:
 ====== REST API ====== ====== REST API ======
  
-导出聊天记录接口不是实时接口,获取成功存在一定的延时,不能够作为实时拉取消息的接口使用。目前提供两种方式来导出聊天记录,即**下载历史消息文件**和**拉取历史消息**两个接口,''​其中拉取历史消息接口为旧有接口并于2017年3月1日起停止使用,建议使用下载历史消息文件接口''​。以下所有 ​API 均需要企业管理员权限才能访问。+导出聊天记录接口不是实时接口,获取成功存在一定的延时,不能够作为实时拉取消息的接口使用。以下 API 均需要企业管理员权限才能访问。
  
 需要使用 REST API 导出聊天记录,可以通过使用文档中嵌入的[[http://​api-docs.easemob.com/​|Easemob REST API]]进行在线测试。 需要使用 REST API 导出聊天记录,可以通过使用文档中嵌入的[[http://​api-docs.easemob.com/​|Easemob REST API]]进行在线测试。
行 203: 行 203:
 ^名称^请求^描述^ ^名称^请求^描述^
 |获取历史消息文件|/​{org_name}/​{app_name}/​chatmessages/​${time}|根据请求的时间范围返回数据的文件,下载查看| |获取历史消息文件|/​{org_name}/​{app_name}/​chatmessages/​${time}|根据请求的时间范围返回数据的文件,下载查看|
-|拉取历史消息''​已停用''​|/​{org_name}/​{app_name}/​chatmessages|根据请求的时间范围实时获取历史聊天记录| 
  
  
行 213: 行 212:
  
 **重要提醒:**获取 token 时服务器会返回 token 有效期,具体值参考接口返回的 expires_in 字段值。由于网络延迟等原因,系统不保证 token 在此值表示的有效期内绝对有效,如果发现 token 使用异常请重新获取新的 token,比如“http response code”返回 401。另外,请不要频繁向服务器发送获取 token 的请求,同一账号发送此请求超过一定频率会被服务器封号,切记,切记!! **重要提醒:**获取 token 时服务器会返回 token 有效期,具体值参考接口返回的 expires_in 字段值。由于网络延迟等原因,系统不保证 token 在此值表示的有效期内绝对有效,如果发现 token 使用异常请重新获取新的 token,比如“http response code”返回 401。另外,请不要频繁向服务器发送获取 token 的请求,同一账号发送此请求超过一定频率会被服务器封号,切记,切记!!
 +
 +''​此接口一次只能获取一个小时的历史消息''​
  
 client_id 和 client_secret 可以在环信管理后台的 [[http://​www.google.com|APP 详情页面]]看到。 client_id 和 client_secret 可以在环信管理后台的 [[http://​www.google.com|APP 详情页面]]看到。
行 257: 行 258:
   "​applicationName":​ "​testapp"​   "​applicationName":​ "​testapp"​
 } }
 +
 +注意:url是有过期时间的,url中的Expires对应的时间戳就是过期时间(秒),请及时通过url下载聊天记录文件,过期后会下载不到,需要重新调用"​获取历史消息文件"​接口获取新的url。
 </​code>​ </​code>​
  
行 285: 行 288:
  
 > 提示 > 提示
 +
 +极少数情况下,聊天记录中的消息可能重复地被记录。
  
 查询的时间格式为10位数字形式(YYYYMMDDHH),​例如要查询2016年12月10号7点到8点的历史记录,则需要输入2016121007,​7:​00:​00的信息也会包含在这个文件里。 查询的时间格式为10位数字形式(YYYYMMDDHH),​例如要查询2016年12月10号7点到8点的历史记录,则需要输入2016121007,​7:​00:​00的信息也会包含在这个文件里。
行 294: 行 299:
 ---- ----
  
-===== 拉取历史消息 ===== 
- 
-根据请求的时间范围一次性获取聊天记录,每次最多返回1000条记录。''​该接口已停用''​ 
-^名称^请求^描述^ 
-|根据 timestamp 查询聊天记录|/​{org_name}/​{app_name}/​chatmessages?​ql=select+*+where+{timestamp}|根据指定的时间范围获取历史消息| 
-|分页获取数据|/​{org_name}/​{app_name}/​chatmessages?​ql=select+*+where+{timestamp}|分页获取根据指定的时间范围获取历史消息| 
-==== 根据 timestamp 查询聊天记录 ==== 
- 
-在 URL 后面加上参数''​ql=select * where timestamp>​1403164734226''​或者''​ql=select * where timestamp<​1403164734226''​。“=”后的参数需要转义。 
-如只取最近的消息可以只用''​timestamp>​1403166586000''​,然后记录获取到的最后一条消息的 timestamp,作为下次获取时使用的 timestamp,按此方法往下查询。 
-需要导出聊天记录的,可以结合 cursor 分页来查询出所需要的聊天记录。聊天记录查询接口返回数据已经按照 timestamp 字段做了升序排序。 
-不能使用 and、or 等操作符来组成这种查询''​ql=select * where timestamp<​1403164734226 and timestamp>​1403166586000''​。 
- 
- 
-=== HTTP Request === 
- 
-^{{:​im:​server:​ready:​get.png?​nolink&​90 |}}^**/​{org_name}/​{app_name}/​chatmessages?​ql=select+*+where+{timestamp}**^ 
-请求参数中{timestamp}代表的是时间范围,详情见描述 
- 
-=== Request Headers === 
- 
-^参数^说明^ 
-|Content-Type|application/​json| 
-|Authorization|Bearer ${token}| 
- 
-=== Response Body === 
- 
-^参数^说明^ 
-|msg_id|消息ID| 
-|timestamp|消息发送时间| 
-|from|发送人username| 
-|to|接收人的username或者接收group的ID| 
-|chat_type|用来判断单聊还是群聊。chat:​ 单聊;groupchat:​ 群聊| 
-|payload|消息bodies,不同的消息类型;消息ext,自定义扩展属性等| 
- 
- 
-=== 请求示例 === 
- 
-<code php> 
-curl -X GET -i -H "​Authorization:​ Bearer YWMtxc6K0L1aEeKf9LWFzT9xEAAAAT7MNR_9OcNq-GwPsKwj_TruuxZfFSC2eIQ"​ "​https://​a1.easemob.com/​easemob-demo/​chatdemoui/​chatmessages?​ql=select+*+where+timestamp>​1403164734226"​ 
-</​code>​ 
- 
-=== 可能返回的结果示例 === 
- 
-**返回值200,表示成功返回了聊天记录文件下载地址** 
- 
-<code json> 
-{ 
- "​count"​ : 10, 
- "​cursor"​ : "​asdsdfaee", ​ 
- "​entities"​ : [ 
- { 
- } 
- ] 
-} 
-</​code>​ 
- 
-**返回值400,表示参数 ql 结构错误** 
- 
-**返回值401,表示未授权[无token、token错误、token过期]** 
- 
-如果返回结果是<​wrap em>​5xx</​wrap>​,有可能代表该接口被限流了,请稍微暂停一下并重试。详见[[im:​450errorcode:​45restastrict|接口限流说明]] 
- 
-[[http://​api-docs.easemob.com/​|使用 Easemob REST API 在线测试]] 
- 
----- 
- 
-==== 分页获取数据 ==== 
-使用 limit 参数获取数据完毕后,如果后边还有数据,会返回一个不为空的 cursor 回来,使用这个 cursor 就能进行分页获取了。 
-分页示例:根据之前获取数据返回的 cursor 继续获取后面的20条数据。在 URL 后面加上参数 cursor,ql 语句保持不变。 
-**(一分钟最多调用10次,每次 limit 最大值为1000。)** 
- 
-=== HTTP Request === 
- 
-^{{:​im:​server:​ready:​get.png?​nolink&​90 |}}^**/​{org_name}/​{app_name}/​chatmessages?​ql=select+*+where+{timestamp}**^ 
-请求参数中{timestamp}代表的是时间范围,详情见描述 
- 
-=== Request Headers === 
- 
-^参数^说明^ 
-|Content-Type|application/​json| 
-|Authorization|Bearer ${token}| 
- 
-=== Response Body === 
-在返回值中查看entities字段包含的信息 
-^参数^说明^ 
-|msg_id|消息ID| 
-|timestamp|消息发送时间| 
-|from|发送人username| 
-|to|接收人的username或者接收group的ID| 
-|chat_type|用来判断单聊还是群聊。chat:​ 单聊;groupchat:​ 群聊| 
-|payload|消息bodies,不同的消息类型;消息ext,自定义扩展属性等| 
- 
- 
-=== 请求示例 === 
- 
-<code php> 
-curl -X GET -i -H "​Authorization:​ Bearer YWMtxc6K0L1aEeKf9LWFzT9xEAAAAT7MNR_9OcNq-GwPsKwj_TruuxZfFSC2eIQ"​ "​https://​a1.easemob.com/​easemob-demo/​testapp/​chatmessages?​ql=select+*+where+timestamp>​1403164734226&​limit=20&​cursor=MTYxOTcyOTYyNDpnR2tBQVFNQWdHa0FCZ0ZHczBKN0F3Q0FkUUFRYUdpdkt2ZU1FZU9vNU4zVllyT2pqUUNBZFFBUWFHaXZJUGVNRWVPMjdMRWo5b0w4dEFB"​ 
-</​code>​ 
- 
-=== 可能返回的结果示例 === 
- 
-**返回值200,表示成功返回了聊天记录文件下载地址** 
- 
-<code json> 
-{ 
- "​count"​ : 10, 
- "​cursor"​ : "​asdsdfaee", ​ 
- "​entities"​ : [ 
- { 
- } 
- ] 
-} 
-</​code>​ 
- 
-**返回值400,表示参数 ql 结构错误** 
- 
- 
-**返回值401,表示未授权[无token、token错误、token过期]** 
- 
- 
-如果返回结果是<​wrap em>​5xx</​wrap>​,有可能代表该接口被限流了,请稍微暂停一下并重试。详见[[im:​450errorcode:​45restastrict|接口限流说明]] 
- 
-[[http://​api-docs.easemob.com/​|使用 Easemob REST API 在线测试]] 
- 
- 
----- 
-<WRAP group> 
-<WRAP half column> 
-上一页:[[im:​server:​basics:​chatroom|聊天室管理]] 
-</​WRAP>​ 
  
-<WRAP half column> 
-下一页:[[im:​server:​basics:​fileoperation|文件上传下载]] 
-</​WRAP>​ 
-</​WRAP>​