1

.call ファイル内の複数のサウンド ファイル (.wav) の再生に問題があります。変数でたくさんのサウンドファイルを渡します (SetVar: Sound=custom/1_Messages0201&custom/20c&...) 問題は文字列のサイズです。サイズが 240 文字未満の場合、すべてのサウンド ファイルが正しく再生されます。240 文字目以降のすべてのファイルがトリミングされ、エラーが表示される

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

ダイヤル文字列の長さの制限について読んでいました

注: Asterisk 1.2 までは、Dial 文字列の長さは約 240 文字を超えることはできません (超える文字は切り捨てられます)。この制限は、コンパイル オプションで LOW_MEMORY を設定していない限り、Asterisk 1.4 で削除されました。

この制限を取り除く方法、またはダイヤル文字列のサイズを大きくする方法はありますか? 誰かが私に他のより良いアイデアを提案できるかもしれません。

アスタリスク バージョン:

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
4

2 に答える 2

2

呼び出しファイルが起動した後、ダイヤルプランでも同じ問題が発生します(制限もあります)。再生アプリケーションは、多くの異なるファイルを再生するようには設計されていません。それを行う必要がある場合は、ダイヤルプランでそれを行う必要があります。

次のように送信できます。

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

その後、アスタリスクのダイヤルプランを使用して、ファイルを 1 つずつ再生します。たとえば、次のようにします。

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 などのオープンソースのダイヤラ コードを確認するか、専門家を雇うことをお勧めします。

于 2013-03-22T19:09:05.253 に答える
0

この問題に対する私の解決策は、「キャンペーン」呼び出し変数を設定し、DB でさまざまな「キャンペーン」を定義することです。次に、ダイヤル プランで DB ルックアップを使用して、サウンド ファイルのリストを取得します。DBGet Ruby スクリプトが 2 つの値を返すようにしました。「その他のファイル」フラグと最大 10 個のサウンド ファイルのリスト。DBGet をループし、"more files" フラグが true である限り、一連のファイルを顧客に再生し続けます。

それは魅力のように機能します。そして、呼び出しファイルを読みやすくします。

于 2013-03-25T14:22:33.203 に答える