Was this page helpful?

AGI: 除錯技巧

    如何對 AGI 程式作除錯。

    檢查 Asterisk 執行的環境變數 PATH

    1. 找出 Asterisk PID

    ps -ef | grep safe_asterisk 
    
    root      9461     1  0 Jul16 ?        00:00:00 /bin/sh /usr/sbin/safe_asterisk -U asterisk -G asterisk
    

    2. 找出 PATH

    cat /proc/9461/environ | tr '\0' '\n' | grep PATH
    
    LD_LIBRARY_PATH=/usr/local/lib
    PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin 
    

    Tips:

    * PATH 必須包含有 PHP 的執行路徑,一般為 /usr/bin/php。

    * 增加路徑可以修改執行 asterisk 的帳戶的環境變數 PATH。

    在 SHELL mode 進行 AGI 偵錯

    假設 AGI 檔名為 /var/lib/asterisk/agi-bin/agi-test.php

    1. 開啟 agi debug

    CLI> agi set debug on 

    2. 建立 call stdin 檔

    先設定好 dialplan 執行這個 agi,使用分機讓 agi 執行一次,並從 asterisk log 收集以下的資訊

    agi_request: agi-test.php
    agi_channel: SIP/101-00000010
    agi_language: en
    agi_type: SIP
    agi_uniqueid: 1310966329.16
    agi_version: 1.6.2.17
    agi_callerid: 101
    agi_calleridname: device
    agi_callingpres: 0
    agi_callingani2: 0
    agi_callington: 0
    agi_callingtns: 0
    agi_dnid: 9971
    agi_rdnis: unknown
    agi_context: from-internal
    agi_extension: 9971
    agi_priority: 3
    agi_enhanced: 0.0
    agi_accountcode:
    agi_threadid: -1221215344
    

    將以上資訊存成一個文字檔:agi-test.stdin

    3. 偵錯 AGI

    當要對 agi 進行程式偵錯時,不用每次都要撥號,只要有上述的 agi-test.stdin,不僅可以模擬撥號行為,而且完全不會對 Asterisk 有任何影響,執行以下指令

    #/var/lib/asterisk/agi-bin/agi-test.php < agi-test.stdin
    STREAM FILE /var/lib/asterisk/sounds/en/tt-monkeys # 
    

    所有輸出內容都會顯示在 console。

    Was this page helpful?
    標籤 (Edit tags)
    • No tags
    您必須 登入 才能發佈評論。
    Powered by MindTouch Core