被动回调 & 响应 API · iOS
被动回调 & 响应 API · iOS
回调 / 响应对照表
| 回调类 | 响应类 | onRequest 签名 |
|---|---|---|
Audio2LlmCallback | Audio2LlmResponse | (agentId:eventId:flag:audio:param:response:) |
Audio2TtsCallback | Audio2TtsResponse | (agentId:eventId:itemId:flag:audio:param:response:) |
Asr2LlmCallback | Asr2LlmResponse | (agentId:eventId:text:param:response:) |
Asr2TtsCallback | Asr2TtsResponse | (agentId:eventId:text:param:response:) |
AsrVideo2VlmCallback | AsrVideo2VlmResponse | (agentId:eventId:flag:text:buf:param:response:) |
AsrVideo2TtsCallback | AsrVideo2TtsResponse | (agentId:eventId:flag:text:buf:param:response:) |
AudioVideo2VlmCallback | AudioVideo2VlmResponse | (agentId:eventId:flag:buf:param:response:) |
AudioVideo2TtsCallback | AudioVideo2TtsResponse | (agentId:eventId:flag:buf:param:response:) |
各 Response 可用方法
| Response | ASR | LLM | VLM | TTS | Skill | Interrupt |
|---|---|---|---|---|---|---|
Audio2LlmResponse | ✓ | ✓ | ✓ | ✓ | ||
Audio2TtsResponse | ✓ | ✓ | ✓ | ✓ | ✓ | |
Asr2LlmResponse | ✓ | ✓ | ✓ | |||
Asr2TtsResponse | ✓ | ✓ | ✓ | ✓ | ||
AsrVideo2VlmResponse | ✓ | ✓ | ✓ | |||
AsrVideo2TtsResponse | ✓ | ✓ | ✓ | ✓ | ||
AudioVideo2VlmResponse | ✓ | ✓ | ✓ | ✓ | ||
AudioVideo2TtsResponse | ✓ | ✓ | ✓ | ✓ | ✓ |
所有 Response 均支持 onError(eventId:errorCode:errorMsg:) 与 onControl(eventId:controlType:controlParam:)。
方法签名速查
Response 基类 AgentSdkResponse 对外公开的方法及在各 Response 类上的封装签名:
swift
// ASR(Audio2* / AudioVideo2* 类)
onAsrMiddle(eventId:middleAsr:) // String
onAsrFinal(eventId:finalAsr:) // String
// LLM
onLlmItemDelta(eventId:itemId:textDelta:)
onLlmItemDone(eventId:itemId:)
onLlmDone(eventId:)
// VLM(AsrVideo2* / AudioVideo2* 类)
onVlmItemDelta(eventId:itemId:textDelta:)
onVlmItemDone(eventId:itemId:)
onVlmDone(eventId:)
// TTS(*2Tts 类)
onTtsItemDelta(eventId:itemId:audio:) // Data(PCM 字节,基类做 base64 编码)
onTtsItemDone(eventId:itemId:)
onTtsDone(eventId:)
// 技能 / 打断 / 控制 / 错误
onSkill(eventId:itemId:skillType:skillName:skillParam:) // skillParam: AgentParam?
onInterrupt(eventId:interruptType:interruptTips:) // interruptTips: String?
onControl(eventId:controlType:controlParam:) // controlParam: AgentParam?
onError(eventId:errorCode:errorMsg:)
Function Call 与 Arbiter(v1.5.0)
⚠️ 尚未上线:本能力为 v1.5.0-SNAPSHOT 开发中特性,接口与协议可能调整,正式发布前请勿用于生产环境。
v1.5.0 在被动交互链路上新增 Function Call 分发与 Arbiter 仲裁,接口织入既有的 8 组回调 / 响应类。 使用流程见 被动交互指南 · Function Call 开放与 Arbiter 仲裁。
回调方法(8 种回调类均有)
swift
open func onFunctionCall(agentId: String, eventId: String, functionCall: FunctionCallInfo, response: <XxxResponse>)
默认空实现,重载后可接收网关透传的 function call。
FunctionCallInfo
| 字段 | 类型 | 说明 |
|---|---|---|
source | String? | function call 来源 |
policy | String? | 处理策略标识 |
type | String? | function call 类型 |
value | String? | 主体取值 |
param | [String: Any]? | 附带参数 |
响应方法(8 种 Response 类均有)
swift
public func onArbiter(eventId: String, decision: String, arbParam: AgentParam?)
回传仲裁决策,SDK 下发 agentsdk.function_call.arbiter。decision 取自 ArbiterDecision:
| 枚举 | wire 值 | 语义 |
|---|---|---|
.delegate | delegate | 委派智能体默认链路处理 |
.override | override | 二开应用接管、覆盖默认行为 |
.illegal | illegal | 非法 / 兜底值 |
事件类型
agentsdk.function_call.expose(网关 → SDK,触发 onFunctionCall)/ agentsdk.function_call.arbiter(SDK → 网关,由 onArbiter 发出)。见 枚举参考。
基类共享方法(PassiveCallback)
每个回调类都继承自 PassiveCallback,下列方法可按需重载(不重载使用默认空实现):
| 方法 | 触发时机 |
|---|---|
onRobotOnline(agentId:agentMeta:) | 机器人上线 |
onRobotOffline(agentId:) | 机器人下线 |
onFaceInfo(agentId:eventId:param:) | 识别到人脸 / 声纹 UID |
onVideoFrame(agentId:eventId:flag:buf:isKeyFrame:localTs:param:) | 透传视频帧(flag=2 H264,flag=3 图片) |
onGreetSignal(agentId:eventId:param:response:) | 打招呼信令 |
onState(agentId:eventId:stateName:stateValue:) | 机器人状态推送;模块全集见 机器人端侧状态参考 |
onHistories(agentId:eventId:histories:) | 对话历史透传(v1.5.0 新增);histories 为 [HistoryInfo] |
HistoryInfo(v1.5.0)
| 字段 | 类型 | 说明 |
|---|---|---|
timestamp | Int64 | 时间戳,用于排序 |
query | String? | 用户侧输入 |
answer | String? | 智能体侧回复 |
complete | Bool | 该轮是否完整结束 |
eventId | String? | 对应会话事件 ID,用于去重 |
skill | SkillInfo? | 技能信息(type / value),可能为 nil |
HistoryInfo.skill 为嵌套类 HistoryInfo.SkillInfo,字段:type: String? / value: String?。
GreetResponse 方法
| 方法 | 说明 |
|---|---|
onGreetVlmDelta(eventId:textDelta:) | VLM 流式片段 |
onGreetVlmDone(eventId:) | VLM 流式结束 |
onGreetTtsDelta(eventId:textDelta:) | TTS 音频流式片段——textDelta 是 base64 编码的字符串 |
onGreetTtsDone(eventId:) | TTS 音频输出结束 |
onError(eventId:errorCode:errorMsg:) | 应答异常 |