保利威文档中心

帮助中心

讲师通过 HTTP 回复学员提问

更新时间:2026-05-12 09:47:23

接口描述

由业务服务端调用,在指定频道内以讲师身份回复某位观众的「提问私聊」记录; 行为与聊天室 WebSocket 事件 T_ANSWER 对齐(写入提问记录、更新列表数据、向仍在线的相关用户推送 message)。 接口支持 HTTPS 协议。

接口URL

https://api.polyv.net/live/v5/chat/redirect/channel/teacher-answer/post

请求方式

POST

接口约束

1、接口同时支持 HTTP、HTTPS,建议使用 HTTPS 确保接口安全。
2、**viewerUserId** 为被回复的观众在业务里的用户 ID。若该观众当前正以观众身份在目标频道内在线(已连上聊天室),系统可识别其连接并优先用于实时推送;若未在线,仍会落库,但实时推送可能无法送达该观众。
3、讲师展示信息:若频道内能识别到已在线的讲师身份(与频道约定规则一致),将使用该讲师的昵称、头像等;若当前没有在线讲师信息可识别,须在请求里传 teacherNickteacherPic,否则展示字段可能为空。
4、
msgType
可选;不传或空则按文本处理。传 image 表示图片回复,此时 content 须为 JSON 字符串,对象字段为:width(number)、height(number)、url(string)、id(string,可选),与 WebSocket T_ANSWER 及站内图片提问格式一致;服务端会走图片校验逻辑。

请求体参数描述

参数名 必选 类型 说明
appId true String 账号appId【详见获取密钥
timestamp true Long 当前13位毫秒级时间戳,3分钟内有效
sign true String 签名,为32位大写的MD5值,生成签名的appSecret密钥作为通信数据安全的关键信息,严禁保存在客户端直接使用,所有API都必须通过客户自己服务器中转调用POLYV服务器获取响应数据【详见签名生成规则
roomId true String(1,100) 频道号(与观众/讲师在聊天室登录时使用的 channelId / roomId 一致)
content true String(1,10000) 文本回复时为正文;msgTypeimage须为 JSON 字符串,序列化对象格式为 { "width": number, "height": number, "url": string, "id"?: string }
viewerUserId true String(1,2000) 被回复的观众 userId(提问侧学员的业务 ID)
teacherNick false String 讲师昵称;当频道内没有可识别的在线讲师信息时建议传入,否则展示可能为空
teacherPic false String 讲师头像 URL;当频道内没有可识别的在线讲师信息时建议传入
msgType false String 可选。传 image 表示图片回复,与 WebSocket T_ANSWER 一致;不传则按文本回复处理

示例

请求体 JSON:

{
  "roomId": "412738",
  "content": "同学你好,这个问题我们在第二节课会讲到。",
  "viewerUserId": "user_abc_001",
  "teacherNick": "王老师",
  "teacherPic": "https://liveimages.videocc.net/defaultImg/avatar/viewer.png"
}

图片回复示例(msgTypeimagecontent 为 JSON 字符串):

{
  "roomId": "412738",
  "viewerUserId": "user_abc_001",
  "msgType": "image",
  "content": "{\"width\":640,\"height\":360,\"url\":\"https://example.com/img.png\",\"id\":\"img_001\"}",
  "teacherNick": "王老师",
  "teacherPic": "https://liveimages.videocc.net/defaultImg/avatar/viewer.png"
}

响应体 JSON(成功):

{
  "code": 200,
  "status": "success",
  "message": "发送成功",
  "data": {
    "id": 123456
  }
}

其中 data.id 为该条回复写入提问流水后的记录 ID(与 socket 回调中 T_ANSWER 的 id 含义一致)。

WebSocket 推送说明

调用成功后,服务端会向聊天室推送 message 事件,内容为 JSON 字符串,解析后 **EVENTT_ANSWER**,主要字段包括:roomIdcontentuser(讲师展示信息)、s_userId(被回复的观众 userId)、id(本条回复 id)、msgType 等。

  • 观众:若该观众当前仍在该频道聊天室中在线,一般能收到上述推送;若已离线或未连接,则无法收到实时消息,但历史提问列表中仍可出现本条回复(以各端列表接口为准)。
  • 讲师:若讲师当前正以讲师身份在该频道内在线,一般能收到推送;若讲师未在线或未以可识别身份连接,则可能收不到实时推送,但记录仍会写入。

通过讲师端 WebSocket 自行发送 T_ANSWER 时,还可能向整个频道房间广播;本 HTTP 接口以服务端判定在线连接并定向推送为主,具体与实现保持一致。

响应参数描述

参数名 类型 说明
code Integer 200 表示成功;400 多为参数校验失败;500 多为业务错误或服务端异常
status String success / fail / error
message String 提示文案,如「发送成功」或具体错误说明
data Object 成功时包含 id(回复记录 ID);失败时可为空或附带校验信息

异常示例

参数校验失败(与 checkDataType 返回一致):

{
  "code": 400,
  "status": "fail",
  "message": "缺少参数roomId"
}

频道与账号不匹配(x-auth-user-idroomId 归属不一致):

{
  "code": 400,
  "status": "fail",
  "message": "roomId非法"
}

未传 x-auth-user-id(中间件直接返回,HTTP 状态码多为 500,body 仍为 JSON):

{
  "code": 400,
  "status": "fail",
  "message": "accountId is required"
}

服务端异常:

{
  "code": 500,
  "status": "error",
  "message": "unknown error"
}

(具体 message 以实际错误信息为准。)

联系客服,在线咨询