You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Voximplant脚本中中断音频播放?含ChatGPT集成场景

中断Voximplant中ChatGPT实时播报的解决方案

针对集成ChatGPT与Voximplant场景下无法中断长文本播报的问题,可通过以下几种技术方案实现实时中断:

1. 基于Voximplant通话事件监听中断

利用Voximplant的通话会话(CallSession)API,监听用户的DTMF按键操作(比如预设*键为中断触发键),触发后直接停止当前音频播放:

// 在Voximplant云函数中监听DTMF事件
callSession.on('dtmf', (event) => {
  // 以*键作为中断触发信号
  if (event.dtmf === '*') {
    // 终止当前播报的音频流
    callSession.stopPlayback();
    // 执行后续处理逻辑,比如引导用户下一步操作
    callSession.say('播报已停止,您可以继续提出需求');
  }
});

2. 流式控制ChatGPT响应推送

避免让ChatGPT一次性生成完整长文本,改用流式输出模式。在Voximplant端设置中断标记,一旦收到用户中断指令,立即停止接收ChatGPT的后续流式内容并终止播报:

let isInterrupted = false;

// 监听中断触发(比如按键)
callSession.on('dtmf', (event) => {
  if (event.dtmf === '*') {
    isInterrupted = true;
  }
});

// 流式调用ChatGPT并推送TTS
async function streamChatGPTResponse(prompt) {
  const stream = await chatGPTAPI.stream(prompt);
  for await (const chunk of stream) {
    if (isInterrupted) break;
    // 将Chunk文本转为音频推送到通话中
    await callSession.say(chunk.text);
  }
}

3. 远程调用Voximplant Call Control API中断

如果需要从外部系统触发中断,可调用Voximplant的StopCallPlayback接口,通过通话ID终止指定通话的音频播放:

POST https://api.voximplant.com/platform_api/StopCallPlayback/
{
  "account_id": "你的账号ID",
  "api_key": "你的API密钥",
  "call_id": "当前活跃通话ID"
}

以上方案的核心是在通话流程中预留中断触发机制,通过主动控制音频播放或ChatGPT响应流来实现无需等待播报结束的实时中断。

内容的提问来源于stack exchange,提问作者Ugeen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 03:12:05