更新记录

1.0.0(2026-05-27) 下载此版本

基于 百度 RTC AI Agent Android SDK 封装


平台兼容性

uni-app(5.07)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
- - - - - - - -
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟
- - - - - - - - - - - -

uts-baidu-rtc-agent

百度 BRTCAgent AI 大模型实时互动 UTS 插件,在 uni-app 中实现 AI 智能体实时语音/文字互动。 基于 百度 RTC AI Agent Android SDK 封装,在 uni-app 中实现 AI 大模型实时语音/文字聊天

安装

  1. uts-baidu-rtc-agent 目录放入 uni-app 项目的 uni_modules/ 下。
  2. 在 HBuilderX 中「制作自定义调试基座」(或云打包)。
  3. 在页面中通过 ES 模块语法引入:
import * as plugin from "@/uni_modules/uts-baidu-rtc-agent";

注意:UTS 插件不能使用 uni.requireNativePlugin() 加载,必须使用 import 语法。

权限

插件需要麦克风权限,在 AndroidManifest.xml 中需声明:

<uses-permission android:name="android.permission.RECORD_AUDIO" />

首次连接时需在代码中动态申请权限:

plus.android.requestPermissions(
  ['android.permission.RECORD_AUDIO'],
  function(res) {
    if (res.granted.length > 0) {
      // 开始连接
    }
  },
  function() {
    uni.showToast({ title: '请授权麦克风权限', icon: 'none' })
  }
)

快速开始

import * as plugin from "@/uni_modules/uts-baidu-rtc-agent";

export default {
  data() {
    return {
      sdkVersion: ''
    }
  },
  mounted() {
    // 获取 SDK 版本(无需初始化)
    this.sdkVersion = plugin.getSDKVersion()
  },
  methods: {
    // 一键连接 AI 智能体
    connect() {
      // 1. 先注册事件回调
      plugin.setEventCallback((eventName, jsonData) => {
        const data = JSON.parse(jsonData)
        switch (eventName) {
          case 'onCallStateChange':
            // data.state: 1=通话开始, 2=通话结束
            break
          case 'onAIAgentSubtitle':
            // data.text, data.isFinal — AI 流式回复文字
            break
          case 'onError':
            console.error(data.error, data.msg)
            break
        }
      })

      // 2. 一键启动(自动创建 Agent + 初始化 SDK + 发起通话)
      plugin.quickStart(
        'your_app_id',     // appId
        '',                 // userId(可选)
        '',                 // licenseKey(可选)
        JSON.stringify({    // Agent 配置
          lang: 'zh',
          role: '智能助手',
          tts_sayhi: '你好,有什么可以帮你?',
          host: 'https://ai.agent.kaywang.cn'
        })
      )
    },

    // 发送文字
    sendText(text) {
      plugin.sendText(text)
    },

    // 挂断
    hangup() {
      plugin.stopAgent('your_app_id', '', 'https://ai.agent.kaywang.cn', '')
      plugin.hangup()
      plugin.destroy()
    }
  }
}

API 参考

基础 API

方法 说明
getSDKVersion() 返回 SDK 版本号,无需初始化即可调用
setEventCallback(callback) 注册事件回调(必须最先调用)
initAgent(appId, contextJson, userId, licenseKey, verbose) 初始化 Agent
callAgent(token, instanceId) 发起通话
hangup() 挂断通话
destroy() 销毁引擎,释放所有资源

交互 API

