通過閱讀本文,您可以瞭解如何通過AICallKit SDK打斷智能體講話。
使用說明
本樣本主要旨在協助您在不含UI整合的情況下,如何利用API實現該功能。
您需要提前整合AICallkit SDK。如何整合,請參見Android整合概覽、iOS整合概覽、Web整合概覽。
說明
該功能以及UI介面均在含UI整合方案中內建。含UI整合方案詳情,請參見含UI整合方案。
實現打斷智能體功能
目前有三種方式打斷智能體講話,智能打斷、手動打斷以及設定特定詞打斷。
語義斷句
服務端配置
通過服務端啟動智能體時,您需要在調用StartAIAgentInstance - 啟動智能體執行個體或產生AI智能體通話執行個體介面時,對AIAgentConfig中的Mode和SemanticWaitDuration參數進行配置。
用戶端配置
通過用戶端啟動智能體時,您需要對ARTCAICallAgentConfig中的ARTCAICallAgentTurnDetectionConfig進行配置,配置Mode和SemanticWaitDuration參數。
手動打斷
手動打斷是向正在說話的智能體發送一個打斷指令,智能體收到指令後,停止當前問題的回答。在AICallKit SDK中,直接調用interruptSpeaking方法即可。
智能打斷
智能打斷是通過語音打斷智能體講話,例如智能體在回答問題A,終端使用者再次詢問問題B,智能體會中斷問題A的回答,開始回答問題B。在AICallKit SDK中,直接調用enableVoiceInterrupt進行開啟或關閉操作。當智能體智能打斷開關發生變化時,會通過onVoiceInterrupted回調出來,最終的開關以回調為準。
範例程式碼
Android
// 預設情況下是開啟智能打斷的,傳入false關閉智能體打斷
mARTCAICallEngine.enableVoiceInterrupt(false);
// 手動打斷智能體說話
mARTCAICallEngine.interruptSpeaking();
// 回調處理(僅樣本相關的回調操作)
ARTCAICallEngine.IARTCAICallEngineCallback mCallEngineCallbackWrapper = new ARTCAICallEngine.IARTCAICallEngineCallback() {
@Override
public void onVoiceInterrupted(boolean enable) {
// 當前通話的語音打斷是否啟用回調
// 最終是否開啟/關閉,以該回調為準
}
}iOS
// 預設情況下是開啟智能打斷的,傳入false關閉智能體打斷
_ = self.engine.enableVoiceInterrupt(enable: false)
// 手動打斷智能體說話
_ = self.engine.interruptSpeaking()
func onVoiceInterrupted(enable: Bool) {
// 當前通話的語音打斷是否啟用回調
// 最終是否開啟/關閉,以該回調為準
}
Web
// 預設情況下是開啟智能打斷的,傳入false關閉智能體打斷
engine.enableVoiceInterrupt(false);
// 手動打斷智能體說話
engine.interruptSpeaking();
engine.on('voiceInterruptChanged', (ennable) => {
// 當前通話的語音打斷是否啟用回調
// 最終是否開啟/關閉,以該回調為準
console.log('AICallVoiceInterruptChanged', ennable);
});特定詞打斷
特定詞打斷是在通話過程中一旦識別到特定詞,就觸發打斷指令。打斷詞通常需要在啟動智能體時進行配置。
範例程式碼
Android
// 1、通過設定打斷詞來啟動AI通話,在啟動通話時,設定interruptWords參數
ARTCAICallEngine.ARTCAICallConfig artcaiCallConfig = new ARTCAICallEngine.ARTCAICallConfig();
artcaiCallConfig.agentConfig.interruptConfig.interruptWords.add("打斷一下");
artcaiCallConfig.agentConfig.interruptConfig.interruptWords.add("測試打斷");
//省略發起通話流程
......
// 2、當觸發特定詞打斷時,觸發通話引擎的onSpeakingInterrupted回調,回調原因為byWords
@Override
public void onSpeakingInterrupted(ARTCAICallEngine.ARTCAICallSpeakingInterruptedReason reason) {
//原因是ARTCAICallSpeakingInterruptedReason.ByWorks
}iOS
// 1、通過設定打斷詞來啟動AI通話,在啟動通話時,設定interruptWords參數
let agentConfig = ARTCAICallAgentConfig() // 建立ARTCAICallAgentConfig對象
agentConfig.interruptConfig.interruptWords = ["打斷一下", "xxxx"]
//省略發起通話流程
......
// 2、當觸發特定詞打斷時,觸發通話引擎的onSpeakingInterrupted回調,回調原因為byWords
public func onSpeakingInterrupted(reason: ARTCAICallSpeakingInterruptedReason) {
}Web
// 1、通過設定打斷詞來啟動AI通話,在啟動通話時,設定interruptWords參數
const agentConfig = new AICallAgentConfig(); // 建立ARTCAICallAgentConfig對象
agentConfig.interruptConfig.interruptWords = ['打斷一下', 'xxxx'];
//省略發起通話流程
......
// 2、當觸發特定詞打斷時,觸發通話引擎的onSpeakingInterrupted回調,回調原因為byWords
engine.on('speakingInterrupted', (reason) => {
});