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

如何在Dialogflow CX与Voximplant机器人中播放打字音效替代拨号音?

在Dialogflow CX + Voximplant机器人中实现等待时的打字音效播放

准备工作

  • 制作或下载一段短时长的循环打字音效文件(推荐WAV/MP3格式),上传到Voximplant控制台的媒体库中,记录好文件名称(例如typing-loop.wav)。

1. Voximplant端核心逻辑实现

在Voximplant的应用场景脚本中,通过以下步骤控制音效播放:

  • 关闭默认拨号音:用户接入通话时,禁用系统默认拨号音,避免和打字音效冲突
VoxEngine.addEventListener(AppEvents.CallAlerting, (e) => {
  // 启动早媒体,关闭默认拨号音
  e.call.startEarlyMedia();
});
  • 触发打字音效:当需要向Dialogflow CX发送请求(比如用户说完话后),立即启动循环播放打字音效
let typingPlayer; // 保存音效播放器实例,方便后续停止

// 监听用户语音输入结束事件
userCall.addEventListener(CallEvents.SpeechRecognitionResult, (e) => {
  // 启动打字音效循环播放
  typingPlayer = userCall.startPlayback('typing-loop.wav', { loop: true });
  // 将识别结果发送给Dialogflow CX处理
  dialogflowCX.query(e.text);
});
  • 停止音效并播放回复:收到Dialogflow CX的回复后,立即停止打字音效,转而播放机器人回复
dialogflowCX.addEventListener(DialogflowCXEvents.Response, (e) => {
  // 停止打字音效
  if (typingPlayer) {
    typingPlayer.stop();
    typingPlayer = null;
  }
  // 播放Dialogflow CX返回的回复内容
  userCall.say(e.responseText, { language: 'zh-CN' });
});

2. Dialogflow CX侧的配合优化

如果你的机器人使用Webhook处理复杂业务逻辑(比如调用外部接口),可以在Webhook的不同阶段给Voximplant发送信号:

  • Webhook开始执行时,通知Voximplant启动打字音效;
  • Webhook处理完成返回结果时,通知Voximplant停止音效并播放回复。

3. 异常场景处理

避免因Dialogflow CX超时或错误导致音效一直播放,添加异常监听:

dialogflowCX.addEventListener(DialogflowCXEvents.Error, (e) => {
  if (typingPlayer) {
    typingPlayer.stop();
  }
  userCall.say('抱歉,当前系统暂时无法响应,请稍后再试');
});

// 监听Dialogflow CX超时事件
dialogflowCX.addEventListener(DialogflowCXEvents.Timeout, () => {
  if (typingPlayer) {
    typingPlayer.stop();
  }
  userCall.say('请求超时,请您再重复一遍问题');
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 06:02:07