发布时间:2014-09-05 17:12:09作者:知识屋
在实现自动呼叫的示例中我使用的是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
各位看官可以自己扩展一下,比如通过访问网址来传递呼叫参数!或者通过某些程序自动执行该程序!我只想把这个用到服务器监控上面,不用再使用旧的短信提示,如果宕机就直接拨负责人的电话,接通之后自动拨放录音,还要循环播放,让他不知道都难!
linux一键安装web环境全攻略 在linux系统中怎么一键安装web环境方法
Linux网络基本网络配置方法介绍 如何配置Linux系统的网络方法
Linux下DNS服务器搭建详解 Linux下搭建DNS服务器和配置文件
对Linux进行详细的性能监控的方法 Linux 系统性能监控命令详解
linux系统root密码忘了怎么办 linux忘记root密码后找回密码的方法
Linux基本命令有哪些 Linux系统常用操作命令有哪些
Linux必学的网络操作命令 linux网络操作相关命令汇总
linux系统从入侵到提权的详细过程 linux入侵提权服务器方法技巧
linux系统怎么用命令切换用户登录 Linux切换用户的命令是什么
在linux中添加普通新用户登录 如何在Linux中添加一个新的用户
2012-07-10
CentOS 6.3安装(详细图解教程)
Linux怎么查看网卡驱动?Linux下查看网卡的驱动程序
centos修改主机名命令
Ubuntu或UbuntuKyKin14.04Unity桌面风格与Gnome桌面风格的切换
FEDORA 17中设置TIGERVNC远程访问
StartOS 5.0相关介绍,新型的Linux系统!
解决vSphere Client登录linux版vCenter失败
LINUX最新提权 Exploits Linux Kernel <= 2.6.37
nginx在网站中的7层转发功能