DialPlan 開發技巧

    DialPlan 開發技巧整理

    官方教學:https://wiki.asterisk.org/wiki/display/AST/Dialplan

    常用表示式

    數學計算

    ; Syntax: +, -, *, /
    $[1 + 2]
    
    ; $[AA % BB]    求 AA 除 BB 的餘數
    ; 確保 last 是小於 ${max} 的整數值
    Set(last=$[(${loop} + 1) % ${max}]); 
    

    比較式

    ; Syntax: =, >, >=, <, <=, !=
    $[${var1} < ${var2}]
    

    多個比較式

    ; Syntax: &, |
    $[${var} > 0 & ${var} < 9]
    

    在 CLI 發起一個 channel 做程式除錯

    CLI> channel originate local/null@default extension agiMin@default
    

    NOTE:

    default 是 context

    與外部 SHELL 互動

    // 外部 SHELL 傳回變數至 dialplan

    same => n, Set(SOUNDFILE=${SHELL(/usr/bin/php /var/lib/asterisk/agi-bin/googleTTS.php ${CALLERID(num)})})
    

    完整內容在 多國 TTS - Google TTS

    while 與變數裡作運算

    exten => _X.,1,Set(mb=${EXTEN})
    exten => _X.,n,Set(x=1)
    exten => _X.,n,While($["${SIP_HEADER(Diversion,${x})}" != ""])
    exten => _X.,n,Set(mb="${SIP_HEADER(Diversion,${x})}")
    exten => _X.,n,Set(mb=${CUT(mb,@,1):-4})
    exten => _X.,n,Set(x=$[${x}+1])
    exten => _X.,n,EndWhile()
    exten=>  _X.,n,Goto(from-pstn,${mb},1)
    
    標籤 (Edit tags)
    • No tags
    您必須 登入 才能發佈評論。
    Powered by MindTouch Core