phpasteriskasteriskamiagi

Asterisk Server Pass Variable from Dialplan to AGI Script


My Dialplan is like this

[dial-plan]
exten => s,1,Answer()
exten => s,n,Noop(exten = ${EXTEN}
exten => s,n,Macro(dumpvars)
exten => s,n,Macro(record-enable)
exten => s,n,AGI(success.php)
exten => i,1,Noop(REASON = ${REASON})
exten => i,n,Macro(dumpvars)
exten => i,n,AGI(faile.php)
exten => failed,1,Noop(REASON = ${REASON})
exten => failed,n,Macro(dumpvars)
exten => failed,n,AGI(faile.php)

I want to catch from where faile.php called , It may be called from failed or from i . How can I check this

I need to make like this is faile.php

if($some_var == 1){
     //Invalid
}
elsif($some_var == 2){
    //Failed
}

Solution

  • Here is how I implemented same with php-agi.php

    failed.php (will execute if call failed)

    <?php
        require_once "phpagi.php";
        require_once "phpagi-asmanager.php";
    
        $astman = new AGI();
        $astman->set_variable('CallState','failed');
    
    ?>
    

    success.php (will execute if call success)

    <?php
        require_once "phpagi.php";
        require_once "phpagi-asmanager.php";
    
        $astman = new AGI();
        $astman->set_variable('CallState','success');
    
    ?>
    

    hangup.php (will execute on end of the call, if call failed or success)

    <?php
        require_once "phpagi.php";
        require_once "phpagi-asmanager.php";
    
        $astman = new AGI();
        $call_state = agi_get_var('CallState');
        if($call_state == "success"){
            //call was success
        }
        elseif($call_state == "failed"){
            //call was failed
        }
    ?>