15.7 偶像端全群消息列表【基础探测通过,待数据联调】

GET /tieup/api/v1/artist/messages

查询参数:

参数 类型 必填 说明
page integer 页码,默认 1
page_size integer 每页数量,默认 20

鉴权:需要 Authorization: Bearer <access_token>,当前账号必须已开通偶像端。

说明:偶像端消息列表是当前偶像超级群的全量消息流,不按某个粉丝过滤;包含粉丝发给偶像、偶像定向回复粉丝、偶像普通群发三类消息。列表按 sent_at DESC, id DESC 倒序返回,优先返回最近发送成功或已撤回且本地已有发送时间的消息。粉丝端消息列表仍只返回当前粉丝与对应偶像相关的消息。本接口会先自动处理本页中偶像接收的未读粉丝定向消息,再批量读取最终定向状态和群发实时人数。

响应字段:

字段 类型 说明
items array 当前页数据列表
items[].message_no string 本地消息编号,用于已读、撤回等系统业务处理
items[].direction integer 本地业务消息方向:1=粉丝发偶像,2=偶像定向回复粉丝,3=偶像普通群发
items[].conversationType integer 融云超级群会话类型,当前固定返回 10
items[].targetId string 融云群 ID,对应本地 rong_ultra_group_id
items[].channelId string 融云超级群频道 ID,无频道返回空字符串
items[].messageId integer 本地消息表 ID
items[].messageDirection integer 偶像视角消息方向:1=当前偶像发送,2=当前偶像接收
items[].senderUserId string 发送者融云用户 ID,来自 tieup_im_user_bind.rong_user_id;绑定缺失时返回空字符串
items[].sentStatus integer 融云发送状态:10=创建中,20=发送失败,30=发送成功或已撤回
items[].receivedTime integer 接收时间,毫秒时间戳;无发送时间返回 0
items[].sentTime integer 发送时间,毫秒时间戳;无发送时间返回 0
items[].objectName string 当前消息融云 ObjectName,如 RC:TxtMsgRC:ImgMsg;新版引用回复保持真实消息类型
items[].content object 融云消息正文快照;媒体消息仅返回链接和必要元数据,不返回 Base64;消息已撤回时返回空对象 {}
items[].content.content string 仅文本消息返回文本正文;图片、语音、视频消息不返回该字段
items[].content.imageUri string 图片消息原图 URL,仅 RC:ImgMsg 返回
items[].content.remoteUrl string 语音消息 URL,仅 RC:HQVCMsg 返回
items[].content.sightUrl string 视频消息 URL,仅 RC:SightMsg 返回
items[].content.duration integer 语音或视频时长,单位秒
items[].content.size string 视频文件大小,单位字节
items[].content.name string 语音或视频原始文件名
items[].messageUId string 融云服务端消息唯一 ID,无值返回空字符串
items[].canIncludeExpansion boolean 返回扩展非空且消息发送成功、未撤回、具备融云 UID 时返回 true,否则返回 false
items[].expansionDic object 发送时扩展快照;普通粉丝消息在本地查询时批量覆盖当前画像与 replyCount,定向消息追加 is_read,群发消息追加 readCounttargetCount
items[].expansionDic.senderRole string 发送者角色,粉丝消息为 fan,艺人消息为 artist
items[].expansionDic.fanId string 粉丝用户 ID;仅粉丝发送消息提供
items[].expansionDic.artistId string 艺人 ID
items[].expansionDic.fanAvatar string 粉丝头像 URL;仅粉丝发送消息提供,无值返回空字符串
items[].expansionDic.fanNickname string 粉丝昵称;仅粉丝发送消息提供,无值返回空字符串
items[].expansionDic.fanGender string 粉丝性别;"0"=未知、"1"=男、"2"=女
items[].expansionDic.companionStartAt string 当前连续陪伴/订阅段开始时间;仅粉丝发送消息提供,未订阅返回空字符串
items[].expansionDic.companionDays string 当前连续陪伴完整天数;无有效订阅为 "0"
items[].expansionDic.fanSubStatus string 粉丝订阅状态;仅粉丝发送消息提供,none=未订阅,active=订阅中,auto_renew_active=自动续订中
items[].expansionDic.fanSubAutoRenew string "0"=无有效订阅、"1"=自动续费、"2"=非自动续费
items[].expansionDic.fanSubExpiresAt string 当前连续有效订阅段最终到期时间;无有效订阅为空字符串
items[].expansionDic.fanSubExpiresText string 当前到期展示文案;无有效订阅为空字符串
items[].expansionDic.candySpent string 该粉丝在该艺人处已成功且未退款的糖果消费汇总,固定两位小数字符串;这是糖果数量,不按人民币金额元/分规则处理
items[].expansionDic.lastArtistReplyAt string 艺人最后一次定向消息时间;无记录为空字符串
items[].expansionDic.lastArtistReplyText string 最近回复展示文案;无记录为空字符串
items[].expansionDic.replyCount string 粉丝消息历史引用回复次数,始终由 tieup_im_message_stat.reply_count 实时覆盖;艺人撤回回复后不递减
items[].expansionDic.is_read string 仅定向消息动态追加,当前查看人作为接收方时的已读状态,true=已读,false=未读
items[].expansionDic.readCount string 仅群发消息提供,MySQL 与 Redis 实时人数的较大值,且不超过目标人数
items[].expansionDic.targetCount string 仅群发消息提供,原群发消息目标人数
items[].directedUserIds array 定向接收融云用户 ID 列表,无值返回空数组
items[].disableUpdateLastMessage boolean 是否不更新最后一条消息,当前固定返回 false
items[].quoteInfo object 引用消息信息;无引用时返回空对象 {}
items[].quoteInfo.messageUId string 被引用消息融云 UID
items[].quoteInfo.senderId string 被引用消息发送者融云用户 ID
items[].quoteInfo.objectName string 被引用消息 ObjectName
items[].quoteInfo.quoteMessageStatus integer 被引用消息状态:0=正常,1=已撤回
items[].originMessage object 当前偶像可见的引用原消息展示信息;无引用、原消息缺失、不可见或已被当前偶像身份删除时返回空对象 {}
items[].originMessage.senderNickname string 原消息发送者当前昵称;粉丝取用户昵称,艺人优先取艺名并回退用户昵称
items[].originMessage.content object 原消息主体;媒体消息不返回 Base64,原消息已撤回时返回空对象 {}
items[].originMessage.content.content string 原消息为文本时的正文;图片、语音、视频不返回该字段
items[].originMessage.content.imageUri string 原消息为图片时的原图 URL
items[].originMessage.content.remoteUrl string 原消息为语音时的远程 URL
items[].originMessage.content.sightUrl string 原消息为视频时的远程 URL
items[].originMessage.content.duration integer 原消息为语音或视频时的时长,单位秒
items[].originMessage.content.size string 原消息为视频时的文件大小,单位字节
items[].originMessage.content.name string 原消息为语音或视频时的原始文件名
items[].readReceiptInfo object 当前查看人视角的已读回执信息
items[].readReceiptInfo.isReceiptRequestMessage boolean 消息是否参与本地已读统计;发送成功且未撤回的定向或群发消息为 true
items[].readReceiptInfo.hasRespond boolean 当前查看人作为接收方时是否已读;发送方视角固定为 false
items[].readReceiptInfo.userIdList object 已读用户列表;历史列表当前固定返回空对象 {},群发明细请使用群发已读统计接口
pagination.page integer 当前页码
pagination.page_size integer 每页数量
pagination.total integer 总数量
pagination.next_cursor string/null 游标分页预留字段,当前为空

