zcl_ccc 发表于 2018-12-21 08:03:19

Asterisk PHP AGI 学习笔记(转)

  使用phpagi程序可以非常容易的实现IVR菜单,外部数据库访问,呼叫控制。等功能。
  首先准备环境,测试帐号 两个sip帐号和一个iax2帐号
  sip.conf
  
  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
  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
  
  username=1004
  accountcode=1004
  type=friend
  secret=1004
  qualify=no
  port=4569
  notransfer=yes
  host=dynamic
  context=abc
  disallow=all
  allow=g729
  设置拨号方案:extensions.conf
  
  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
  
页: [1]
查看完整版本: Asterisk PHP AGI 学习笔记(转)