我正在 asterisk 中设置 IVR。它工作正常,但我安装了一些新硬件,声音就消失了。我可以在控制台中看到这一点:
Feb 22 22:24:00 DEBUG[10555]: pbx.c:1697 pbx_extension_helper: Launching 'Set'
-- Executing Set("SIP/208.77.200.13-08b174f8", "__IVR_RETVM=") in new stack
Feb 22 22:24:00 DEBUG[10555]: pbx.c:1609 pbx_substitute_variables_helper_full: Expression result is '1'
Feb 22 22:24:00 DEBUG[10555]: pbx.c:1697 pbx_extension_helper: Launching 'ExecIf'
-- Executing ExecIf("SIP/208.77.200.13-08b174f8", "1|Background|custom/Sales") in new stack
Feb 22 22:24:00 DEBUG[10555]: channel.c:2432 set_format: Set channel SIP/208.77.200.13-08b174f8 to write format slin
Feb 22 22:24:00 DEBUG[10555]: rtp.c:1372 ast_rtp_write: Ooh, format changed from unknown to ulaw
Feb 22 22:24:00 DEBUG[10555]: channel.c:1777 ast_settimeout: Scheduling timer at 160 sample intervals
-- Playing 'custom/Sales' (language 'en')
我不知道为什么我听不到声音,尽管它显示“正在播放”。文件 (custom/Sales.wav) 存在,权限正确,所有权正确,编解码器 ulaw 和 slin 在 sip.conf 中被允许。
有人能给出一些关于如何调试这个东西的提示吗?(顺便说一句,我正在使用 FreePBX 来配置 IVR)。
谢谢。
答案1
了解安装了哪些新硬件也很有用。
如果您听不到任何声音,最基本的调试工具是设置一个 [默认] 上下文来接听电话并播放默认的 Asterisk 声音文件之一。
[default]
exten => s,1,Wait(0.5) ; wait half a second for things to settle
exten => s,n,Answer() ; pick up
exten => s,n,Playback(hello-world) ; play the hello-world.gsm sample
exten => s,n,Hangup() ; bye now!
如果您的 SIP 电话达到默认上下文,那么任何来电都会播放“Hello World”示例声音。
这至少会告诉您 SIP 电话是否能够在服务器上注册并拨打 SIP 电话,并告诉您您的拨号计划是否可以被访问。
答案2
需要检查的一个小问题是:从 asterisk CLI(使用 asterisk -r 运行)中,在播放录音时执行“sip show channels”以确认问题频道上使用的编解码器是否符合预期。在我的系统中,我还发现了带有 .WAV 和 .wav 扩展名的重复录音,每个录音都使用特定的编解码器。当我遇到类似问题时,我发现录音是使用与当前使用的编解码器不同的编解码器创建的。(即从通过 g729 连接的手机录制,然后使用 ulaw 复制到系统。)