iOS使用指南

更新时间:2025-04-09 09:07:18

本文将介绍如何通过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', '~> x.x.x'
  # 引入AICallKit SDK
  pod 'ARTCAICallKit/Chatbot', '~> 2.2.0'

  # 需要集成AliVCInteractionMessage,版本最低是1.6.0
  pod 'AliVCInteractionMessage', '~> 1.6.0'
  
  ...

end
说明

ARTC SDK最低适配版本为v7.1.0,最新版本请到官网获取。

工程配置

  • 添加麦克风与摄像头权限,打开工程info.Plist,添加NSMicrophoneUsageDescriptionNSCameraUsageDescription权限。

  • 打开工程设置,在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智能体的消息播放状态改变
}

API说明

API概览

类/协议

API

说明

ARTCAIChatEngineInterface

消息对话引擎接口定义

state

获取引擎连接状态

userInfo

获取当前参与会话的用户信息

sessionId

获取当前会话的唯一标识

agentInfo

获取当前参与会话的智能体信息

agentResponeState

获取当前智能体响应状态

voiceIdList

获取当前音色列表

delegate

设置和获取回调事件

templateConfig

设置和获取TemplateConfig

userData

用户自定义信息,该信息最终传给智能体

startChat

开始聊天会话

endChat

结束聊天会话

sendMessage

发送消息,发送前会打断当前的回复(如果在思考&回复中)

queryMessageList

请求历史消息列表

interruptAgentResponse

打断当前的消息回复

deleteMessage

删除消息

startPlayMessage

开始播放消息内容

stopPlayMessage

结束消息的播放

isPlayingMessage

是否播放中

createAttachmentUploader

创建附件上传器对象,实现发消息带上图片/视频/文件

startPushVoiceMessage

开始按键语音,按下去时开始录音并实时发送,需确保已经开启录音权限

finishPushVoiceMessage

结束按键语音,松开后时调用,表示当前语音消息发送完毕,等待智能体返回结果

cancelPushVoiceMessage

取消按键语音,松开后时调用,表示取消当前语音消息的发送

destroy

释放资源

parseShareAgentChat

解析一个分享的智能体信息

generateShareAgentChat

启动一个分享的智能体通话

IARTCAIChatEngineCallback

消息对话引擎回调事件

onErrorOccurs

发生了错误

onRequestAuthToken

请求AuthToken,当ChatEngine需要执行IM登录或者IM登录AuthToken后过期时会触发

onEngineStateChange

收到智能体连接状态改变

onReceivedMessage

收到智能体的回复消息,智能体新的回复或者当前回复过程中消息的状态发生了变化都会触发该回调

onReceivedCustomMessage

收到自定义消息

onUserMessageUpdated

用户发送的消息需要更新

onAgentResponeStateChange

收到智能体响应状态改变

onMessagePlayStateChange

收到Chat智能体的消息播放状态改变

ARTCAICallEngineFactory

引擎创建工厂

createChatEngine

创建默认的Chat智能体引擎

ARTCAIChatEngineInterface详情

state

获取引擎连接状态

var state: ARTCAIChatEngineState { get }

userInfo

获取当前参与会话的用户信息

var userInfo: ARTCAIChatUserInfo? { get }

sessionId

获取当前会话的唯一标识

var sessionId: String? { get }

agentInfo

获取当前参与会话的智能体信息

var agentInfo: ARTCAIChatAgentInfo? { get }

agentResponeState

获取当前智能体响应状态

var agentResponeState: ARTCAIChatAgentResponseState { get }

voiceIdList

获取当前音色列表

var voiceIdList: [String] { get }

delegate

设置和获取回调事件

weak var delegate: ARTCAIChatEngineDelegate? { get set }

templateConfig

设置和获取TemplateConfig

var templateConfig: ARTCAIChatTemplateConfig? { get set }

userData

用户自定义信息,该信息最终传给智能体

var userData: [String: Any]? { get set }

startChat

开始聊天会话

func startChat(userInfo: ARTCAIChatUserInfo, agentInfo: ARTCAIChatAgentInfo, sessionId: String?)

参数详情:

参数

类型

含义

参数

类型

含义

userInfo

ARTCAIChatUserInfo

当前开始会话的用户信息

agentInfo

ARTCAIChatAgentInfo

当前开始会话的智能体消息

sessionId

String?

当前会话的唯一标识,如果为空,则使用userId+agentId作为唯一标识

endChat

结束聊天会话

func endChat(needLogout: Bool)

参数详情:

参数

类型

含义

参数

类型

含义

needLogout

Bool

当前用户实时要退出链接(设置为fals会在下次startChat较少链接耗时,当你后续都不再进行聊天时,可以设置为true)

sendMessage

发送消息,发送前会打断当前的回复(如果在思考&回复中)

func sendMessage(request: ARTCAIChatSendMessageRequest, completed:((_ msg: ARTCAIChatMessage?, _ error: NSError?) -> Void)?)

参数详情:

参数

类型

含义

参数

类型

含义

request

ARTCAIChatSendMessageRequest

要发送的消息内容

completed

(_ msg: ARTCAIChatMessage?, _ error: NSError?) -> Void

发送结果回调

queryMessageList

请求历史消息列表

func queryMessageList(request: ARTCAIChatMessageListRequest, completed:((_ msgList: [ARTCAIChatMessage]?, _ error: NSError?) -> Void)?)  

参数详情:

参数

类型

含义

参数

类型

含义

request

ARTCAIChatMessageListRequest

请求model

completed

(_ msgList: [ARTCAIChatMessage]?, _ error: NSError?) -> Void)?

结果回调

interruptAgentResponse

打断当前的消息回复

func interruptAgentResponse()

deleteMessage

删除消息

