本文將介紹如何將AICallKit SDK集成到您的Web應用中。
集成SDK
npm install aliyun-auikit-aicall --save
SDK使用示例
// 引入SDK
import ARTCAICallEngine, { ARTCAICallErrorCode, ARTCAICallAgentState, AICallSubtitleData } from 'aliyun-auikit-aicall';
// 創建engine實例
const engine = new ARTCAICallEngine();
// 其他功能調用示例,請參考API說明
// 回調處理(僅示例不分核心的回調操作)
engine.on('errorOccurred', (code: ARTCAICallErrorCode) => {
// 發生了錯誤
engine.handup();
});
engine.on('callBegin', () => {
// 通話開始
});
engine.on('callEnd', () => {
// 通話結束
});
engine.on('agentStateChanged', (state: ARTCAICallAgentState) => {
// 智能體狀態改變
});
engine.on('userSubtitleNotify', (subtitle: AICallSubtitleData) => {
// 用戶提問被智能體識別結果的通知
});
engine.on('agentSubtitleNotify', (subtitle: AICallSubtitleData) => {
// 智能體回答結果通知
});
engine.on('voiceIdChanged', (voiceId: string) => {
// 當前通話的音色發生了改變
});
engine.on('voiceInterruptChanged', (enable: boolean) => {
// 當前通話的語音打斷是否啟用
});
const userId = '';
// 從服務端獲取 agentInfo
const agentInfo = fetchAgentInfo();
try {
// 啟動智能體后,開始通話
engine.call(userId, agentInfo);
} catch (error) {}
// 結束通話
engine.handup();
API說明
屬性說明
字段 | 描述 |
userId | 獲取當前通話的UserId |
isOnCall | 是否通話中 |
agentInfo | 獲取當前智能體信息 |
agentState | 獲取當前智能體狀態 |
API概覽
類/協議 | API | 說明 |
ARTCAICallEngine 引擎接口定義 | 開始通話 | |
掛斷 | ||
設置智能體渲染視圖,及縮放模式 | ||
打斷智能體講話 | ||
開啟/關閉智能打斷 | ||
設置本地預覽地址 | ||
開關攝像頭推送 | ||
切換攝像頭 | ||
切換音色 | ||
靜音/取消禁音麥克風 | ||
獲取RTC引擎 | ||
釋放資源 | ||
ARTCAICallEngine 引擎回調事件 | 發生了錯誤 | |
通話開始 | ||
通話結束 | ||
智能體狀態改變 | ||
音量變化 | ||
用戶提問被智能體識別結果的通知 | ||
智能體回答結果通知 | ||
當前通話的音色發生了改變 | ||
當前通話的語音打斷是否啟用 | ||
真人即將接管當前智能體 | ||
當真人接管已經接通 |
ARTCAICallEngine 詳情
call
開始通話
async call(userId: string, agentInfo: AICallAgentInfo, config?: AICallEngineConfig): Promise<void>>
參數詳情:
參數 | 類型 | 含義 |
userId | String | 當前用戶uid |
agentInfo | AICallAgentInfo | 智能體信息 |
config | AICallEngineConfig | 初始化配置,類型定義:
|
handup
退出通話
async handup(): Promise<void>
setAgentView
設置智能體渲染視圖,及視圖模式
setAgentView(view: HTMLVideoElement | string): void
參數詳情:
參數 | 類型 | 含義 |
view | HTMLVideoElement | string | video 標簽或者對應的 id |
interruptSpeaking
打斷智能體講話
async interruptSpeaking(): Promise<void>
enableVoiceInterrupt
開啟/關閉智能打斷
async enableVoiceInterrupt(enable: boolean): Promise<void>
參數詳情:
參數 | 類型 | 含義 |
enable | boolean | 開啟/關閉 |
startPreview
設置本地預覽地址
startPreview(view: HTMLVideoElement | string): void
參數詳情:
參數 | 類型 | 含義 |
view | HTMLVideoElement | string | video 標簽或者對應的 id |
muteLocalCamera
開關攝像頭推送
async muteLocalCamera(mute: boolean)
參數詳情:
參數 | 類型 | 含義 |
mute | boolean | 是否開啟攝像頭 |
switchCamera
切換攝像頭
async switchCamera(deviceId?: string)
參數詳情:
參數 | 類型 | 含義 |
deviceId | string | 設備 Id,可以通過 ARTCAICallEngine.getCameraList() 獲取,不傳在手機端會切換前后置攝像頭。 |
switchVoiceId
切換音色
async switchVoiceId(voiceId: string): Promise<void>
參數詳情:
參數 | 類型 | 含義 |
voiceId | string | 音色id |
mute
靜音/取消禁音麥克風
async mute(mute: boolean): Promise<void>
參數詳情:
參數 | 類型 | 含義 |
mute | boolean | 靜音/取消禁音 |
getRTCInstance
獲取RTC引擎
getRTCInstance(): AliRtcEngine | undefined
destroy
釋放資源
async destroy()
ARTCAICallEngine事件詳情
errorOccurred
當前通話時發生了錯誤
參數詳情:
參數 | 類型 | 含義 |
code | AICallErrorCode | 錯誤類型 |
callBegin
通話開始
callEnd
通話結束
agentStateChanged
智能體狀態改變
參數詳情:
參數 | 類型 | 含義 |
state | AICallAgentState | 當前智能體狀態:聆聽中\思考中\講話中 |
speakingVolumeChanged
音量變化通知
參數詳情:
參數 | 類型 | 含義 |
uid | string | 當前講話人的uid,當前用戶為空字符串 |
volume | Int32 | 音量[0-100] |
userSubtitleNotify
用戶提問被智能體識別結果的通知
參數詳情:
參數 | 類型 | 含義 |
subtitle | AICallSubtitleData | 字幕信息 |
agentSubtitleNotify
智能體回答結果通知
參數詳情:
參數 | 類型 | 含義 |
subtitle | AICallSubtitleData | 字幕信息 |
voiceIdChanged
當前通話的音色發生了改變
參數詳情:
參數 | 類型 | 含義 |
voiceId | string | 當前音色Id |
voiceInterruptChanged
當前通話的語音打斷是否啟用
參數詳情:
參數 | 類型 | 含義 |
enable | boolean | 是否啟用 |
humanTakeoverWillStart
真人即將接管當前智能體
參數詳情:
參數 | 類型 | 含義 |
takeoverUid | string | 真人uid |
takeoverMode | number | 1:表示使用真人音色輸出;0:表示使用智能體音色輸出 |
onHumanTakeoverConnected
真人接管已經接通
參數詳情:
參數 | 類型 | 含義 |
takeoverUid | string | 真人uid |