响应示例:

{
  "code": 200,
  "message": "成功",
  "data": {
    "items": [
      {
        "message_no": "MSG202607030001",
        "direction": 1,
        "conversationType": 10,
        "targetId": "tieup_artist_group_20001",
        "channelId": "",
        "messageId": 123,
        "messageDirection": 2,
        "senderUserId": "tieup_fan_10001",
        "sentStatus": 30,
        "receivedTime": 1783058400000,
        "sentTime": 1783058400000,
        "objectName": "RC:SightMsg",
        "content": {
          "sightUrl": "https://cdn.example.com/im/video.mp4",
          "duration": 60,
          "size": "1048576",
          "name": "video.mp4"
        },
        "messageUId": "XXXX-JJJJ-KKK-LLLL",
        "canIncludeExpansion": true,
        "expansionDic": {
          "senderRole": "fan",
          "fanId": "10001",
          "artistId": "20001",
          "fanAvatar": "https://cdn.example.com/avatar.png",
          "fanNickname": "Tieup用户",
          "fanGender": "2",
          "companionStartAt": "2026-07-03 10:00:00",
          "companionDays": "26",
          "fanSubStatus": "auto_renew_active",
          "fanSubAutoRenew": "1",
          "fanSubExpiresAt": "2026-08-03 10:00:00",
          "fanSubExpiresText": "8月3日到期",
          "candySpent": "128.00",
          "lastArtistReplyAt": "2026-07-29 09:30:00",
          "lastArtistReplyText": "今日回复",
          "replyCount": "0",
          "is_read": "true"
        },
        "directedUserIds": [
          "tieup_artist_20001"
        ],
        "disableUpdateLastMessage": false,
        "quoteInfo": {},
        "originMessage": {},
        "readReceiptInfo": {
          "isReceiptRequestMessage": true,
          "hasRespond": true,
          "userIdList": {}
        }
      },
      {
        "message_no": "MSG202607030002",
        "direction": 3,
        "conversationType": 10,
        "targetId": "tieup_artist_group_20001",
        "channelId": "",
        "messageId": 124,
        "messageDirection": 1,
        "senderUserId": "tieup_artist_20001",
        "sentStatus": 30,
        "receivedTime": 1783058460000,
        "sentTime": 1783058460000,
        "objectName": "RC:TxtMsg",
        "content": {
          "content": "今晚八点直播见",
          "extra": ""
        },
        "messageUId": "XXXX-JJJJ-KKK-NNNN",
        "canIncludeExpansion": true,
        "expansionDic": {
          "senderRole": "artist",
          "artistId": "20001",
          "artistNickname": "示例艺人",
          "readCount": "328",
          "targetCount": "1000"
        },
        "directedUserIds": [],
        "disableUpdateLastMessage": false,
        "quoteInfo": {},
        "originMessage": {},
        "readReceiptInfo": {
          "isReceiptRequestMessage": true,
          "hasRespond": false,
          "userIdList": {}
        }
      }
    ],
    "pagination": {
      "page": 1,
      "page_size": 20,
      "total": 3,
      "next_cursor": null
    }
  }
}

说明:消息列表以本地 tieup_im_message_stat + tieup_im_message_content 为准,长期保存正文、扩展快照和撤回状态,不依赖融云超级群历史记录保留时间。items[] 的主体字段按根目录 融云响应字段参考.json 返回;仅额外保留 message_nodirection 供系统业务处理。偶像端 messageDirection 使用偶像视角:粉丝发给偶像为接收 2,偶像自己发出的定向和群发为发送 1。服务端会在偶像端拉取当前页历史消息时自动标记本页粉丝发给偶像的成功未撤回消息已读;偶像自己发送的定向和群发消息不触发已读写入。当前偶像身份已执行用户侧删除的消息不返回,也不计入 pagination.total;偶像消息收件箱会回退展示该粉丝上一条未删除消息,累计业务统计不因个人删除而减少。图片、语音、视频响应只裁剪返回副本中的 Base64,数据库历史快照和实际发送给融云的载荷保持不变。