集成概览

本文将介绍如何将AICallKit SDK集成到您的Web应用中。

环境要求

  • Node 18.0 及以上版本,推荐使用最新 LTS 版本

  • Webpack 5 及以上版本或者 Vite

业务流程

image

您的App通过AppServer(你的业务服务器)生成ARTC鉴权Token,便可调用callWithConfig(config)方法进入通话,在通话过程中,可以调用AICallKitAPI实现智能体的实时字幕、打断等交互功能。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();