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

Asterisk 13在Debian 9下无法播放音频问题求助

Asterisk 13无法播放音频文件的排查与解决

首先得指出你这里最明显的问题——Read命令的用法完全不符合语法规范,这大概率是导致音频无法播放、用户直接断开的核心原因!

核心问题:Read命令参数错误

Asterisk的Read命令第一个参数必须是用来存储用户输入的变量名,而不是音频文件路径!你现在把音频路径放在第一个参数的位置,Asterisk根本无法识别,直接导致流程异常,触发用户断开。

修正后的extensions.conf示例

[ivr1]
exten => s,1,NoOp(IVR1)
same => n,Answer()
; 正确语法:Read(存储输入的变量名, 音频文件路径, 输入长度, 超时时间)
; 注:Asterisk默认会在/var/lib/asterisk/sounds/目录下查找,所以可以省略前缀,直接写custom/welcome
same => n,Read(USER_INPUT, custom/welcome, 4, 5)
same => n,WaitExten(5)
exten => 6598,1,Goto(ivr1,s,1)

其他可能的排查方向

如果修正语法后还是有问题,可以逐一检查以下几点:

1. 音频文件权限问题

确保音频文件属于asterisk用户/组,且权限正确:

# 修改文件所属
chown asterisk:asterisk /var/lib/asterisk/sounds/custom/welcome.*
# 设置正确权限
chmod 644 /var/lib/asterisk/sounds/custom/welcome.*

2. 音频格式不兼容

Asterisk对音频格式有严格要求,推荐使用8kHz采样率、单声道、PCMU/PCMA编码的WAV文件。你可以用file命令检查文件格式:

file /var/lib/asterisk/sounds/custom/welcome.wav

如果格式不对,用sox转换:

sox 你的原始音频文件.mp3 -r 8000 -c 1 -u -b 16 /var/lib/asterisk/sounds/custom/welcome.wav

3. SIP编码协商问题

确认你的SIP客户端和Asterisk的编码配置匹配:

  • 在/etc/asterisk/sip.conf中确保允许常用编码:
    allow=ulaw,alaw
    
  • 在SIP客户端中选择对应的编码(比如PCMU/ULaw),避免使用Asterisk不支持的编码。

4. 查看详细日志排查

启用Asterisk的详细日志,获取更多错误信息:
在Asterisk命令行中执行:

core set verbose 10
core set debug 10

然后再次测试调用,查看日志中是否有“文件不存在”“格式不支持”之类的错误提示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:24:17