iOS SDK
智能体开启/关闭
SDK初始化
1- (id)initWithParams:(AgentEngineParams*) params delegate:(id<BaiduChatAgentDelegate>)delegate;
初始化SDK。
初始化SDK时调用。设置 AppID、日志等参数
AgentEngineParams
| 参数 | 类型 | 描述 |
|---|---|---|
| appId | NSString* | RTC 基础业务单元的唯一标识 |
| config | NSString* | 服务器端接口下发数据 { "cid": 1, "token": "xxx-aa-bb" } |
| instanceId | NSInteger | 实例id 服务器端下发,当前调试默认即可 |
| verbose | BOOL | 日志开关 |
| enableLogCallback | BOOL | 允许SDK将日志通过 onAgentLogPrint: 方法抛出 |
| regionServer | NSString * | 海外服务器配置,参考 BaiduChatAgentRegionType |
| licenseKey | NSString * | 授权 key |
| userId | NSString * | 用户 ID |
| enableVoiceInterrupt(废弃) | BOOL | 是否允许自动打断 (自 v1.6.6 改为服务侧判定) |
| userAudioLevelInterrupt(废弃) | NSInteger | 本地音频打断能量值 默认80 (自 v1.6.6 改为服务侧判定) |
| enableExternalAudioDevice | BOOL | 是否使用外部音频进行采集和播放 |
| audioSampleRate | int | 音频采样率,目前仅外部音频生效 |
| useFixedSampleRate | BOOL | 是否固定使用配置音频采样率,默认 YES。通常用于外部蓝牙设备仅支持固定采样率 |
| enableSoftwareAEC | BOOL | 是否开启软件回声消除AEC(尽量使用默认的iOS系统硬件回声消除,应在明确知道应用环境中存在较长延迟时,才尝试开启该配置) |
| softwareAECLevel | RtcAecLevel | 软件回声消除等级, 默认 RtcAecLevelDefault(见 BaiduRtcRoomApiDefines.h) |
| enableDumpAudioInput | BOOL | 是否 dump 采集音频数据(PCM格式,每次 call/hangup 形成一个录音文件,录制目录:Documents/audio_dump) |
| enableDumpAecAudio | BOOL | 是否 dump 软件处理后待发送的音频数据(目录:Documents/audio_dump,_aec 后缀) |
返回
返回 SDK 实例,nil 表示初始化失败
启动本地智能体
1- (void)call:(NSString *)token instanceId:(NSInteger)instanceId;
该函数在 initSDKWithAppID后调用,启动本地的智能体本地端
参数
| 参数 | 类型 | 描述 |
|---|---|---|
| token | NSSTring* | 通过url获取远端的智能体的返回的参数,token |
| instanceId | NSString* | instanceId 实例id |
返回
无
挂断本地退出
1- (void)hangup;
主动退出远端和本地智能体
参数
无
返回
资源销毁
1- (void)destroy;
销毁本地资源
返回
无
智能体交互控制
打断智能体会话
1- (void)interrupt;
打断智能体的对话指令,开启新的回话。
参数 无
返回
持续打断智能体会话
1- (void)interrupt2:(BOOL)isBegin delay:(int)delay;
打断智能体的对话指令,开启新的回话。
参数
| 参数 | 类型 | 描述 |
|---|---|---|
| isBegin | BOOL | 是否是开始打断 |
| delay | int | 持续时长(毫秒) |
返回
静音播放
1- (void)mutePlayback:(BOOL)isMute;
开启和关闭静音智能体的播放
参数
| 参数 | 类型 | 描述 |
|---|---|---|
| isMute | BOOL | YES/NO |
返回
void
静音mic
1- (void)muteMic:(BOOL)isMute;
采集接口静音操作
参数
| 参数 | 类型 | 描述 |
|---|---|---|
| isMute | BOOL | YES/NO |
返回
无
切换听筒和扬声器
1-- (void)switchToSpeaker:(BOOL)speaker;
听筒和外放切换
参数
| 参数 | 类型 | 描述 |
|---|---|---|
| speaker | BOOL | YES 扬声器 NO 听筒 |
返回
无
预置扬声器状态
1- (void)presetLoudSpeaker:(BOOL)isSpeaker;
预置听筒/扬声器播放语音,在 initWithParams 之后,call 之前调用
参数
| 参数 | 类型 | 描述 |
|---|---|---|
| isSpeaker | BOOL | YES 扬声器 NO 听筒 |
返回
无
发送文本给智能体
1- (void)sendTextToAIAgent:(NSString *)text;
发送文本信息
参数
| 参数 | 类型 | 描述 |
|---|---|---|
| text | NSString * | 发送文本信息 |
返回
无
发送文本给智能体,打断播报
1- (void)sendTextToAIAgentAndInterrupt:(NSString *)text;
发送文本给智能体,并且打断当前播报
参数
| 参数 | 类型 | 描述 |
|---|---|---|
| text | NSString * | 发送文本信息 |
返回
无
发送文本给TTS
1- (void)sendTextToTTS:(NSString *)text;
发送文本给TTS,直接进行播报
参数
| 参数 | 类型 | 描述 |
|---|---|---|
| text | NSString * | 发送文本信息 |
返回
无
FunctionCall处理结果返回
1- (void)sendFunctionCallResult:(NSString*) functionID result:(NSString *)msg;
处理结果返回
参数
| 参数 | 类型 | 描述 |
|---|---|---|
| functionID | NSString* | fuction的默认ID |
| msg | NSString* | 返回结果 |
返回
无
设置增强查询
1- (void)updateEnhanceQuery:(NSString *)enhanceType preQuery:(NSString *)preQuery postQuery:(NSString *)postQuery;
更设置增强查询文本内容, 通过向用户 query 插入预置文本实现
参数
| 参数 | 类型 | 描述 |
|---|---|---|
| enhanceType | NSString * | 插入类型包括 0:不插入、1:前插、2:后插、3:前后插) |
| preQuery | NSString * | 前插文本 |
| postQuery | NSString * | 后插文本 |
返回
无
上传文件
1- (BOOL)uploadFile:(NSString *)path expire:(NSInteger)expire;
上传本地文件进行互动,目前仅支持图片
参数
| 参数 | 类型 | 描述 |
|---|---|---|
| path | NSString* | 上传文件的路径 |
| expire | NSInteger | 文件互动过期时间,默认 180s |
返回
上传是否成功
相机控制
打开相机及视频预览视图,以使用视频互动功能
打开相机
1- (void)startCameraPreview;
打开相机。打开相机后可以进行视频互动,具体过程请参考Demo实现
关闭相机
1- (void)stopCameraPreview;
关闭相机。
翻转相机
1- (void)switchCamera;
切换前后摄像头
视频预览
设置相机视图
1- (void)setLocalDisplay:(RTCLocalVideoView *)localVideoView;
设置相机画面显示的View
参数
| 参数 | 类型 | 描述 |
|---|---|---|
| remoteVideoView | RTCRemoteVideoView | RTC里面的通用显示view |
RTCRemoteVideoView 使用BRTC的View
返回
无
设置数字人视图
1-(void)setDigitalDisplay:(RTCRemoteVideoView *) remoteVideoView;
开启设置数字人的显示的View
参数
| 参数 | 类型 | 描述 |
|---|---|---|
| remoteVideoView | RTCRemoteVideoView | RTC里面的通用显示view |
返回
无
音频相关
外部音频
1- (void)setAudioExternalDeviceDelegate:(id<BaiduRtcRoomApiAudioExternalDeviceDelegate>)audioExternalDelegate;
设置外部音频设备进行采集和播放。
需要在 call 之前设置 AgentEngineParams.enableExternalAudioDevice 为 YES 启用该功能,
设置 AgentEngineParams.audioSampleRate 调整音频采样率。
代理具体使用方法参考 Demo BCAAudioExternalDevice 实现
参数
| 参数 | 类型 | 描述 |
|---|---|---|
| audioExternalDelegate | id |
外部音频设备代理 |
返回
无
事件回调
错误信息回调
1-(void)onError:(NSInteger)errCode errMsg:(NSString *)errMsg extInfo:(nullable NSDictionary*)extInfo;
错误信息回调
参数
| 参数 | 类型 | 描述 |
|---|---|---|
| errCode | NSInteger | errno |
| errMsg | NSString * | 错误文本 |
| extInfo | NSDictionary* | 错误的json串返回 |
智能体登录状态改变通知
1 - (void)onCallStateChange:(AGentCallState)state;
错误信息回调
参数
| 参数 | 类型 | 描述 |
|---|---|---|
| state | NSInteger | 状态信息 AGentCallState |
回调事件
1typedef NS_ENUM(NSInteger, AGentCallState) {
2 AGENT_CALL_BEGIN = 1,
3 AGENT_CALL_END
4};
链路状态信息回调
1 - (void)onConnectionStateChange:(AGentConnectState)state;
智能体链路信息回调
| 参数 | 类型 | 描述 |
|---|---|---|
| state | NSInteger | 状态信息 AGentCallState |
回调事件
1typedef NS_ENUM(NSInteger, AGentCallState) {
2 AGENT_CONNECTION_STATE_DISCONNECTED = 1,
3 AGENT_CONNECTION_STATE_CONNECTING,
4 AGENT_CONNECTION_STATE_CONNECTED,
5 AGENT_CONNECTION_STATE_RECONNECTING
6};
本地语音Asr文本识别返回
1 - (void)onUserAsrSubtitle:(NSString *)text isFinal:(BOOL)isFinal ext:(AgentAsrExtInfo * _Nullable)info;
用户端音频ASR结果
参数
| 参数 | 类型 | 描述 |
|---|---|---|
| text | NSString * | ASR 返回内容 |
| isFinal | BOOL | 是否是结尾 |
| info | AgentAsrExtInfo * | 附加信息 |
AgentAsrExtInfo
| 参数 | 类型 | 描述 |
|---|---|---|
| speakerName | NSString * | 说话人标识 |
| similarity | int | 声纹置信度 |
| emotion | NSString * | 情感名称情感名称 |
| sessionId | NSInteger | RTC 基础业务单元的唯一标识 |
远端语音TTS文本识别返回
1 - (void)onAIAgentSubtitle:(NSString *)text isFinal:(BOOL)isFial;
视频渲染首帧回调
参数
| 参数 | 类型 | 描述 |
|---|---|---|
| text | NSString * | TTS返回文本内容 |
| isFinal | BOOL | 是否是结尾 |
AI智能体音频状态变化
1 - (void)onAIAgentAudioStateChange:(AGentAudioState)newState;
智能体音频状态变化
参数
| 参数 | 类型 | 描述 |
|---|---|---|
| newState | AGentAudioState | 用户uid |
1typedef NS_ENUM(NSInteger, AGentAudioState) {
2 AGENT_STOPPED = 1,
3 AGENT_SPEAKING
4};
用户声音状态变化
1 - (void)onUserAudioStateChange:(AGentAudioState)newState;
远端用户离开事件
参数
| 参数 | 类型 | 描述 |
|---|---|---|
| newState | AGentAudioState | 用户uid |
1typedef NS_ENUM(NSInteger, AGentAudioState) {
2 AGENT_STOPPED = 1,
3 AGENT_SPEAKING
4};
智能体音频能量
1 - (void)(void)onAIAgentAudioLevel:(NSInteger)level;
远端智能体的音量返回
参数
| 参数 | 类型 | 描述 |
|---|---|---|
| level | NSInteger | 返回智能体的音量 |
用户音频能量
1 - (void)onUserAudioLevel:(NSInteger)level;
本地用户音量返回
参数
| 参数 | 类型 | 描述 |
|---|---|---|
| level | NSInteger | 返回本地的音量 |
回调functionCall事件
1 - (void)onFunctionCall:(NSString*) functionID param:(NSString*) params;
本地用户音量返回
参数
| 参数 | 类型 | 描述 |
|---|---|---|
| functionID | NSString* | 返回function的ID |
| params | NSString* | 返回的function的详细json串 |
文件上传状态
1- (void)onUploadFileStatus:(AgentErrorCode)code fileName:(NSString *)fileName;
文件上传状态回调
参数
| 参数 | 类型 | 描述 |
|---|---|---|
| code | AgentErrorCode | 状态码,AgentErrorCodeNoError 表示上传成功 |
| fileName | NSString * | 上传文件名 |
互动意图回调
1- (void)onAgentIntent:(NSString *)type extInfo:(NSDictionary * __nullable)extInfo;
用于在智能体识别用户意图后,提供图像、视频等关联媒体交互时机
参数
| 参数 | 类型 | 描述 |
|---|---|---|
| type | NSString * | 意图类型,暂时支持 [image, video] |
| extInfo | NSDictionary * | 附加信息 |
收到标签消息
1- (void)onRecvTagMessage:(NSString *)message;
收到固定标签格式的用户消息
参数
| 参数 | 类型 | 描述 |
|---|---|---|
| message | NSString * | 自定义消息内容(包含标签格式) |
授权结果回调
1- (void)onAgentLicenseStatus:(int)status;
license 授权状态回调,授权失败时,同时会通过 onError: 回调具体错误原因
参数
| 参数 | 类型 | 描述 |
|---|---|---|
| statue | int | 授权状态: 0 成功; -1 失败 |
内部日志回调
1- (void)onAgentLogPrint:(NSString *)log;
内部日志回调,通过 AgentEngineParams.enableLogCallback 开启
参数
| 参数 | 类型 | 描述 |
|---|---|---|
| log | NSString* | 日志内容 |
