- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
asterisk_phpagi简单开发第一版
Asterisk phpagi开发入门
由于本人刚接触asterisk开发,水平比较菜,苦苦搜索网上的资料也寥寥无几,搞得本人在开发过程中痛苦无比
经过不断尝试,N+1次的google和百度,总算用agi实现了一点点功能
在此分享一下我的经历和经验以供新手品鉴,本人水平有限,难免会有写的不周到或错误的地方,欢迎指正。。
首先是大概看了一下asterisk未来之路,这个是开发asterisk的必须的,这个文档网上有,我就不说什么了,看了后至少了解了asterisk开发的简单配置
通过asterisk未来之路我配置了我人生中第一个拨号规则
[from-mytest]
exten = _.,1,Answer()
exten = _.,n,Background(tycz_welcome)
exten = _Z,1,AGI(test.php,${EXTEN},1)
exten = _Z,n,Hangup()
exten = _826X,1,AGI(test.php,${EXTEN},0)
exten = _826N,n,Hangup()
exten = _Z,1,AGI(test.php,${EXTEN},1) --这个表示分组呼叫(比如按了1)
exten = _826X,1,AGI(test.php,${EXTEN},0)--这个表示直接拨分机号
${EXTEN}是通道变量
好,如果你看不懂,不要急,先把asterisk未来之路多看几遍。。
好吧,我当你看懂了,那么要让你的拨号规则生效,之前你还要做几件事
sip.conf文件里
当然也许不在这里面,因为在sip.conf文件里会有#include XXX.conf
那说明可以把这个配置放到其他配置文件中
[in]
disallow=all
usernametype=peer
secretqualify=no
port=5060
nat=yes
insecure=port,invite
host=
allow=ulaw
context=from-mytest
这个我目前只知道,第一个我们的通信是sip协议的,所以要配置sip.conf文件
[in]表示所有的呼入。。
然后在[in]里我们可以知道这个是设总机)被呼叫的时候的规则设置
context=from-mytest
好了
context=from-mytest表示当有来电呼触发from-mytest拨号规则
from-mystest在哪里?眼睛向上看。。
好了进入extensions.conf的from-mytest
我们看看规则。。
首先是无条件的应答,总机肯定是先无条件应答啦
然后是播放欢迎IVR和提示来电者操作
好,当来电者按了某个键这个时候触发AGI
好了,下面开始讲到了AGI了,一般来说我们把phpagi接口放在asterisk的agi-bin目录里
然后我们新建一个test.php,这个test.php和from-mytest里写的需要一致
我们在test.php里写下如下代码
#!/usr/bin/php –q
//说明上面这个???php脚步的写法,/usr/bin/php 是你的php安装目录(这段话是我写的说明,请勿放在test.php里)
?php
set_time_limit(60);
ob_implicit_flush(false);
include(phpagi.php);//引用phpagi接口
$num = $argv[1]; //这个就是exten = _Z,1,AGI(test.php,${EXTEN})
带过来的通道变量的值,获取来电者按了哪一个键
$flag = $argv[2];//表示是分组还是直接拨分机号
$number = $num;
if($flag){
$url =http://XXXXXX/?m=asteriskagiact=agigroup=.$num;
$res = file_get_contents($url);
/* 调用远程接口去访问数据库(为了保密就XXXX了哈)
说一下,这个地方我的思路是这样的,来电者按了1假设我们就当它代表1组,然后我们去数据库里查出1分组下面的空闲分机(我这样说懂吧。。)*/
if($res){
$number = $res;
}
}
$agi=new AGI;
$agi-answer();
$agi-verbose($num);
$agi-exec_setlanguage(cn);
$agi-stream_file(welcome,#);//这个地方播放IVR,比如说通话我们要录音的(虽然没有录音功能,暂时。。)
$agi-say_p
文档评论(0)