被动回调 & 响应 API · iOS

被动回调 & 响应 API · iOS

回调 / 响应对照表

回调类响应类onRequest 签名
Audio2LlmCallbackAudio2LlmResponse(agentId:eventId:flag:audio:param:response:)
Audio2TtsCallbackAudio2TtsResponse(agentId:eventId:itemId:flag:audio:param:response:)
Asr2LlmCallbackAsr2LlmResponse(agentId:eventId:text:param:response:)
Asr2TtsCallbackAsr2TtsResponse(agentId:eventId:text:param:response:)
AsrVideo2VlmCallbackAsrVideo2VlmResponse(agentId:eventId:flag:text:buf:param:response:)
AsrVideo2TtsCallbackAsrVideo2TtsResponse(agentId:eventId:flag:text:buf:param:response:)
AudioVideo2VlmCallbackAudioVideo2VlmResponse(agentId:eventId:flag:buf:param:response:)
AudioVideo2TtsCallbackAudioVideo2TtsResponse(agentId:eventId:flag:buf:param:response:)

各 Response 可用方法

ResponseASRLLMVLMTTSSkillInterrupt
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

字段类型说明
sourceString?function call 来源
policyString?处理策略标识
typeString?function call 类型
valueString?主体取值
param[String: Any]?附带参数

响应方法(8 种 Response 类均有)

swift
public func onArbiter(eventId: String, decision: String, arbParam: AgentParam?)

回传仲裁决策,SDK 下发 agentsdk.function_call.arbiter。decision 取自 ArbiterDecision:

枚举wire 值语义
.delegatedelegate委派智能体默认链路处理
.overrideoverride二开应用接管、覆盖默认行为
.illegalillegal非法 / 兜底值

事件类型

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)

字段类型说明
timestampInt64时间戳,用于排序
queryString?用户侧输入
answerString?智能体侧回复
completeBool该轮是否完整结束
eventIdString?对应会话事件 ID,用于去重
skillSkillInfo?技能信息(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:)应答异常