2013-03-22 57 views
0

我在.call文件中播放多个声音文件(.wav)时遇到问题。 我在变量中传递了很多声音文件(SetVar:Sound = custom/1_Messages0201 & custom/20c & ...) 问题是字符串大小。当尺寸小于240个字符时,所有声音文件均可正常播放。 240个字符之后的所有文件都被修剪,并出现错误星号 - 在.call文件中播放多个声音文件的最佳做法

pbx_spool.c: Syntax error at line 10 of /var/spool/asterisk/outgoing/333.call 

我读了限制拨号串lenght

注:截至并包括Asterisk的1.2拨号字符串的长度不能超过约240个字符(任何超出的字符将被截断)。除非您在编译选项中设置了LOW_MEMORY,否则Asterisk 1.4中删除了此限制。

是否有任何方法可以删除此限制或增加拨号字符串大小。 也许任何人都可以建议我任何其他更好的主意。

Asterisk的版本:

Asterisk 11.2.1 built by root @ ip-XX-XXX-XXX-XXX on a x86_64 running Linux 

拨号方案:

exten => 123,1,AGI(monitor.php,outgoing,Outgoing_UNLIMITED,${CALLERID(num)},${EXTEN},Set(CALLERID (num)=XXXXXXXXX)) 
exten => 123,1,Dial(SIP/6845987568/${EXTEN:0},30,T) 
exten => 123,2,Set(CDR(userfield)=${NumberDialed}) 
exten => 123,3,Playback(${Sound}) 

呼叫文件:

Channel: SIP/XXXXX/XXXXXX 
CallerID: XXXXXXX 
MaxRetries: 2 
RetryTime: 15 
Context: XXXXXX 
Extension: 123 
Priority: 1 
Account: XXXXXX 
SetVar: Sound=custom/1_Messages0201&custom/20c&custom/i&custom/1om&custom/March&custom/2c&custom/hiliadi&custom/i&custom/13of&custom/godina&custom/1_Messages0202&custom/3c&custom/3c&custom/3c&custom/3c&custom/3c&custom/3c&custom/3c&custom/3c&custom/1_Messages0203&custom/200c&custom/50c&custom/i&custom/6c&custom/leva&custom/i&custom/70c&custom/i&custom/8c&custom/stotinki&custom/1_Messages0204 
SetVar: NumberDialed=XXXXXXXX 

回答

2

调用文件火灾发生后,你也会有同样的问题,在您的拨号方案(也有限制)。回放应用程序不适用于播放大量不同的文件。如果你需要这样做,你可以通过dialplan来完成。

您可以像这样把它:

Setvar: file_max=2 
Setvar: file1=custom/1_message 
Setvar: file2=custom/2_message 

在使用Asterisk的拨号规则后,一个接一个播放文件。例如像这样:

exten => 123,3,Set(i=0); 
exten => 123,n(loop),Set(i=$[ ${i} + 1 ]) 
exten => 123,n,GotoIF($[ $i > ${file_max} ]?exit) 
exten => 123,n,Playback(${file${i}}) 
exten => 123,n,Goto(loop) 
exten => 123,n(exit),Noop(end) 

注意,会有很多其他问题这一任务,我建议你检查的开源代码拨号像vicidial或聘请专家。

+0

我会尽力,谢谢 – 2013-03-23 05:25:49

0

我对这个问题的解决方案是设置一个“活动”调用变量,然后定义数据库中的各种“活动”。然后,我使用拨号计划中的数据库查找声音文件列表。我有我的DBGet Ruby脚本返回两个值;一个“更多文件”标志和一个最多10个声音文件的列表。我循环DBGet,只要“更多文件”标志为真,就继续向客户播放文件组。

它就像一个魅力。并保持通话文件 - 很容易阅读。

+0

谢谢你的回答。我们计划执行数百个包含大量声音文件的通话文件。我认为,连接到数据库可以延迟.call文件的执行 – 2013-03-27 09:39:29

+0

因此,请在您的PBX上保留数据库的本地副本。这几乎是立即查找。现代多核PBX服务器的敌人正在对呼叫进行转码,而不是本地主机网络IO。 – MichelV69 2013-03-27 14:54:48