func deleteMessage(dialogueId: String, completed:((_ error: NSError?) -> Void)?)

参数详情:

参数

类型

含义

参数

类型

含义

dialogueId

String

消息Id

completed

(_ error: NSError?) -> Void)?

结果回调

startPlayMessage

开始播放消息内容

func startPlayMessage(message: ARTCAIChatMessage, voiceId: String?, completed: ((NSError?) -> Void)?)

参数详情:

参数

类型

含义

参数

类型

含义

message

ARTCAIChatMessage

要播放的消息

voiceId

voiceId

播放的音色

completed

(_ error: NSError?) -> Void)?

结果回调

stopPlayMessage

结束消息的播放

func stopPlayMessage()

isPlayingMessage

是否播放中

func isPlayingMessage(dialogueId: String) -> Bool

createAttachmentUploader

创建附件上传器对象,发送消息时可以通过关联AttachmentUploader实现发消息带上图片/视频/文件

func createAttachmentUploader() -> ARTCAIChatAttachmentUploader?

startPushVoiceMessage

开始按键语音,按下去时开始录音并实时发送,需确保已经开启录音权限

返回true表示成功, 返回false表示失败(一般原因是:当前状态不对、录音权限未开启等)

func startPushVoiceMessage(request: ARTCAIChatSendMessageRequest) -> Bool

参数详情:

参数

类型

含义

参数

类型

含义

request

ARTCAIChatSendMessageRequest

要发送的消息内容

finishPushVoiceMessage

结束按键语音,松开后时调用,表示当前语音消息发送完毕,等待智能体返回结果

func finishPushVoiceMessage(completed:((_ msg: ARTCAIChatMessage) -> Void)?)

参数详情:

参数

类型

含义

参数

类型

含义

completed

(_ msg: ARTCAIChatMessage) -> Void)?

发送结果回调

cancelPushVoiceMessage

取消按键语音,松开后时调用,表示取消当前语音消息的发送

func cancelPushVoiceMessage()

destroy

释放资源

func destroy()

parseShareAgentChat

解析一个分享的智能体信息

func parseShareAgentChat(shareInfo: String) -> ARTCAIChatAgentShareConfig?

参数详情:

参数

类型

含义

参数

类型

含义

shareInfo

String

分享信息

generateShareAgentChat

启动一个分享的智能体通话

func generateShareAgentChat(shareConfig: ARTCAIChatAgentShareConfig, userId: String, completed: ((_ agentInfo: ARTCAIChatAgentInfo?, _ authToken: ARTCAIChatAuthToken?, _ error: NSError?, _ reqId: String) -> Void)?)    

参数详情:

参数

类型

含义

参数

类型

含义

shareConfig

ARTCAIChatAgentShareConfig

分享信息

userId

String

用户id

completed

(_ agentInfo: ARTCAIChatAgentInfo?, _ authToken: ARTCAIChatAuthToken?, _ error: NSError?, _ reqId: String) -> Void)?

结果回调

ARTCAIChatEngineDelegate详情

onErrorOccurs

发生了错误

@objc optional func onErrorOccurs(error: NSError, requestId: String?)

参数详情:

参数

类型

含义

参数

类型

含义

error

NSError

错误信息

requestId

String?

消息请求Id,当不为nil时,该错误属于消息错误

onRequestAuthToken

请求AuthToken,当ChatEngine需要执行IM登录或者IM登录AuthToken后过期时会触发

@objc optional func onRequestAuthToken(userId: String, responseBlock: @escaping (_ authToken: ARTCAIChatAuthToken?, _ error: NSError?)->Void)

参数详情:

参数

类型

含义

onEngineStateChange

收到引擎连接状态改变

@objc optional func onEngineStateChange(state: ARTCAIChatEngineState)

参数详情:

参数

类型

含义

参数

类型

含义

state

ARTCAIChatEngineState

当前智能体链接状态

onReceivedMessage

收到智能体的回复消息,智能体新的回复或者当前回复过程中消息的状态发生了变化都会触发该回调

@objc optional func onReceivedMessage(message: ARTCAIChatMessage)

参数详情:

参数

类型

含义

参数

类型

含义

message

ARTCAIChatMessage

消息对象

onReceivedCustomMessage

收到自定义消息

@objc optional func onReceivedCustomMessage(text: String)

参数详情:

参数

类型

含义

参数

类型

含义

text

String

消息内容

onUserMessageUpdated

用户发送的消息需要更新

@objc optional func onUserMessageUpdated(message: ARTCAIChatMessage)

参数详情:

参数

类型

含义

参数

类型

含义

message

ARTCAIChatMessage

消息对象

onAgentResponeStateChange

收到智能体响应状态改变

@objc optional func onAgentResponeStateChange(state: ARTCAIChatAgentResponseState, requestId: String?)

参数详情:

参数

类型

含义

参数

类型

含义

state

ARTCAIChatAgentResponseState

响应状态

requestId

String?

当前的消息会话

onMessagePlayStateChange

收到智能体的消息播放状态改变

@objc optional func onMessagePlayStateChange(message: ARTCAIChatMessage, state: ARTCAIChatMessagePlayState)

参数详情:

参数

类型

含义

参数

类型

含义

message

ARTCAIChatMessage

消息对象

state

ARTCAIChatMessagePlayState

播放状态

ARTCAICallEngineFactory详情

createChatEngine

创建默认的Chat智能体引擎

public static func createChatEngine() -> ARTCAIChatEngineInterface
  • 本页导读 (1)
  • 环境要求
  • 集成SDK
  • 工程配置
  • SDK使用示例
  • API说明
  • API概览
  • ARTCAIChatEngineInterface详情
  • ARTCAIChatEngineDelegate详情
  • ARTCAICallEngineFactory详情