此任務在當前星號中不可行。 在您的撥號方案中,它無法與beacuase *匹配(點)。
除了像這樣的撥號方案(非常難看一個beacuase它會去撥號方案爲每一個新的數字)
[originalcontext]
exten => *,1,Goto(collect_number,s,1)
[collect_number]
exten => s,1,WaitExten(); wait for single digit
exten => *,1,Set(stars=${stars}*);save stars
exten => *,2,GotoIF($[ "${stars}" == "**" ]?dial,1); if 2 star already,go dial.
exten =>_X,1,Set(digits=${digits}${EXTEN});save digits
exten => _.,3,WaitExten(); wait enother input;
exten => _.,4,Goto(dial,1); go dial if no new digits
exten => dial,1,Dial(SIP/${digits}@oneProvider,60)
正確的解決方案 - 使用讀應用程序,並要求用戶使用#號結束數,而不是*。
您也可以嘗試撥號方案是這樣的:
exten => _*X*!,1,Goto(dial,${EXTEN:1:-1},1)
exten => _*XXX*!,1,Goto(dial,${EXTEN:1:-1},1)
exten => _*XXXX*!,1,Goto(dial,${EXTEN:1:-1},1)
exten => _*XXXXX*!,1,Goto(dial,${EXTEN:1:-1},1)
exten => _*XXXXXX*!,1,Goto(dial,${EXTEN:1:-1},1)
exten => _*XXXXXXX*!,1,Goto(dial,${EXTEN:1:-1},1)
exten => _*XXXXXXXX*!,1,Goto(dial,${EXTEN:1:-1},1); continue upto max number length
[dial]
exten =>_.,1,Dial(SIP/${EXTEN}@oneProvider,,);
但我不能完全肯定,將工作。如果工作,會減少負載(但更多的線)
謝謝!最重要的是,你幫助我理解了爲什麼它不起作用......我想。在正則表達式中工作(這意味着任何數量的前一個符號),而在Asterisk中,它實際上意味着任何次數的任何次數。 – g3rv4
Nop。它比正則表達式簡單得多。這是patern匹配,檢查這個http://www.voip-info.org/wiki/view/Asterisk+Dialplan+Patterns – arheops
我讀了那頁像千次...但我已經有偏見:)謝謝! – g3rv4