拉取群漫游消息

最近更新时间:2019-08-02 18:37:49

背景说明

  • 即时通信 IM 的群消息是按 Seq 排序的,按照 server 收到群消息的顺序分配 Seq,先发的群消息 Seq 小,后发的 Seq 大。
  • 如果用户想拉取一个群的全量消息,首次拉取时不用填拉取 Seq,Server 会自动返回最新的消息,以后拉取时拉取 Seq 填上次返回的最小 Seq 减1。
  • 如果返回消息的 IsPlaceMsg 为1,表示这个 Seq 的消息或者过期、或者存储失败、或者被删除了。

功能说明

App 管理员可以通过该接口拉取群组的漫游消息。

接口调用说明

适用的群组类型

群组类型 支持此 REST API
私有群(Private)
公开群(Public)
聊天室(ChatRoom)
音视频聊天室(AVChatRoom) 否(见说明)
在线成员广播大群(BChatRoom) 否(见说明)

即时通信 IM 内置以上五种群组类型,详情请参阅 群组系统

说明:

音视频聊天室和在线成员广播大群不存储漫游消息。

请求 URL 示例

https://console.tim.qq.com/v4/group_open_http_svc/group_msg_get_simple?sdkappid=88888888&identifier=admin&usersig=xxx&random=99999999&contenttype=json

请求参数说明

下表仅列出调用本接口时涉及修改的参数及其说明,更多参数详情请参考 REST API 简介

参数 说明
v4/group_open_http_svc/group_msg_get_simple 请求接口
sdkappid 创建应用时即时通信 IM 控制台分配的 SDKAppID
identifier 必须为 App 管理员帐号,更多详情请参见 App 管理员
usersig App 管理员帐号生成的签名,具体操作请参见 生成 UserSig
random 请输入随机的32位无符号整数

最高调用频率

100次/秒。如需提升调用频率,请根据 工单模板 提交工单申请处理。

请求包示例

  • 基础形式
    拉取群组的漫游消息,返回群组最新的 ReqMsgNumber 条消息。

    {
      "GroupId": "@TGS#15ERQPAER",    //拉取消息的群 ID
      "ReqMsgNumber": 2      //需要拉取的消息条数
    }
  • 按 seq 拉取
    按指定 seq 拉取群组的漫游消息;
    返回消息 seq 小于等于 ReqMsgSeq 的 ReqMsgNumber 条消息。

    {
      "GroupId": "@TGS#15ERQPAER",
      "ReqMsgSeq": 7803321,       //请求的消息最大 seq,返回 <=ReqMsgSeq 的消息
      "ReqMsgNumber": 2
    }

请求包字段说明

字段 类型 属性 说明
GroupId String 必填 要拉取漫游消息的群组 ID
ReqMsgNumber Integer 必填 拉取的漫游消息的条数,目前一次请求最多返回20条漫游消息,所以这里最好小于等于20
ReqMsgSeq Integer 选填 拉取消息的最大 seq

应答包体示例

{
    "ActionStatus": "OK",
    "ErrorInfo": "",
    "ErrorCode": 0,
    "GroupId": "@TGS#15ERQPAER",
    "IsFinished": 1,
    "RspMsgList": [
        {
            "From_Account": "144115197276518801",
            "IsPlaceMsg": 0,
            "MsgBody": [
                {
                    "MsgContent": {
                        "Data": "\b\u0001\u0010\u0006\u001A\u0006猫瞳",
                        "Desc": "MIF",
                        "Ext": ""
                    },
                    "MsgType": "TIMCustomElem"
                },
                {
                    "MsgContent": {
                        "Data": "",
                        "Index": 15
                    },
                    "MsgType": "TIMFaceElem"
                }
            ],
            "MsgRandom": 51083293,
            "MsgSeq": 7803321,
            "MsgTimeStamp": 1458721802
        },
        {
            "From_Account": "144115198339527735",
            "IsPlaceMsg": 0,
            "MsgBody": [
                {
                    "MsgContent": {
                        "Data": "\b\u0001\u0010\u0006\u001A\u000F西瓜妹妹。",
                        "Desc": "MIF",
                        "Ext": ""
                    },
                    "MsgType": "TIMCustomElem"
                },
                {
                    "MsgContent": {
                        "Text": "报上来"
                    },
                    "MsgType": "TIMTextElem"
                }
            ],
            "MsgRandom": 235168582,
            "MsgSeq": 7803320,
            "MsgTimeStamp": 1458721797
        }
    ]
}

应答包字段说明

字段 类型 说明
ActionStatus String 请求处理的结果,OK 表示处理成功,FAIL 表示失败
ErrorInfo String 错误信息
ErrorCode Integer 错误码,0表示成功,非0表示失败
GroupId String 请求中的群组 ID
IsFinished Integer 是否返回了请求区间的全部消息,当消息长度太长或者区间太大(超过20)导致无法返回全部消息时值为0
RspMsgList Array 返回的消息列表
From_Account String 消息的发送者
IsPlaceMsg Integer 是否是空洞消息,当消息被删除或者消息过期后,MsgBody 为空,这个字段为1
MsgRandom Integer 消息随机值,用来对消息去重,有客户端发消息时填写,如果没有填,服务端会自动生成一个
MsgSeq Integer 消息 seq,用来标识唯一消息,值越小发送的越早
MsgTimeStamp Integer 消息被发送的时间戳,server 的时间
MsgBody Array 消息内容

错误码说明

除非发生网络错误(例如502错误),否则该接口的 HTTP 返回码均为200。真正的错误码,错误信息是通过应答包体中的 ErrorCode、ErrorInfo 来表示的。
公共错误码(60000到79999)参见 错误码 文档。
本 API 私有错误码如下:

错误码 描述
10002 服务器内部错误,请重试
10003 请求命令字非法
10004 参数非法,请根据错误描述检查请求是否正确
10007 操作权限不足,例如 Public 群组中普通成员尝试执行踢人操作,但只有 App 管理员才有权限
10010 群组不存在,或者曾经存在过,但是目前已经被解散
10015 群组 ID 非法,请检查群组 ID 是否填写正确

接口调试工具

通过 REST API 在线调试工具 调试本接口。

参考

设置成员未读消息计数(v4/group_open_http_svc/set_unread_msg_num)。