|
使用phpagi程序可以非常容易的实现IVR菜单,外部数据库访问,呼叫控制。等功能。
首先准备环境,测试帐号 两个sip帐号和一个iax2帐号
sip.conf
[1001]
username=1001
type=friend
accountcode=1001
secret=1001
qualify=no
port=5060
nat=yes
host=dynamic
dtmfmode=rfc2833
context=abc
canreinvite=no
disallow=all
allow=g729
callerid=1001
[1002] username=1002
type=friend
accountcode=1002
secret=1002
qualify=no
port=5060
nat=yes
host=dynamic
dtmfmode=rfc2833
context=abc
canreinvite=no
disallow=all
allow=g729
callerid=1002
iax2.conf
[1004]
username=1004
accountcode=1004
type=friend
secret=1004
qualify=no
port=4569
notransfer=yes
host=dynamic
context=abc
disallow=all
allow=g729
设置拨号方案:extensions.conf
[abc]
exten => _X.,1,AGI(myphpagi.php)
下载准备phpagi 函数文件:
cd /var/lib/asterisk/agi-bin/
wget http://nchc.dl.sourceforge.net/sourceforge/phpagi/phpagi-2.14.tgz
tar zxvf phpagi-2.14.tgz
第一个程序:
touch myphpagi.php
chmod +x myphpagi.php
vi myphpagi.php 添加
#!/usr/bin/php -q
调试:登录asterisk CIL控制台
asterisk -vvvr
打开agi debug
->agi debug
用登录分机,拨打任意号码,因该可以听到语音和拨报数字1001,控制台显示如下信息。说明phpagi执行成功
-- Executing AGI("IAX2/1004-2", "myphpagi.php") in new stack
-- Launched AGI Script /var/lib/asterisk/agi-bin/myphpagi.php
myphpagi.php|20|abc|123: HELLO WORLD!!!!!!
-- Playing 'digits/1' (language 'en')
-- Playing 'digits/0' (language 'en')
-- Playing 'digits/0' (language 'en')
-- Playing 'digits/1' (language 'en')
-- AGI Script myphpagi.php completed, returning 0
== Auto fallthrough, channel 'IAX2/1004-2' status is 'UNKNOWN'
-- Hungup 'IAX2/1004-2'
一个简单的IVR菜单
#!/usr/bin/php -q
拨号。。agi播报语音,输入数字,如果为1,控制台显示'your enter 1'
如果为2,控制台显示'your enter 2' ,如果是其他,agi 会播报vm-gooby语音,然后挂断,
实现拨号和计费(程序可简单实现出局,挂断后获得真实通话时间)
#!/usr/bin/php -q
|
|
|