使用Asterisk manager API实现自动拨号
2011-07-12 17:51
501 查看
最近在做公司的呼叫中心,一时心血来潮想实现自动呼叫功能,现在只做了个示例,用到的时候再扩展。
在实现自动呼叫的示例中我使用的是Asterisk manager API中的Originate方法,该方法在phpagi的中。具体定义如下:(英文我就不解释了,我英文很水
)
下面是服务端的简单代码(很简单我只是实现执行该文件自动拨号,对方接听后会听到 hello world 的语音)
ami.php
ami.conf文件是访问API的验证文件:内容如下:
该文件的内容要和asterisk内的/etc/asterisk/manager.conf 文件中的用户密码相同 ,以上两个文件我是放在 /var/spool/asterisk/outgoing/ 目录中的
(要给执行的权限)
以上编写完成之后在服务器上直接运行就可以呼叫拨号了:
执行./ami.php
各位看官可以自己扩展一下,比如通过访问网址来传递呼叫参数!或者通过某些程序自动执行该程序!我只想把这个用到服务器监控上面,不用再使用旧的短信提示,如果宕机就直接拨负责人的电话,接通之后自动拨放录音,还要循环播放,让他不知道都难!
在实现自动呼叫的示例中我使用的是Asterisk manager API中的Originate方法,该方法在phpagi的中。具体定义如下:(英文我就不解释了,我英文很水
)
/** * Originate Call * * @link http://www.voip-info.org/wiki-Asterisk+Manager+API+Action+Originate * @param string $channel Channel name to call * @param string $exten Extension to use (requires 'Context' and 'Priority') * @param string $context Context to use (requires 'Exten' and 'Priority') * @param string $priority Priority to use (requires 'Exten' and 'Context') * @param string $application Application to use * @param string $data Data to use (requires 'Application') * @param integer $timeout How long to wait for call to be answered (in ms) * @param string $callerid Caller ID to be set on the outgoing channel * @param string $variable Channel variable to set (VAR1=value1|VAR2=value2) * @param string $account Account code * @param boolean $async true fast origination * @param string $actionid message matching variable */ function Originate($channel, $exten=NULL, $context=NULL, $priority=NULL, $application=NULL, $data=NULL, $timeout=NULL, $callerid=NULL, $variable=NULL, $account=NULL, $async=NULL, $actionid=NULL) { $parameters = array('Channel'=>$channel); if($exten) $parameters['Exten'] = $exten; if($context) $parameters['Context'] = $context; if($priority) $parameters['Priority'] = $priority; if($application) $parameters['Application'] = $application; if($data) $parameters['Data'] = $data; if($timeout) $parameters['Timeout'] = $timeout; if($callerid) $parameters['CallerID'] = $callerid; if($variable) $parameters['Variable'] = $variable; if($account) $parameters['Account'] = $account; if(!is_null($async)) $parameters['Async'] = ($async) ? 'true' : 'false'; if($actionid) $parameters['ActionID'] = $actionid; return $this->send_request('Originate', $parameters); }
下面是服务端的简单代码(很简单我只是实现执行该文件自动拨号,对方接听后会听到 hello world 的语音)
ami.php
#!/usr/bin/php -q <?php include "phpagi-asmanager.php"; $ams = new AGI_AsteriskManager(); $ams->AGI_AsteriskManager("ami.conf"); $result = $ams->connect(); $res = $ams->Originate('sip/8001','8001','from-internal','1','Playback','hello-world',30000,'192.168.1.112'); var_dump($res); //这个是查看输出信息的调试代码 ?>
ami.conf文件是访问API的验证文件:内容如下:
[asmanager] server=127.0.0.1 ; server to connect to port=5038 ; default manager port username=admin ; username for login secret=123456 ; password for login
该文件的内容要和asterisk内的/etc/asterisk/manager.conf 文件中的用户密码相同 ,以上两个文件我是放在 /var/spool/asterisk/outgoing/ 目录中的
(要给执行的权限)
以上编写完成之后在服务器上直接运行就可以呼叫拨号了:
执行./ami.php
各位看官可以自己扩展一下,比如通过访问网址来传递呼叫参数!或者通过某些程序自动执行该程序!我只想把这个用到服务器监控上面,不用再使用旧的短信提示,如果宕机就直接拨负责人的电话,接通之后自动拨放录音,还要循环播放,让他不知道都难!
相关文章推荐
- 使用Asterisk manager API实现自动拨号
- 使用Ext.util.TaskRunner类实现,Ext的API中有示例,grid页面自动刷新
- 使用Ext.UpdateManager实现页面任意部分自动刷新处理
- 使用C#实现ADSL自动拨号(转载)
- 使用C#实现ADSL自动拨号
- 使用Rasdial这个命令来实现自动拨号、断开网络(更改IP地址)
- [导入]使用Ext.UpdateManager实现页面任意部分自动刷新处理
- 使用C#实现ADSL自动拨号
- 【转】使用C#实现ADSL自动拨号
- 使用Ext.UpdateManager实现页面任意部分自动刷新处理
- 使用python登录新浪API,实现自动转发功能
- 使用swagger实现在线api文档自动生成 在线测试api接口
- 使用C#实现ADSL自动拨号
- 使用C#实现ADSL自动拨号
- 使用C#实现ADSL自动拨号
- asterisk 使用php脚本连接oralce数据库 通过AMI端口实现预拨号(批量外呼)
- asterisk 使用php脚本socket通过AMI端口实现自动打电话报警
- 使用Cloudera Manager API 实现CM中的图表
- 使用bootstrap typeahead插件实现输入框自动补全之问题及解决办法
- 使用PB调用API自动更新(非FTP模式)(五、复制函数F_CONNECT_COPYFILE)