Asterisk 调试AGI调用php
在这里为了方便调试,修改一下拨号计划Dialplan,定义一个快捷号*11直接调起test1.php进行测试,具体如何做呢?
拨号计划Dialplan
asterisk的配置在/etc/asterisk,我们知道extensions.conf就是最基本的配置了
一般新建立的分机都是用的from-internal,例如:
[1001]
type=endpoint
aors=1001
auth=1001-auth
tos_audio=ef
tos_video=af41
cos_audio=5
cos_video=4
allow=ulaw,alaw,gsm,g726,g722
context=from-internal
callerid=1001 <1001>
打开extensions.conf,可以看到类似于下方的配置 ,from-internal-custom配置没有找到,这里我们在extensions_custom.conf文件上加上[from-internal-custom]自已想定义*11键
#include extensions_override_freepbx.conf
#include extensions_additional.conf
#include extensions_custom.conf
[from-internal]
include => from-internal-noxfer
include => from-internal-xfer
include => bad-number ; auto-generated
exten => h,1,Macro(hangupcall)
[from-internal-noxfer]
include => from-internal-noxfer-custom
include => from-internal-noxfer-additional ; auto-generated
exten => h,1,Macro(hangupcall)
[from-internal-xfer]
include => from-internal-custom
include => from-internal-additional ; auto-generated
exten => h,1,Macro(hangupcall)
在extensions_custom.conf 加入如下内容,以便于测试
[from-internal-custom]
exten => *11,1,Answer
exten => *11,2,Background(welcome)
exten => *11,3,DeadAGI(test1.php,1001)
exten => *11,4,Hangup
重启asterisk服务
service asterisk restart
改完拨号计划,记得重新加载配置,这里用重启asterisk服务的方式来完成
创建test1.php
在/var/lib/asterisk/agi-bin目录下创建test1.php
内容为
#!/usr/bin/php -q
<?php
set_time_limit(60);
require("phpagi.php");
$agi = new AGI();
$agi->verbose("get argv begin");
//接收参数1
$data1=$argv[1];
$agi->verbose($data1);
$agi->verbose("get argv end");
//$agi->say_number($data1);
$agi->say_digits($data1);
$agi->verbose("test get CDR(channel) begin");
//通道参数
$cdr1=$agi->get_variable("CDR(channel)");
$cdr1Data1=$cdr1["data"];
$agi->verbose($cdr1Data1);
$agi->verbose("test get CDR(channel) end");
$agi->verbose("test get_data enter begin");
//测试
$res_dtmf=$agi->get_data("evaluate",3000,1);
$res_num=$res_dtmf["result"];
$agi->verbose("your enter is ".$res_num);
$agi->verbose("test get_data enter end");
$agi->verbose("test say_digits begin");
$agi->say_digits($res_num);
$agi->verbose("test say_digits end");
//$agi->hangup();
?>
打开asterisk控制台
asterisk -rvvvvvv
agi set debug on
拨号验证
在分机上拨*11,即能看到类似于下方的输出调试信息