質問

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
}
役に立ちましたか?

解決 4

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
    }
?>

他のヒント

The agi will be called with some standard paramaters, include the called-from extension (in your case, that will be i or failed). Make sure you are parsing the arguments being passed to your script (via stdin)!

Use phpagi.php in your script, it provide all required parsing for AGI.

Or see examples at http://www.voip-info.org/wiki/view/Asterisk+AGI+php

If I understood your question correctly, you need to pass a variable to your PHP AGI script. Here's how to do it:

exten => i,n,AGI(faile.php,invalid)

exten => failed,n,AGI(faile.php,failed)

And then, your PHP AGI script should look like this:

#!/usr/bin/php -q
<?php
set_time_limit(30);
//load PHP AGI
require('phpagi/phpagi.php');
error_reporting(E_ALL);
$agi = new AGI();

$status = $argv[1];

if($status == "invalid")
{
  // invalid
} else
{ 
  // failed
}
?>

In Dialplan

exten => _*999*.,1,Answer()
exten => _*999*.,n,Set(var1=1) 
exten => _*999*.,n,AGI(test.php,${var1})

In php

<?php
    require('phpagi.php');

    $agi = new AGI();

    $agi->say_digit($argv[1]);

    $agi->hangup();
?>
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top