iOS使用指南
本文将介绍如何通过AICallKit SDK集成消息对话智能体到您的iOS应用中。
环境要求
Xcode 16.0 及以上版本,推荐使用最新正式版本
CocoaPods 1.9.3 及以上版本
准备 iOS 11.0 及以上版本的真机
集成SDK
target '你的Target' do
# 依赖实时音视频能力,引入AliVCSDK_ARTC或AliVCSDK_Standard或AliVCSDK_InteractiveLive
pod 'AliVCSDK_ARTC', '~> 7.4.0'
# 引入AICallKit SDK
pod 'ARTCAICallKit/Chatbot', '~> 2.7.0'
# 需要集成AliVCInteractionMessage,版本最低是1.7.0
pod 'AliVCInteractionMessage', '~> x.x.x'
...
end
工程配置
添加麦克风与摄像头权限,打开工程info.Plist,添加NSMicrophoneUsageDescription和NSCameraUsageDescription权限。
打开工程设置,在Signing & Capabilities中开启Background Modes,强烈推荐开启后台模式,否则在进入后台后无法继续通话,这时候在您的APP中需要调用结束通话接口。
SDK使用示例
// 引入SDK
import ARTCAICallKit
// 创建engine实例
let engine: ARTCAIChatEngineInterface = {
return ARTCAICallEngineFactory.createChatEngine()
}()
// 设置回调
self.engine.delegate = self
// 开始对话
// userId推荐使用你的App登录后的用户id
let userId = "xxx"
// 设置deviceId
let deviceId = UIDevice.current.identifierForVendor?.uuidString
let userInfo = ARTCAIChatUserInfo(userId, deviceId)
// 设置智能体,智能体Id不能为nil
let agentInfo = ARTCAIChatAgentInfo(agentId: "xxx")
let sessionId = "\(userInfo.userId)_\(agentInfo.agentId)"
self.engine.startChat(userInfo: userInfo, agentInfo: agentInfo, sessionId: self.sessionId)
// 结束对话
// 如果有多个消息对话的智能体,那么在结束当前对话时,无需进行登出,把needLogout设置为false
self.engine.endChat(needLogout: false)
// 否则把needLogout设置为true并调用destroy释放资源
self.engine.endChat(needLogout: true)
self.engine.destroy()
// 其他功能调用示例,请参考API说明
// 回调处理(仅示例部分核心的回调操作)
public func onRequestAuthToken(userId: String, responseBlock: @escaping (ARTCAIChatAuthToken?, NSError?) -> Void) {
// 请求AuthToken,当ChatEngine需要执行IM登录或者IM登录AuthToken后过期时会触发
self.fetchAuthToken(userId: userId) { authToken, error in
responseBlock(authToken, error)
}
}
public func onEngineStateChange(state: ARTCAIChatEngineState) {
// Chat智能体连接改变
}
public func onErrorOccurs(error: NSError, requestId: String?) {
// requestId不为空,消息处理发生了错误
if let _ = requestId {
if error.aicall_code == .ChatTextMessageReceiveFailed {
// 处理文本消息出错
return
}
if error.aicall_code == .ChatVoiceMessageReceiveFailed {
// 处理语音消息出错
return
}
if error.aicall_code == .ChatPlayMessageReceiveFailed {
// 处理播放出错
return
}
return
}
// requestId为空,引擎发生了错误
if let code = error.aicall_code {
if code == .TokenExpired {
// 认证过期
}
else if code == .AgentNotFound {
// 智能体未能找到(智能体ID不存在)
}
else if code == .KickedBySystem {
// 被系统踢出导致对话无法进行
}
else if code == .KickedByUserReplace {
// 同名登录导致通话无法进行
}
}
// 处理其他错误
}
public func onUserMessageUpdated(message: ARTCAIChatMessage) {
// 用户发送的消息需要更新
}
public func onReceivedMessage(message: ARTCAIChatMessage) {
// 收到Chat智能体的回复消息,智能体新的回复或者当前回复过程中消息的状态发生了变化都会触发该回调
}
public func onAgentResponeStateChange(state: ARTCAIChatAgentResponseState, requestId: String?) {
// 收到Chat智能体响应改变
}
public func onMessagePlayStateChange(message: ARTCAIChatMessage, state: ARTCAIChatMessagePlayState) {
// 收到Chat智能体的消息播放状态改变
}