通过阅读本文,您可以了解如何通过AICallKit SDK打断智能体讲话。
使用说明
本示例主要旨在帮助您在不含UI集成的情况下,如何利用API实现该功能。
您需要提前集成AICallkit SDK。如何集成,请参见Android集成SDK、iOS集成SDK、Web集成SDK。
打断智能体效果预览
手动打断 向正在说话的智能体发送一个打断指令。 | 智能打断 支持语音打断正在讲话的智能体。 |
说明
该功能以及UI界面均在含UI集成方案中内置。含UI集成方案详情,请参见含UI集成方案。
实现打断智能体功能
目前有两种方式打断智能体讲话,智能打断、手动打断以及设置特定词打断。
手动打断
手动打断是向正在说话的智能体发送一个打断指令,智能体收到指令后,停止当前问题的回答。在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通话
//创建ARTCAICallConfig,配置ARTCAICallAgentTemplateConfig
ARTCAICallEngine.ARTCAICallConfig artcaiCallConfig = new ARTCAICallEngine.ARTCAICallConfig();
artcaiCallConfig.mAiCallAgentTemplateConfig.interruptWords.add("打断一下");
artcaiCallConfig.mAiCallAgentTemplateConfig.interruptWords.add("测试打断");
//省略发起通话流程
// 2、当触发特定词打断时,除非通话引擎的onSpeakingInterrupted回调,回调原因为byWords
@Override
public void onSpeakingInterrupted(ARTCAICallEngine.ARTCAICallSpeakingInterruptedReason reason) {
//原因是ARTCAICallSpeakingInterruptedReason.ByWorks
}
iOS
// 1、如何通过设定打断词来启动AI通话
// 创建ARTCAICallTemplateConfig对象,设置interruptWords参数,
let templateConfig = ARTCAICallTemplateConfig()
templateConfig.interruptWords = ["打断一下", "xxxx"]
// 如果使用含UI集成,在启动通话时,设置config.templateConfig
let controller = AUIAICallStandardController(userId: userId)
controller.config.templateConfig = templateConfig
...
// 如果不含UI集成,则把templateConfig转化为json string后作为启动AI通话(StartAIAgentInstance或GenerateAIAgentCall)的请求参数
let jsonString = templateConfig.getJsonString(agentType)
...
// 2、当触发特定词打断时,除非通话引擎的onSpeakingInterrupted回调,回调原因为byWords
public func onSpeakingInterrupted(reason: ARTCAICallSpeakingInterruptedReason) {
}
该文章对您有帮助吗?