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

Asterisk拨号计划问题:播放随机语音文件后立即挂断通话

解决Asterisk分机随机播放单个语音后挂断的问题

你的拨号计划会连续播放多个语音文件,原因是Asterisk会按优先级顺序自动执行后续步骤——当跳转到某个Playback优先级后,会继续执行下一个优先级的Playback,直到遇到Hangup。要实现播放单个随机语音后立即挂断,需要让每个语音播放流程独立结束,修改方案如下:

修改后的拨号计划(推荐标签式写法,可读性更高)

exten => 123.,7,Goto(sound-${RAND(1,5)})

exten => 123.,n(sound-1),Playback(/var/lib/asterisk/sounds/customer_Menu1)
exten => 123.,n,Hangup()

exten => 123.,n(sound-2),Playback(/var/lib/asterisk/sounds/customer_Menu2)
exten => 123.,n,Hangup()

exten => 123.,n(sound-3),Playback(/var/lib/asterisk/sounds/customer_Menu3)
exten => 123.,n,Hangup()

exten => 123.,n(sound-4),Playback(/var/lib/asterisk/sounds/customer_Menu4)
exten => 123.,n,Hangup()

exten => 123.,n(sound-5),Playback(/var/lib/asterisk/sounds/customer_Menu5)
exten => 123.,n,Hangup()

方案说明

  1. 用Goto(sound-${RAND(1,5)})随机跳转到带标签的语音分支,每个标签对应一个独立的播放+挂断流程
  2. 每个语音播放完成后,立即执行Hangup()终止通话,避免触发后续优先级的操作

另一种基于原优先级的修改方式

如果你想保留原有的优先级结构,可调整为:

exten => 123.,7,Goto(${RAND(8,16)}) 
exten => 123.,8,Playback(/var/lib/asterisk/sounds/customer_Menu1)  
exten => 123.,9,Hangup()
exten => 123.,10,Playback(/var/lib/asterisk/sounds/customer_Menu2) 
exten => 123.,11,Hangup()
exten => 123.,12,Playback(/var/lib/asterisk/sounds/customer_Menu3)
exten => 123.,13,Hangup()
exten => 123.,14,Playback(/var/lib/asterisk/sounds/customer_Menu4) 
exten => 123.,15,Hangup()
exten => 123.,16,Playback(/var/lib/asterisk/sounds/customer_Menu5) 
exten => 123.,17,Hangup()
  • 将Goto的随机范围改为8,16(对应每个语音的起始优先级)
  • 每个Playback优先级后紧跟Hangup(),确保播放完成后立即终止通话

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 01:50:28