打断智能体讲话

智能体在讲话时,您可以通过智能打断或者手动打断两种方式打断智能体说话。通过阅读本文,您可以了解如何实现智能体讲话打断功能。

介绍

目前有两种方式打断智能体讲话,智能打断和手动打断:

  • 智能打断是通过语音打断智能体讲话,例如智能体在回答问题A,终端用户再次询问问题B时,智能体会中断问题A的回答,开始问题B的回答。

  • 手动打断是向正在说话的智能体发送一个打断指令,智能体收到指令后,停止当前问题的回答。

说明

智能打断是通过语音驱动,手动打断需要发送打断消息。智能打断默认开启,可以调用更新RTC互动AI智能体实例接口进行开启或关闭。

发送打断信息

打断信息通过RTC自定义消息通道进行发送,您需要先开通实时音视频应用,以及打开RTC自定义消息通道设置。更多信息,请参见快速开始实时音视频自定义消息发送和接收

打断消息中需要含有以下字段:

字段名称

描述

type

消息类型

senderId

发送消息的UserId

receiverId

接收的智能体Id

打断信息如下:

{
  "type": 1101,
  "senderId": "user_1",    // 发送人id
  "receiverId": "robot_1"  // 智能体Id
}

IOS

终端RTC SDK通过自定义消息通道发送打断智能体讲话指令的示例代码如下:

var sendDict: [String: Any] = [
    "type": 1101,
]
sendDict.updateValue(myUid, forKey: "senderId")
sendDict.updateValue(robotUid, forKey: "receiverId")

if let sendData = sendDict.aicall_jsonString.data(using: .utf8) {
    let rtcMsg = AliRtcDataChannelMsg()
    rtcMsg.type = .custom
    rtcMsg.data = sendData
    self.rtcEngine.sendDataChannelMessage(rtcMsg)
}

Android

终端RTC SDK通过自定义消息通道发送打断智能体讲话指令的示例代码如下:

int msgType = 1101;
// 用户入会之后的userId
String senderId = "myRtcUserId";
// 机器人入会之后的userId
String receiverId = "robotRtcUserId";

if (null != mAliRtcEngine) {
    try {
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("type", msgType);
        jsonObject.put("senderId", senderId);
        jsonObject.put("receiverId", receiverId);
        AliRtcEngine.AliRtcDataChannelMsg rtcDataChannelMsg = new AliRtcEngine.AliRtcDataChannelMsg();
        rtcDataChannelMsg.type = AliEngineDataMsgCustom;
        rtcDataChannelMsg.data = jsonObject.toString().getBytes(StandardCharsets.UTF_8);
        mAliRtcEngine.sendDataChannelMsg(rtcDataChannelMsg);
    } catch (JSONException ex) {
        ex.printStackTrace();
    }
}