Twilio函数仅播放等待音乐不拨号问题求助
问题分析与解决方案
你的代码核心问题在于使用了enqueue指令——这个指令会把当前呼叫直接放入指定队列,后续的dial指令根本不会被执行,导致拨号操作完全触发不了,只会停留在队列里播放等待音乐。
要实现先播放指定语音消息,再在拨号等待时播放音乐的需求,调整逻辑即可:
- 先执行
play播放预设的语音消息 - 创建
dial指令时,通过waitUrl参数指定等待音乐资源,主叫方在等待被叫接听的过程中会自动播放该音乐 - 删掉多余的
enqueue和dial.queue代码,你不需要把呼叫放进队列,直接发起拨号就行
修改后的代码如下:
exports.handler = function (context, event, callback) { const twiml = new Twilio.twiml.VoiceResponse(); // 先播放指定语音消息 twiml.play('https://cornsilk-porpoise-7226.twil.io/assets/speech_20231208002827353.mp3'); // 创建dial并设置waitUrl,拨号等待时播放音乐 const dial = twiml.dial({ waitUrl: 'http://twimlets.com/holdmusic?Bucket=com.twilio.music.ambient' }); // 添加要拨打的号码 dial.number('+16468600135'); dial.number('+923405998592'); callback(null, twiml); };
关键说明
dial的waitUrl参数:当拨打多个号码时,主叫方会在等待第一个接听的过程中持续播放waitUrl中的音乐- 移除
enqueue是核心:这个指令会终止后续Twiml的执行逻辑,也是之前拨号失败的根本原因
内容的提问来源于stack exchange,提问作者MK Solutions J
相关产品推荐
相关产品推荐

