本文将介绍如何将AICallKit SDK集成到您的Web应用中。
环境要求
Node 18.0 及以上版本,推荐使用最新 LTS 版本
Webpack 5 及以上版本或者 Vite
业务流程
您的App通过AppServer(你的业务服务器)生成ARTC鉴权Token,便可调用callWithConfig(config)方法进入通话,在通话过程中,可以调用AICallKit的API实现智能体的实时字幕、打断等交互功能。AICallKit依赖于实时音视频能力,因此在内部已实现AliVCSDK_ARTC SDK的相关功能。
集成SDK
npm install aliyun-auikit-aicall --save
SDK开发指南
步骤一:创建&初始化引擎
创建&初始化ARTCAICallEngine引擎,示例代码如下:
// 指定智能体的类型:纯语音、数字人、视觉理解
let agentType: AICallAgentType;
// 初始化参数
const config = {
muteMicrophone: false, // 是否静音麦克风,按需设置
// 省略其他参数
}
// 如果是视觉理解类型,则需要配置本地视频预览配置
if (agentType === AICallAgentType.VisionAgent) {
config.previewElement = 'example-preview-element-id';
config.cameraConfig = {
width: 450,
height: 800,
frameRate: 5,
};
}
const engine = new ARTCAICallEngine(config);
// 如果是数字人类型,则需要配置数字人显示的视图配置
if (agentType === AICallAgentType.AvatarAgent) {
engine.setAgentView('example-agent-element-id');
}
步骤二:实现回调方法
实现引擎回调,按需实现回调方法。引擎回调接口详情,请参见ARTCAICallEngine事件详情。
// 如果启动通话失败,会触发下面回调
engine.on('errorOccurred', (code: number) => {
// 通过过程发生了错误,进行挂断
engine.handup();
});
// 如果智能体启动通话成功,会触发下面回调
engine.on('agentStarted', () => {
// 智能体实例已启动
});
// 如果当前通话接通,会触发下面回调
engine.on('callBegin', () => {
// 通话开始
});
engine.on('callEnd', () => {
// 通话结束
});
engine.on('agentStateChange', (newState: AICallAgentState) => {
// 智能体状态改变
});
engine.on('agentSubtitleNotify', (subtitle: AICallSubtitleData) => {
// 智能体回答结果通知
});
engine.on('userSubtitleNotify', (subtitle: AICallSubtitleData, voiceprintResult: AICallVoiceprintResult) => {
// 用户语音识别结果通知
});
engine.on('voiceIdChanged', (voiceId: string) => {
// 当前通话的音色发生了改变
});
engine.on('voiceInterruptChanged', (enable: boolean) => {
// 当前通话的语音智能打断状态变更
});
步骤三:创建并初始化AICallConfig
详细结构请参见AICallConfig。
const callConfig = {
agentId: "xxx", // 智能体Id
agentType: agentType, // 智能体类型
userId: "xxx", // 推荐使用你的App登录后的用户id
region: "xx-xxx", // 智能体服务所在的区域
userJoinToken: "xxxxxxxxx", // RTC Token
};
地域名称 | Region Id |
华东1(杭州) | cn-hangzhou |
华东2(上海) | cn-shanghai |
华北2(北京) | cn-beijing |
华南1(深圳) | cn-shenzhen |
新加坡 | ap-southeast-1 |
userJoinToken需要您获取RTC Token,详情请参见获取RTC Token。
步骤四:发起智能体呼叫
调用callWithConfig(config)接口发起智能体呼叫。
// 启动智能体后,开始通话
engine.callWithConfig(callConfig);
// 如果当前通话接通,会触发下面回调
engine.on('callBegin', () => {
// 通话开始
});
步骤五:通话中的业务实现
在开启通话后,您可以根据您的业务需求处理字幕、打断智能体讲话等。详细内容,请参见功能实现。
步骤六:通话结束,挂断智能体通话
调用handup()接口,挂断智能体通话。
engine.hangup();
该文章对您有帮助吗?