专业版事件推送
事件推送由宿主发给 iframe,用于切换路由、开始生成、导出、放映、停止生成或刷新认证。执行结果仍通过 事件通知 返回。
| 类型 | 方向 | 用途 |
|---|---|---|
| 事件通知 | 专业版通知接入方页面 | 接收初始化、生成、保存、导出和停止结果 |
| 事件推送 | 接入方页面通知专业版 | 主动要求 iframe 执行动作 |
如果只是接收 iframe 内行为结果,请使用 事件通知。只有接入方需要主动控制 iframe 行为时,才需要使用事件推送。
可发送的七类动作
当前开放 NAVIGATE、OPEN_SESSION、START_GENERATION、EXPORT、START_PRESENTATION、STOP_GENERATION 和 AUTH_REFRESH_REQUEST。
调用前检查
| 推送 | 调用前确认 | 结果事件 |
|---|---|---|
NAVIGATE | route 只能为 generate、editor;Editor 必须有 sessionId | ROUTE_CHANGED / COMMAND_ERROR |
OPEN_SESSION | Generate 已包含在 routerOptions.list,并提供非空 sessionId | ROUTE_CHANGED / COMMAND_ERROR |
START_GENERATION | 提供非空 generate.content,当前无冲突生成任务 | GENERATE_START / COMMAND_ERROR |
EXPORT | 当前已进入 Editor,且导出能力可用 | PPT_EXPORT_* / COMMAND_ERROR |
START_PRESENTATION | 当前已进入 Editor,且放映能力可用 | PRESENTATION_STARTED / COMMAND_ERROR |
STOP_GENERATION | iframe 已初始化成功,且当前确实存在进行中的生成任务 | GENERATE_STOPPED |
AUTH_REFRESH_REQUEST | 已收到 AUTH_REFRESH_REQUIRED,并由接入方服务端重新申请到新的 /api/grant/otp_code code | AUTH_REFRESH_SUCCESS / AUTH_REFRESH_FAILED |
事件推送只负责把宿主页面的控制动作发送给 iframe。接入方仍应通过 事件通知 处理最终状态,不要仅凭 SDK 方法调用成功就更新业务结果。
STOP_GENERATION 用于接入方从外部停止正在进行的生成任务。
ts
ppt.stopGeneration()STOP_GENERATION 当前不要求传入业务字段。接入方如需在自己的页面中记录停止来源,可在外层业务状态中保存;iframe 返回给接入方的停止结果以 GENERATE_STOPPED 为准。
使用建议
停止动作更适合由宿主页面中的“取消任务”“停止生成”等明确按钮触发,不建议在无用户感知的情况下静默中断正在进行的生成流程。
刷新认证
访问凭证有效期以 APP_READY.auth.tokenExpiresAt、APP_READY.auth.tokenExpiresIn 和 APP_READY.auth.refreshRequiredAt 为准。接入方不要写死固定时长,可以选择两种方式处理过期:
| 方式 | 行为 |
|---|---|
| 自主刷新 | 接入方根据 APP_READY.auth.refreshRequiredAt 自己重新申请 code,销毁并重新创建 iframe。 |
| 页面内刷新 | iframe 发送 AUTH_REFRESH_REQUIRED,接入方重新获取新的 code 后,通过 ppt.refreshAuth() 发送 AUTH_REFRESH_REQUEST,iframe 使用新凭证更新认证状态,不重建页面。 |
页面内刷新示例(SDK 会发送 AUTH_REFRESH_REQUEST):
ts
const ppt = await AipptAgent.create({
auth: {
appKey: 'your-appkey',
code: 'auth-code'
},
events: {
async onEvent(event) {
if (event.type !== 'AUTH_REFRESH_REQUIRED') return
const freshCode = await fetchFreshCode()
await ppt.refreshAuth({ code: freshCode })
}
}
})iframe 收到并应用成功后,会发送 AUTH_REFRESH_SUCCESS;新 code 缺失、复用旧 code 或凭证刷新失败时发送 AUTH_REFRESH_FAILED。
推送列表
停止结果
推送 STOP_GENERATION 后,专业版会通过 GENERATE_STOPPED 通知接入方生成已停止。
ts
const ppt = await AipptAgent.create({
auth: {
appKey: 'your-appkey',
code: 'auth-code'
},
events: {
onEvent(event) {
if (event.type === 'GENERATE_STOPPED') {
console.log(event.payload)
}
}
}
})GENERATE_STOPPED 的 source 用于区分停止来源:
source | 含义 |
|---|---|
user | 用户在专业版内手动停止 |
host | 接入方通过事件推送停止 |
backend | 服务端流程取消或中断 |
推送能力边界
- 事件推送不是初始化配置,不替代
AipptAgent.create参数。 NAVIGATE不接受/、/generate、/editor、/speaker等内部 path,只接受语义模块名generate、editor。START_PRESENTATION的fullscreen受浏览器用户手势限制;无法执行时返回COMMAND_ERROR/USER_GESTURE_REQUIRED。requestId会在路由、放映、导出或错误结果中尽量原样返回,便于宿主关联异步操作。STOP_GENERATION只用于停止正在进行的生成任务。AUTH_REFRESH_REQUEST只用于刷新 iframe 页面认证状态,不替代初始化配置。AUTH_REFRESH_REQUEST只传status: true和新code;不要在事件里传 token 或其他认证字段。AUTH_REFRESH_REQUEST不能复用初始化时已消费的code。STOP_GENERATION的停止动作由事件类型触发,data不是必填参数。- 额度、权限和服务可用性属于平台侧校验结果,不通过前端事件推送完成。
- 推送后的结果以 事件通知 中的
GENERATE_STOPPED为准。
