2013-03-22 69 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