方法 说明
sendText(text) 发送文本消息给大模型
sendTextAndInterrupt(text) 发送文本并立即打断当前播报
interrupt() 打断当前 AI 播报
sendFunctionCallResult(id, result) 返回 Function Call 执行结果
sendCommand(cmd) 发送自定义命令(如 [PAUSE][RESUME]

音频控制 API

方法 说明
muteMic(isMute) 麦克风静音 / 取消静音
mutePlayback(isMute) 扬声器静音 / 取消静音
switchToSpeaker(speaker) 切换听筒 / 扬声器播放

高级 API

方法 说明
updateSystemPrompt(modelType, prompt) 更新 System Prompt
uploadFile(scenario, path, expire) 上传文件(图片等),scenario: 0=视觉理解, 1=图片编辑
startAgent(appId, userId, licenseKey, configJson, host, startPath) HTTP 创建 Agent + 初始化 + 发起通话
stopAgent(appId, instanceId, host, stopPath) HTTP 停止 Agent 实例
quickStart(appId, userId, licenseKey, configJson) 一键启动(最简方式)

getSDKVersion()

const ver = plugin.getSDKVersion()  // 如 "3.5.0.4a"

setEventCallback(callback)

注册全局事件回调,必须在调用 initAgentquickStart 之前调用。

plugin.setEventCallback((eventName, jsonData) => {
  const data = JSON.parse(jsonData)
  // 处理各事件
})

回调参数:

  • eventName: string — 事件名称
  • jsonData: string — JSON 字符串,需 JSON.parse 解析

initAgent(appId, contextJson, userId, licenseKey, verbose)

初始化 Agent SDK。contextJson 需从后端获取。

plugin.initAgent(
  'your_app_id',          // appId
  '{"cid":1,"token":"xxx"}', // contextJson(后端返回)
  'user_001',              // userId(可选,传 "")
  '',                      // licenseKey(可选,传 "")
  true                     // verbose 调试日志
)

callAgent(token, instanceId)

发起通话前需先调用 initAgent

plugin.callAgent('your_token', '1')

quickStart(appId, userId, licenseKey, configJson)

一键启动:自动完成 HTTP 创建 Agent → 初始化 SDK → 发起通话。

plugin.quickStart(
  'your_app_id',
  '',
  '',
  JSON.stringify({
    lang: 'zh',            // 语言
    role: '智能助手',       // 角色描述
    tts_sayhi: '你好!',    // 首次问候语
    sense: '',             // 场景角色(可选)
    llm: '',               // 大模型(可选)
    audiocodec: '',        // 音频编码(可选)
    host: 'https://ai.agent.kaywang.cn'  // 后端地址(可选)
  })
)

configJson 支持的字段:

字段 类型 必填 说明
lang string 语种,如 "zh"
role string 角色描述,如 "智能助手"
tts_sayhi string 首次通话的问候语
sense string 场景角色
llm string 指定大模型
audiocodec string 音频编码格式
host string 后端 API 地址,默认 "https://ai.agent.kaywang.cn"

其他 API

// 发送文字
plugin.sendText('[T]:你好')

// 发送文字并打断当前播报
plugin.sendTextAndInterrupt('停下来')

// 打断 AI 播报
plugin.interrupt()

// 麦克风静音
plugin.muteMic(true)   // 静音
plugin.muteMic(false)  // 取消静音

// 扬声器静音
plugin.mutePlayback(true)
plugin.mutePlayback(false)

// 切换听筒 / 扬声器
plugin.switchToSpeaker(true)  // 扬声器
plugin.switchToSpeaker(false) // 听筒

// 返回 Function Call 结果
plugin.sendFunctionCallResult('call_id', '{"result":"ok"}')

// 发送自定义命令
plugin.sendCommand('[PAUSE]')
plugin.sendCommand('[RESUME]')

// 更新 System Prompt
plugin.updateSystemPrompt(0, '你现在是一个数学老师')

// 上传文件
plugin.uploadFile(0, '/sdcard/photo.jpg', 180)

// HTTP 停止 Agent
plugin.stopAgent('your_app_id', '1', 'https://ai.agent.kaywang.cn', '')

// 释放所有资源
plugin.hangup()
plugin.destroy()

事件回调参考

回调函数会收到两个参数:eventName(事件名)和 jsonData(JSON 字符串)。需要 JSON.parse(jsonData) 后使用。

事件 数据字段 说明
onCallStateChange state: number 1=通话开始, 2=通话结束
onConnectionStateChange state: number 1=连接中, 2=已连接, 3=重连中, 4=断开
onError error: number, msg: string 错误回调
onUserAsrSubtitle text, isFinal, speakerName?, similarity?, emotion? 用户语音识别结果(流式)
onAIAgentSubtitle text, isFinal AI 回复文本(流式)
onAIAgentAudioStateChange state: number AI 语音状态变化
onUserAudioStateChange state: number 用户语音状态变化
onAIAgentAudioLevel level: number AI 音量级别(100ms 回调,频率高)
onUserAudioLevel level: number 用户音量级别(100ms 回调,频率高)
onFunctionCall id, funcName, params 大模型触发 Function Call
onUploadFileStatus code, msg 文件上传结果
onLicenseStatus code, msg 鉴权结果(0=成功)
onAgentIntent type: string 意图回调
onMediaGenerateStart taskId, query 媒体生成开始
onMediaGenerateCompleted taskId, type, error, resList, msgRes 媒体生成完成
onRecvTagMessage msg, isFinal 标签消息
onAgentCreated token, instanceId, context Agent 实例创建成功

完整示例

参见 pages/chat/chat.vue

License

百度 BRTCAgent SDK,需要有效的 License Key。请联系百度获取授权。

隐私、权限声明

1. 本插件需要申请的系统权限列表:

插件需要麦克风权限,在 `AndroidManifest.xml` 中需声明: ```xml <uses-permission android:name="android.permission.RECORD_AUDIO" /> ```

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件使用的[百度 RTC AI Agent Android SDK]会采集数据,详情可参考:https://cloud.baidu.com/doc/RTC/s/Vm8y4wvj2)

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

暂无用户评论。