部分代码来源于网络,经过调试后写在此:
/etc/asterisk/phpagi.conf 配置内容:
[phpagi]
debug=true //是否打开debug,一般生产环境关闭
error_handler=true
tempdir=/var/spool/asterisk/tmp/
[asmanager]
server=10.1.0.7
port=5038
username=astman
secret=astman
[fastagi]
setuid=true
basedir=/var/lib/asterisk/agi-bin/
#!/usr/bin/php -q
<?php
set_time_limit(60);
ob_implicit_flush(false);
include("phpagi.php");
$agi=new AGI;
$agi->answer();
$agi->verbose('HELLO WORLD!!!!!!');
$agi->stream_file('welcome','#'); //播放语音流媒体,按#号终止播放
$agi->say_digits('1001','1234567890*#');
$agi->hangup();
?>
简单IVR流程:
#!/usr/bin/php -q
<?php
set_time_limit(60);
ob_implicit_flush(false);
include("phpagi.php");
$agi=new AGI;
$agi->answer();
$prompt_enter_dest="welcome";
$res_dtmf=$agi->get_data($prompt_enter_dest,1000,1); //超时1000,最多1个数字
$res_num=$res_dtmf["result"];
$agi->say_digits($res_num);
if($res_num=="1")
{
$agi->verbose('You enter 1');
}
elseif($res_num=='2')
{
$agi->verbose('You enter 2');
}
else
{
$agi->stream_file('vm-goodbye','#');
}
$agi->hangup();
?>
如果带参数的方式调用AGI则按照如下规则:
调用方法:
exten => s,1,AGI(myagi.php,${exten},${mID})
在myagi.php 中则使用如下的方法来获取:
$argv[1] 对应${exten}
$argv[2] 对应${mID}