tencent cloud

文档反馈

拉取群历史消息

最后更新时间:2024-07-16 10:41:26

    背景说明

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

    功能说明

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

    接口调用说明

    适用的群组类型

    群组类型ID
    是否支持此 REST API
    Private
    支持,同新版本中的Work(好友工作群)
    Public
    支持
    ChatRoom
    支持,同新版本中的Meeting(临时会议群)
    AVChatRoom
    不支持
    Community(社群)
    支持
    即时通信 IM 内置上述群组类型,详情请参阅 群组系统
    说明
    AVChatRoom(直播群) 不支持历史消息存储,所以不支持调用此接口。

    请求 URL 示例

    https://xxxxxx/v4/group_open_http_svc/group_msg_get_simple?sdkappid=88888888&identifier=admin&usersig=xxx&random=99999999&contenttype=json

    请求参数说明

    下表仅列出调用本接口时涉及修改的参数及其说明,更多参数详情请参考 REST API 简介
    参数
    说明
    xxxxxx
    SDKAppID 所在国家/地区对应的专属域名:
    中国:console.tim.qq.com
    新加坡:adminapisgp.im.qcloud.com
    首尔: adminapikr.im.qcloud.com
    法兰克福:adminapiger.im.qcloud.com
    硅谷:adminapiusa.im.qcloud.com
    雅加达:adminapiidn.im.qcloud.com
    v4/group_open_http_svc/group_msg_get_simple
    请求接口
    sdkappid
    创建应用时即时通信 IM 控制台分配的 SDKAppID
    identifier
    必须为 App 管理员帐号,更多详情请参见 App 管理员
    usersig
    App 管理员帐号生成的签名,具体操作请参见 生成 UserSig
    random
    请输入随机的32位无符号整数,取值范围0 - 4294967295
    contenttype
    请求格式固定值为json

    最高调用频率

    200次/秒。

    请求包示例

    基础形式 拉取群组的历史消息,返回群组最新的 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
    WithRecalledMsg
    Integer
    选填
    是否带撤回的消息,填1表明需要拉取撤回后的消息;默认不拉取撤回后的消息
    TopicId
    String
    选填
    话题的 ID,若具有此选项表示拉取的是对应话题中的消息,仅支持话题的社群适用此选项

    应答包体示例

    {
    "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"
    }
    ],
    "MsgPriority": 1,
    "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"
    }
    ],
    "MsgPriority": 1,
    "MsgRandom": 235168582,
    "MsgSeq": 7803320,
    "MsgTimeStamp": 1458721797
    }
    ]
    }

    应答包字段说明

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

    错误码说明

    除非发生网络错误(例如502错误),否则该接口的 HTTP 返回码均为200。真正的错误码,错误信息是通过应答包体中的 ErrorCode、ErrorInfo 来表示的。 公共错误码(60000到79999)参见 错误码 文档。 本 API 私有错误码如下:
    错误码
    描述
    10002
    服务器内部错误,请重试
    10003
    请求命令字非法
    10004
    参数非法,请根据错误描述检查请求是否正确
    10007
    操作权限不足,操作人必须为该群类型中有权限执行对应操作的成员角色
    10010
    群组不存在,或者曾经存在过,但是目前已经被解散
    10015
    群组 ID 非法,请检查群组 ID 是否填写正确

    接口调试工具

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

    参考

    设置成员未读消息计数(v4/group_open_http_svc/set_unread_msg_num
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持