# 事件回调
使用事件回调功能,需要在管理端 管理中心 - 系统设置 - 开放平台设置 - 回调URL 配置您的回调地址,配置好之后通知您的开发人员针对回调业务做对应的接口开发。
点击 回调历史记录 可以查看回调请求结果,成功则返回success字符串,其余返回结果均为失败。
对于回调失败的记录,可以手动进行重试。
课程满意度推送
课程满意度反馈使用独立的配置和推送记录,接收成功以HTTP 200为准,响应体可以为空。配置入口、请求字段及返回要求见本页 课程满意度反馈推送。
# 考试答卷回调
# 功能说明
学员考试结束成功交卷后,轻速云平台可以将考试结果推送到您自己平台的接口,您的平台可以实时获取到学员考试结果数据。答卷回调功能需要在试卷设置里开启,具体开启流程如下。
在试卷设置里,考试后的配置中,可以看到启用回调开关,启用之后此试卷的考试结果才会实时推送到您的平台。
# 调用方式
方式:post
# 回调请求体示例
{
"ts":"2022-01-08 17:39:42.388", // 事件发送的时间
"uuid":"229381ace3264e7ba8bf6d520d30922a", // 事件的唯一标识
"secretKey":"2918148edb9a4939857a8b3a387127f6", // 校验密钥,管理端系统资料 - 密钥
"type":"answerSheet", // 消息类型 answerSheet:答卷内容回调
"callbackUrl":"http://www.***.com/eventCallBack", // 回调URL
"eventBody":{
"id":"d7453b7a9a6f4fe892d5c7895a95b5c8", // 答卷id
"paperId":"18081428190", // 试卷ID
"paperName":"试卷名称",
"userId":"d7453b7a9a6f4fe892d5c7895a95b5c8", // 成员ID
"examineeCode":"zhanghao", // 成员账号
"examineeName":"张三", // 成员姓名
"totalScore":100, // 试卷总分
"passScore":60, // 试卷及格分
"realScore":0, // 成员考试得分
"useDuration":6, // 考试用时(单位:秒)
"judged":1, // 是否已判卷,1为已判卷,空和0为未判卷,未判卷的答卷需要后台阅卷
"startTime":1641634772902, // 开始考试时间
"endTime":1641634779413 // 完成考试时间
}
}
提示
示例为非公开试卷,若为公开试卷,则会携带采集信息。
接收方法示例(JAVA):
@PostMapping("/eventCallBack")
public void eventCallBack(@RequestBody Map<String, Object> params, HttpServletRequest request, HttpServletResponse response) {
// 业务逻辑
}
# 课程完成信息回调
# 功能说明
学员完成课程学习后,轻速云平台可以将学习信息推送到您自己平台的接口,您的平台可以实时获取到学员学习结果数据。课程完成信息回调功能需要在课程设置里开启,具体开启流程如下。
在课程设置里,其他设置中,可以看到启用回调开关,启用之后此课程的学习结果才会实时推送到您的平台。
# 调用方式
方式:post
# 回调请求体示例
{
"ts":"2022-01-08 17:39:42.388", // 事件发送的时间
"uuid":"229381ace3264e7ba8bf6d520d30922a", // 事件的唯一标识
"secretKey":"2918148edb9a4939857a8b3a387127f6", // 校验密钥,管理端系统资料 - 密钥
"type":"courseFinish", // 消息类型 courseFinish:课程回调
"callbackUrl":"http://www.***.com/eventCallBack", // 回调URL
"eventBody":{
"courseId": "b3fbfab6df73439e81f741d4ef7e5cc7", //课程id
"courseName": "回调课程111", //课程名称
"coursewareCount": 4, //课程所含课件数
"finishedCount": 4, //学员完成课件数
"finishedTime": 1664521661000, //完成时间
"id": "248c84c209004b0fb0e719406a7f35e5", //课程进度id
"nickName": "月清疏", //学员姓名
"studyedDuration": 110, //学习时长
"userCode": "1001", //学员账号
"userId": "11bf7d9d6c9c426980d5f6e8ca163c01" //学员id
}
}
接收方法示例(JAVA):
@PostMapping("/eventCallBack")
public void eventCallBack(@RequestBody Map<String, Object> params, HttpServletRequest request, HttpServletResponse response) {
// 业务逻辑
}
# 课程知识完成信息回调
# 功能说明
学员完成课件学习后,轻速云平台可以将学习信息推送到您自己平台的接口,您的平台可以实时获取到学员学习结果数据。课件完成信息回调功能需要在课程设置里开启,具体开启流程如下。
在课程设置里,其他设置中,可以看到启用回调开关,启用之后此课程对应课件的学习结果才会实时推送到您的平台。
# 调用方式
方式:post
# 回调请求体示例
{
"ts":"2022-01-08 17:39:42.388", // 事件发送的时间
"uuid":"229381ace3264e7ba8bf6d520d30922a", // 事件的唯一标识
"secretKey":"2918148edb9a4939857a8b3a387127f6", // 校验密钥,管理端系统资料 - 密钥
"type":"coursewareFinish", // 消息类型 coursewareFinish:课程-课件回调
"callbackUrl":"http://www.***.com/eventCallBack", // 回调URL
"eventBody": {
"courseCatalogId": "95fe7c9f8938415ea081221321ab8f2a", //课件记录id
"courseId": "b3fbfab6df73439e81f741d4ef7e5cc7", //课程id
"courseName": "回调课程111", //课程名称
"coursewareId": "e5931d8dc06c43f9be46900381bcdd94", //课件id
"coursewareName": "单独的课件学15秒", //课件名称
"finished": 1, //是否完成
"finishedTime": 1664522482000, //完成时间
"id": "a0045b461b244d8685e1567b3c106cbd",
"nickName": "林黛玉", //学员姓名
"progress": 0, //学习进度
"startTime": 1664522468000, //开始时间
"studyDuration": 15, //学习时长
"userCode": "1003", //学员账号
"userId": "51d52d99793f407d996d40f2021f3680" //学员id
}
}
接收方法示例(JAVA):
@PostMapping("/eventCallBack")
public void eventCallBack(@RequestBody Map<String, Object> params, HttpServletRequest request, HttpServletResponse response) {
// 业务逻辑
}
# 打卡完成信息回调
# 功能说明
学员完成打卡学习后,轻速云平台可以将打卡结果信息推送到您自己平台的接口,您的平台可以实时获取到学员学习结果数据。打卡完成信息回调功能需要在打卡设置里开启,具体开启流程如下。
# 调用方式
方式:post
# 回调请求体示例
{
"ts": "2023-07-13 09:53:17.017", // 事件发送的时间
"uuid": "82d4d230d1ce403e9e457dff93dd0dbd", // 事件的唯一标识
"secretKey": "4d5f3185284041f0b00d1c3f79a50f62", // 校验密钥,管理端系统资料 - 密钥
"type": "clockFinish", // 消息类型 clockFinish:打卡学习回调
"callbackUrl": "http://xxxxx/finishCallBack", // 回调URL
"eventBody": {
"id": "58297eb5cabb4b0d9b7720635d9ab75a", // 答卷id
"clockId": "9999", //打卡任务id
"clockName": "打卡任务名称",
"days": 1, //坚持天数
"examineeCode": "1002", // 成员账号
"examineeName": "龙葵", // 成员姓名
"totalAmount": 1, // 总题数
"wrongAmount": 1, // 答错题数
"startTime": 1689213152000, // 答题开始时间
"endTime": 1689213158000, // 答题结束时间
"rightRatio": "0.00%" // 正确率
}
}
接收方法示例(JAVA):
@PostMapping("/eventCallBack")
public void eventCallBack(@RequestBody Map<String, Object> params, HttpServletRequest request, HttpServletResponse response) {
// 业务逻辑
}
# 学习地图完成信息回调
# 功能说明
学员完成学习地图(新员工培训)学习后,轻速云平台可以将学习信息推送到您自己平台的接口,您的平台可以实时获取到学员学习结果数据。学习地图完成信息回调功能需要在学习地图设置里开启,具体开启流程如下。
在学习地图设置里,可以看到启用回调开关,启用之后此学习地图的学习结果才会实时推送到您的平台。
# 调用方式
方式:post
# 回调请求体示例
{
"ts":"2022-01-08 17:39:42.388", // 事件发送的时间
"uuid":"4ad6a21fada241e9aeff90d814779fcb", // 事件的唯一标识
"secretKey":"2918148edb9a4939857a8b3a387127f6", // 校验密钥,管理端系统资料 - 密钥
"type":"mapFinish", // 消息类型 mapFinish:学习地图回调
"callbackUrl":"http://www.***.com/eventCallBack", // 回调URL
"eventBody":{
"id": "9999", //学习地图id
"name": "回调地图123", //学习地图名称
"mustProgress": 1, //必修课件学习进度
"selectProgress": 0.5, //选修课件学习进度
"totalTaskNum": 4, //学习地图任务数量
"finishedCount": 4, //学员完成课件数
"nickName": "月清疏", //学员姓名
"studyedDuration": 110, //学习时长
"userCode": "1001", //学员账号
"userId": "11bf7d9d6c9c426980d5f6e8ca163c01" //学员id
}
}
接收方法示例(JAVA):
@PostMapping("/eventCallBack")
public void eventCallBack(@RequestBody Map<String, Object> params, HttpServletRequest request, HttpServletResponse response) {
// 业务逻辑
}
# 学习地图任务完成信息回调
# 功能说明
学员完成学习地图(新员工培训)的关联任务后,轻速云平台可以将学习信息推送到您自己平台的接口,您的平台可以实时获取到学员学习结果数据。学习地图任务完成信息回调功能需要在学习地图设置里开启,具体开启流程如下。
在学习地图设置里,可以看到启用回调开关,启用之后此学习地图的学习结果才会实时推送到您的平台。
# 调用方式
方式:post
# 回调请求体示例
{
"ts": "2026-01-04 17:36:25.760", // 事件发送的时间
"uuid": "d91d4b81008146c1b1a7b57015d2aab5", // 事件的唯一标识
"secretKey": "xfbca1ecf82a48b5b4h828dtae1d1160", // 校验密钥,管理端系统资料 - 密钥
"type": "taskFinish", // 消息类型 taskFinish:学习地图任务回调
"callbackUrl": "https://www.***.com/eventCallBack", // 回调URL
"eventBody": {
"id": "c326ef84b519404cb3a9bff0362ab549", // 学习地图任务记录主键id(可忽略)
"factoryCode": "100000", // 租户编号
"mapId": 9115, // 学习地图id
"mapRecordId": "360e4565fe39456ea1cd1742f45ef44b", // 学习地图学员学习记录id(可忽略)
"userId": "d55eda2b73244028b1f566e29c6f7eaf", // 学员id
"mapTaskId": "2d1c1720e48111f089faa088c2a75020", // 学习地图任务id
"eventId": "fd7a29567f5945d89e6611c26425cd23", // 关联项目id,如考试则为试卷id
"eventType": 1, // 学习地图任务类型(0知识,1课程,2考试,3报名,4问卷,5证书,6作业,7培训班,8考勤,9考核,10AI陪练,11直播,12练习)
"credit": 0, // 学习地图任务积分
"finished": 1, // 学习地图任务完成状态(可忽略)
"finishedTime": 1767519385000, // 学习地图任务完成时间
"createTime": 1767519348000 // 学习地图任务开始时间
}
}
接收方法示例(JAVA):
@PostMapping("/eventCallBack")
public void eventCallBack(@RequestBody Map<String, Object> params, HttpServletRequest request, HttpServletResponse response) {
// 业务逻辑
}
# 学习地图配置推送
# 功能说明
学习地图的名称、阶段或任务配置新增、修改后,轻速云平台可以将学习地图配置推送到您自己平台的接口,您的平台可以获取学习地图的最新配置快照,字段范围以 eventBody 为准。
使用该功能前,需要在管理端 管理中心 - 系统设置 - 开放平台设置 中配置回调 URL,并开启 配置与证书事件推送。
# 调用方式
方式:post
# 回调请求体示例
{
"ts": "2026-09-01 14:32:00.339", // 事件发送的时间
"uuid": "30ee2bdbacfe4c969761e058a0eb714d", // 事件的唯一标识
"secretKey": "your-secret-key", // 校验密钥,管理端系统资料 - 密钥
"type": "mapConfig", // 消息类型 mapConfig:学习地图配置推送
"callbackUrl": "https://www.***.com/eventCallBack", // 回调URL
"eventBody": {
"mapId": 10439, // 学习地图id
"mapName": "岗位成长地图", // 学习地图名称
"periods": [ // 阶段列表,无阶段时为空数组
{
"periodId": "period-id-1", // 阶段id
"periodName": "阶段一", // 阶段名称
"sortIndex": 1, // 阶段排序值
"tasks": [ // 阶段任务列表,无任务时为空数组
{
"taskId": "task-id-1", // 地图任务关系id
"eventType": 1, // 任务类型,1为课程
"eventId": "course-id-1", // 关联业务数据id
"eventName": "入职基础课程", // 地图中显示的任务名称
"sortIndex": 1, // 任务排序值
"taskSelectType": 0 // 0必修,1选修
},
{
"taskId": "task-id-2",
"eventType": 2, // 任务类型,2为考试
"eventId": "paper-id-1",
"eventName": "阶段考试",
"sortIndex": 2,
"taskSelectType": 1
}
]
}
]
}
}
提示
eventType 对应的任务类型:0课件,1课程,2考试,3报名,4问卷,5证书,6作业,7培训班,8考勤,9考核,10AI陪练,11直播,12练习。
接收方法示例(JAVA):
@PostMapping("/eventCallBack")
public String eventCallBack(@RequestBody Map<String, Object> params) {
// 业务逻辑
return "success";
}
# 课程配置推送
# 功能说明
课程名称、所属分类、关联标签、目录内容、考试或前置课程等配置新增、修改后,轻速云平台可以将课程配置推送到您自己平台的接口,您的平台可以获取课程的最新配置快照,字段范围以 eventBody 为准。
使用该功能前,需要在管理端 管理中心 - 系统设置 - 开放平台设置 中配置回调 URL,并开启 配置与证书事件推送。
# 调用方式
方式:post
# 回调请求体示例
{
"ts": "2026-09-01 14:32:01.007", // 事件发送的时间
"uuid": "f99bd6657a364bae86c58c4e07dcac33", // 事件的唯一标识
"secretKey": "your-secret-key", // 校验密钥,管理端系统资料 - 密钥
"type": "courseConfig", // 消息类型 courseConfig:课程配置推送
"callbackUrl": "https://www.***.com/eventCallBack", // 回调URL
"eventBody": {
"courseId": "course-id-1", // 课程id
"courseName": "入职基础课程", // 课程名称
"courseCategory": { // 课程直接所属分类,无分类时为null
"categoryId": "category-id-1", // 分类id
"categoryName": "新员工课程" // 分类名称
},
"tags": [ // 课程标签,无标签时为空数组
{
"tagId": "tag-id-1", // 标签id
"tagName": "必学" // 标签名称
}
],
"catalog": [ // 课程目录结构
{
"nodeId": "directory-id-1", // 目录节点id
"nodeType": "directory", // directory:目录
"directoryName": "第一章", // 目录名称
"sortIndex": 1, // 排序值
"children": [ // 目录子节点,空目录时为空数组
{
"nodeId": "knowledge-ref-id-1", // 知识关系节点id
"nodeType": "knowledge", // knowledge:知识
"knowledgeId": "knowledge-id-1", // 知识id
"knowledgeName": "企业文化", // 知识名称
"sortIndex": 1
},
{
"nodeId": "exam-ref-id-1", // 考试关系节点id
"nodeType": "exam", // exam:目录考试
"paperId": "paper-id-1", // 试卷id
"paperName": "章节考试", // 试卷名称
"sortIndex": 2
}
]
},
{
"nodeType": "finalExam", // finalExam:结课考试,结课考试不包含nodeId
"paperId": "final-paper-id-1", // 试卷id
"paperName": "结课考试", // 试卷名称
"examQualification": 0, // 考试资格,使用系统配置的数字值
"sortIndex": 2
}
],
"coursePrerequisiteEnable": 1, // 是否启用前置课程
"coursePrerequisiteFinishType": 0, // 前置课程完成条件,使用系统配置的数字值
"preCourses": [ // 前置课程列表,无前置课程时为空数组
{
"courseId": "pre-course-id-1", // 前置课程id
"courseName": "入职须知", // 前置课程名称
"sortIndex": 1 // 前置课程排序值
}
]
}
}
提示
课程目录节点类型包括:directory 目录、knowledge 知识、exam 目录考试、finalExam 结课考试。只有目录节点包含 children,结课考试不包含 nodeId。
examQualification:0 表示完成课程全部内容后可参加结课考试,1 表示达到课程设置的学习时长后可参加结课考试。
coursePrerequisiteEnable:0 表示未开启前置课程,1 表示已开启前置课程。coursePrerequisiteFinishType:0 表示全部完成,1 表示任选其一完成。
接收方法示例(JAVA):
@PostMapping("/eventCallBack")
public String eventCallBack(@RequestBody Map<String, Object> params) {
// 业务逻辑
return "success";
}
# 证书获取推送
# 功能说明
学员获得考试、普通学习地图或新员工培训关联的证书后,轻速云平台可以将学员、证书及证书来源信息推送到您自己平台的接口。
使用该功能前,需要在管理端 管理中心 - 系统设置 - 开放平台设置 中配置回调 URL,并开启 配置与证书事件推送。
考试、普通学习地图和新员工培训自动生成并正式发放的证书支持该事件。证书管理中直接手动发放的证书不在推送范围内。
已发放证书重新生成并再次正式发放成功后,可能再次产生证书获取推送。同一证书记录再次推送时,certMemberId 可能重复,每次回调以 uuid 区分。
# 调用方式
方式:post
# 回调请求体示例
{
"ts": "2026-09-01 14:35:16.341", // 事件发送的时间
"uuid": "451250bf0dc649f688681764069f562b", // 事件的唯一标识
"secretKey": "your-secret-key", // 校验密钥,管理端系统资料 - 密钥
"type": "certObtain", // 消息类型 certObtain:证书获取推送
"callbackUrl": "https://www.***.com/eventCallBack", // 回调URL
"eventBody": {
"member": {
"userCode": "zhangsan", // 学员账号
"nickName": "张三" // 学员姓名
},
"certificate": {
"certMemberId": "cert-member-id-1", // 学员证书记录id
"certId": "cert-id-1", // 证书id
"certName": "优秀学员证书", // 证书名称
"certUrl": "https://static.example.com/cert/cert-member-id-1.png", // 证书图片URL
"certSerial": "CERT-2026-0001", // 证书编号
"publishTime": "2026-09-01 14:35:16", // 证书发放时间
"expireTime": null // 证书失效时间,永久有效时为null
},
"source": {
"sourceType": "exam", // 证书来源类型,exam:考试
"exam": {
"paperId": "paper-id-1", // 试卷id
"paperName": "结业考试", // 试卷名称
"totalScore": 100, // 试卷总分
"realScore": 86 // 学员实际得分
}
}
}
}
# 其他证书来源示例
学习地图证书的 source 结构:
{
"sourceType": "learningMap",
"learningMap": {
"mapId": 10439, // 学习地图id
"mapName": "岗位成长地图", // 学习地图名称
"period": {
"periodId": "period-id-1", // 阶段id
"periodName": "阶段一" // 阶段名称
}
}
}
新员工培训证书的 source 结构:
{
"sourceType": "newEmployeeTraining",
"newEmployeeTraining": {
"trainingId": 10440, // 新员工培训id
"trainingName": "新员工入职培训", // 新员工培训名称
"period": {
"periodId": "period-id-2", // 阶段id
"periodName": "入职培训阶段" // 阶段名称
}
}
}
接收方法示例(JAVA):
@PostMapping("/eventCallBack")
public String eventCallBack(@RequestBody Map<String, Object> params) {
// 业务逻辑
return "success";
}
# 课程满意度反馈推送
# 功能说明
学员提交课程满意度后,轻速云平台可以按每日设置的时间,将新增反馈逐条发送到您自己的系统。每次HTTP请求携带一条反馈,包含学员信息、一个选定的自定义字段、课程信息、满意度及建议内容。
在管理端 租户中心 - 系统设置 - 课程满意度推送 中填写回调URL、回调密钥、学员自定义字段和每日推送时间,并开启推送。该页的配置与推送记录独立于开放平台设置。
自动推送覆盖本租户所有已开启课程满意度调查的课程,从启用时刻开始累计;开启前和关闭期间的历史反馈不会自动补推。配置及周期调整规则见 课程满意度推送。
# 调用方式
方式:POST
请求地址:课程满意度推送 中配置的回调URL。
Content-Type:application/json
# 回调请求体示例
{
"type": "courseFeedback",
"ts": 1788890400000,
"secretKey": "your-course-feedback-secret-key",
"eventBody": {
"userId": "member-id-1",
"userCode": "zhangsan",
"userName": "张三",
"customInfo": "华东区/研发中心",
"courseId": "course-id-1",
"courseName": "新员工入职培训",
"feedbackTime": 1788829200000,
"satisfaction": 1,
"content": "课程内容清晰,希望增加实际操作案例。"
}
}
# 字段说明
| 字段 | 类型 | 说明 |
|---|---|---|
| type | string | 固定为 courseFeedback,表示课程满意度反馈 |
| ts | number | 本次发送时间,Unix毫秒时间戳;人工重试时会更新 |
| secretKey | string | 本功能配置的回调密钥,接收方应与约定密钥核对 |
| eventBody | object | 单条反馈内容 |
eventBody 字段如下:
| 字段 | 类型 | 说明 |
|---|---|---|
| userId | string | 学员ID |
| userCode | string | 学员账号 |
| userName | string | 学员姓名 |
| customInfo | string | 所选学员自定义字段的可读值 |
| courseId | string | 课程ID |
| courseName | string | 课程名称 |
| feedbackTime | number | 学员首次成功提交反馈的时间,Unix毫秒时间戳 |
| satisfaction | number | 满意度结果:1 非常满意,2 满意,3 不满意 |
| content | string | 建议或意见,最多500个字符;未填写时为空字符串 |
学员账号、姓名、课程名称及自定义字段值按自动发送时的信息获取。学员资料已不存在时,账号和姓名为空字符串。
# 学员自定义字段
在 成员 - 自定义信息 中维护成员字段,再在 课程满意度推送 的 学员自定义字段 中选择一个。开启推送时必须选择字段,但学员未填写该字段仍会正常推送反馈。
接口字段名固定为 eventBody.customInfo,类型为字符串,字段名不会随管理端的显示名称变化。例如,选择 所属单位 且学员填写 示例公司 时,发送的是 "customInfo": "示例公司"。
不同类型的取值方式如下:
| 自定义字段类型 | 取值规则 | customInfo 示例 |
|---|---|---|
| 文本 | 成员填写的文本 | "示例公司" |
| 日期 | 成员填写的日期或日期时间内容,按字符串发送 | "2026-09-01" |
| 下拉框(单选) | 成员选中的选项值 | "总部" |
| 多级下拉框(单条路径) | 各级选项名称使用 / 连接 | "华东区/研发中心" |
| 多级下拉框(多条路径) | 各条可读路径使用英文分号 ; 连接 | "华东区/研发中心;华南区/销售中心" |
| 未填写、所选字段已删除或学员资料不存在 | 字段仍保留,值为空字符串 | "" |
例如,学员未填写所选字段时,请求中的这一项为 "customInfo": "",不会因此跳过该学员的反馈,也不会省略该字段。
# 接收与返回
接收方应先核对 secretKey,完成反馈处理后返回HTTP 200。响应体可以为空,也可以返回业务内容,系统按HTTP状态码判断接收结果。
HTTP 201、204、302及其他非200状态码均记为失败;系统不会跟随重定向。网络异常或请求超时也会记为失败,单条反馈发送失败后仍会继续发送后续反馈。
同一学员对同一课程只提交一份反馈,接收方可按 courseId 和 userId 识别反馈,并对重复接收进行幂等处理。ts 表示每次发送的时间,不应用作反馈的唯一标识。
# 推送记录与人工重试
在 课程满意度推送记录 中查看发送结果和实际请求体。对于失败记录,修正接收接口或配置后,可以使用 批量重试。
人工重试使用当前回调URL和密钥,更新 ts,保留原有 eventBody。已成功的记录不可重试,每条记录最多人工重试10次。