php开发自动拨号,使用Asterisk manager API实现自动拨号

在实现自动呼叫的示例中我使用的是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

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

15886130_1.jpg

各位看官可以自己扩展一下,比如通过访问网址来传递呼叫参数!或者通过某些程序自动执行该程序!我只想把这个用到服务器监控上面,不用再使用旧的短信提示,如果宕机就直接拨负责人的电话,接通之后自动拨放录音,还要循环播放,让他不知道都难!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值