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
各位看官可以自己扩展一下,比如通过访问网址来传递呼叫参数!或者通过某些程序自动执行该程序!我只想把这个用到服务器监控上面,不用再使用旧的短信提示,如果宕机就直接拨负责人的电话,接通之后自动拨放录音,还要循环播放,让他不知道都难!
php开发自动拨号,使用Asterisk manager API实现自动拨号相关推荐
- Asterisk manager API(AMI)文档(中文版)
Asterisk控制接口(AMI)允许管理客户端程序连接到一个asterisk实例并且可以通过TCP/IP流发送命令或读取事件.这在试图跟踪asterisk的状态或其中的电话客户端状态时很有用,AMI ...
- HTML5自动生成相框,HTML5拖放API实现自动生成相框功能
实现功能: 将桌面图片拖入指定地方,生成相框和相关信息. 相框需要自己配置,设置为背景,在CSS中设置. 效果如图: html部分: H5拖放API之图片相框效果 > 请将图片拖放至此处 CSS ...
- windows api中文文档_Web服务开发:Spring集成Swagger,3步自动生成API文档
目录: 1,Spring Boot集成Swagger 2,Swagger接口文档页面 3,常见问题和解决方法 在Sping开发REST接口服务时,API文档是不可缺少的一个重要部分.Swagger框架 ...
- swagger 修改dto注解_Web服务开发:Spring集成Swagger,3步自动生成API文档
目录: 1,Spring Boot集成Swagger 2,Swagger接口文档页面 3,常见问题和解决方法 在Sping开发REST接口服务时,API文档是不可缺少的一个重要部分.Swagger框架 ...
- 微服务架构开发实战:如何实现微服务的自动扩展?
微服务架构开发实战:如何实现微服务的自动扩展? 程序员高级码农II 2020-09-25 07:25:00 如何实现微服务的自动扩展 前面讲了一些关于自动扩展的理论知识,但如何实现自动扩展,并不是三言 ...
- 微信小程序开发系列六:微信框架API的调用
微信小程序开发系列教程 微信小程序开发系列一:微信小程序的申请和开发环境的搭建 微信小程序开发系列二:微信小程序的视图设计 微信小程序开发系列三:微信小程序的调试方法 微信小程序开发系列四:微信小程序 ...
- Senparc.Weixin.MP SDK 微信公众平台开发教程(十六):AccessToken自动管理机制
在<Senparc.Weixin.MP SDK 微信公众平台开发教程(八):通用接口说明>中,我介绍了获取AccessToken(通用接口)的方法. 在实际的开发过程中,所有的高级接口都需 ...
- Qt开发北斗定位系统融合百度地图API及Qt程序打包发布
Qt开发北斗定位系统融合百度地图API及Qt程序打包发布 1.上位机介绍 最近有个接了一个小型项目,内容很简单,就是解析北斗GPS的串口数据然后输出经纬度,但接过来觉得太简单,就发挥了主观能动性,增加 ...
- FL2440 3G上网卡拨号上网,并实现mdev自动挂载
___________________________________ 主机操作系统:Centos 6.5 交叉编译器环境:arm-linux-gcc-4.5.4 开发板平台: FL2440 ...
最新文章
- assign复制对象_JavaScript标准对象:assign,values,hasOwnProperty和getOwnPropertyNames方法介绍...
- MySQL入门 (六) : 字元集与资料库
- idea隐藏 .iml 和 .idea 等自动生成文件
- 卸载wps后,win10的office所有图标变白最简单方法
- java 调用三角函数_Java中的三角函数方法
- graphene-django开发实践——登录为例
- 美国音乐学院计算机音乐专业排名2015年,美国音乐学院排名
- 单点登录系统中如何共享cookie
- 【Java】如何优雅的使用HttpClient
- webshell 一句话木马
- Atom的安装及使用
- DS1302数码管显示时--分--秒(按键可修改时间)
- 五子棋_AI权值算法(2)
- java实现多个mav文件拼接合并成一个mav文件
- 求知若饥,虚心若愚----不错的演讲,与大家共勉
- 开源的B2B网站 及 B2B、B2C、C2C的讲解
- linux开通本地ip连接,SSH 连接本地虚拟机 Linux
- 大专学历计算机专业高薪工作,大专毕业一年,工资三千多,计算机行业高薪路茫茫(下)...
- 数据处理(1):十万加SHP数据重载导入标准字段图层
- matlab编程实现自适应均值滤波和自适应中值滤波
热门文章
- 设计模式之单例(Singleton)
- c语言编程改变旅馆价格,模拟旅馆管理系统的一个功能——床位的分配与回收(c语言编程)...
- QQ强聊器原理和代码
- 紫光云的三周年:融资六亿,牵手中移动,深化云市场!
- springboot easypoi 报错The bean 'beanNameViewResolver', defined in class path resource [cn/afterturn/e
- 边缘计算硬件的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
- 情感计算-音频情感识别
- PS显示不能完成请求,因为没有足够内存(RAM)
- 国家职业分类大典公示 心理咨询行业迎来重大变革
- 详述在设有快表的请求分页存储管理系统中,一个虚地址转换成物理内存地址的过程。...