Skip to content
广告 · 本站推荐广告

语音通话插件

Voice Call Plugin(语音通话插件)为 OpenClaw Agent 提供实时语音对话能力。用户可通过电话或 WebRTC 与 Agent 进行语音交互。

支持的服务商

服务商协议特性
TwilioPSTN / SIP全球电话网络、录音、IVR
Daily.coWebRTC低延迟、浏览器原生支持

扩展性

插件架构支持自定义 Provider 适配器,可对接其他 VoIP 服务。

安装

bash
openclaw plugins install @openclaw/voice-call

配置

openclaw.config.yaml 中配置语音通话插件:

yaml
plugins:
  - name: '@openclaw/voice-call'
    enabled: true
    config:
      # 服务商选择
      provider: twilio  # 或 daily

      # Twilio 配置
      twilio:
        accountSid: 'AC_YOUR_ACCOUNT_SID'
        authToken: 'YOUR_AUTH_TOKEN'
        phoneNumber: '+1234567890'

      # Daily.co 配置
      daily:
        apiKey: 'YOUR_DAILY_API_KEY'
        roomPrefix: 'openclaw-'

      # 音频设置
      audio:
        sampleRate: 16000
        channels: 1
        codec: 'opus'         # opus | pcmu | pcma
        vadEnabled: true       # Voice Activity Detection(语音活动检测)
        silenceTimeout: 3000   # 静默超时(毫秒)

      # STT/TTS 配置
      stt:
        provider: 'whisper'    # whisper | google | azure
        language: 'zh-CN'
      tts:
        provider: 'openai'     # openai | azure | elevenlabs
        voice: 'alloy'

凭据安全

不要将 accountSidauthToken 等敏感信息直接写入配置文件。请使用环境变量:

yaml
twilio:
  accountSid: ${TWILIO_ACCOUNT_SID}
  authToken: ${TWILIO_AUTH_TOKEN}

通话流程

发起 (Initiate)


连接 (Connect)   ← 建立 WebRTC/PSTN 连接


流式处理 (Stream) ← 实时语音 → STT → Agent → TTS → 语音


结束 (End)       ← 挂断或超时

流式处理详情

  1. 用户语音通过 STT(Speech-to-Text,语音转文字)转为文本
  2. 文本作为消息发送给 Agent
  3. Agent 回复通过 TTS(Text-to-Speech,文字转语音)转为语音
  4. 语音流式传输给用户

通话控制功能

保持与恢复

typescript
// Agent 可在对话中使用工具控制通话
await context.tools.call('voice_hold', {
  holdMusic: 'default'  // 播放等待音乐
})

await context.tools.call('voice_resume')

呼叫转接

typescript
await context.tools.call('voice_transfer', {
  target: '+1987654321',  // 转接目标号码
  announce: true           // 转接前播放提示
})

通话录音

yaml
# 在配置中启用录音
config:
  recording:
    enabled: true
    format: 'wav'
    storePath: './recordings'
    autoTranscribe: true   # 自动生成文字记录

Agent 集成

AGENTS.md 中启用语音工具:

markdown
## Tools
- voice_hold: allow
- voice_resume: allow
- voice_transfer: ask     # 转接需用户确认
- voice_hangup: ask       # 挂断需用户确认

## Instructions
当用户请求转接人工客服时,使用 voice_transfer 工具。
通话结束后生成通话摘要。

事件监听

typescript
gateway.on('voice:call:start', (event) => {
  console.log(`通话开始: ${event.callId}`)
})

gateway.on('voice:call:end', (event) => {
  console.log(`通话结束: 时长 ${event.duration}s`)
})

🇨🇳 中国用户须知

  • 国内语音通话建议使用阿里云语音服务腾讯云实时音视频(TRTC)
  • STT 推荐使用讯飞语音识别百度语音,中文识别率更高
  • TTS 推荐使用讯飞语音合成,支持多种中文音色
  • 国内电话号码接入需要完成 ICP 备案和电信增值业务许可
  • 配置 stt.languagezh-CN 以获得最佳中文识别效果

基于MIT协议开源 | 内容翻译自 官方文档,同步更新