订阅业务事件与消息推送
让插件后端订阅你的业务服务,把任务进展转成 Ambleloft 中可更新、可撤回的消息。
完成后:接收演示服务事件,验证更新、断线和清理。
前置条件:按本页具体步骤准备所需文件与工具;学习路线中的上一页不自动构成依赖。
本页内容
01构建安装完整案例
准备 Node.js ≥22.13 与支持扩展的当前宿主。以下从新克隆开始;构建后在设置 → 扩展安装归档,按提示授予 configuration / storage 权限。 先获取配套案例源码快照并完成插件入门的本地包准备。在 ambleloft-extension-samples 的父目录执行,保留 AMBLELOFT_PACKS。
cd ambleloft-extension-samples/service-events
npm install --save-dev "$AMBLELOFT_PACKS/ambleloft-extension-sdk-0.1.0-alpha.9.tgz" "$AMBLELOFT_PACKS/ambleloft-extension-core-0.1.0-alpha.9.tgz" "$AMBLELOFT_PACKS/ambleloft-extension-cli-0.1.0-alpha.9.tgz"
npm run build
npm run validate
npm test
npm run pack02启动业务服务并连接
在独立终端运行服务。将扩展 serviceUrl 配置为 http://127.0.0.1:47831/events,点击连接并确认。案例有意限制为本机 HTTP /events 地址,不是通用生产 SSE 客户端。
npm run service03发送第一条业务事件
另开终端执行。预期消息中心出现 Report ready。响应 subscribers 为 0 表示尚未连接。再次发送相同 eventId 和 version 不应产生新消息。
curl http://127.0.0.1:47831/event \
-H 'content-type: application/json' \
-d '{"eventId":"report-42","taskId":"report","kind":"progress","version":1,"title":"Report ready","body":"Ready for review"}' 04更新与撤回
保留 eventId=report-42,把 version 改为 2 并修改 body,现有消息应更新。然后发送 kind=withdraw、version=3(保留 title/body/taskId 必填字段)撤回消息。旧版本应被忽略。eventId 对应消息,taskId 对应业务任务,version 用于事件排序。
05理解后端实现链路
src/push.ts 管理单连接、串行事件处理、负载校验与有上限的退避重连。src/extension.ts 用扩展 storage 记录版本,执行 getByEventKey → publish/update/withdraw。连接加入 context.subscriptions:关闭页面仍在后台运行,点击断开或停用扩展才释放。
阅读完整后端实现06检查断线与能力边界
POST /disconnect 测试重连,然后发送更高版本事件。演示服务没有持久事件重放;生产接入需补持久游标、重放/确认与 pending 事件对账。案例会先记 pending 再发布,崩溃后不能保证恰好一次送达。这里订阅的是自有服务事件,不是 Agent 对话或 turn 生命周期。
curl -X POST http://127.0.0.1:47831/disconnect07清理与下一步
点击断开并用 Ctrl+C 停止独立服务。需要用户从消息中确认或执行业务任务时,继续实现消息操作。
为消息添加业务操作检查结果与排错
接收演示服务事件,验证更新、断线和清理。
按本页的验证步骤核对实际结果。涉及业务服务时,分别检查界面提交、工具回执与服务端记录。
打开错误代码与排错 →