asterisk-java ami4 一些基本功能的例子
比如:挂机,拨号,拨外线,保留通话,示闲,示忙等等。。。。
在api中可以获得这些方法说明
/**
* 给分机挂机
* @param Extension 要挂机的分机号
* @return
* @throws TimeoutException
* @throws IOException
* @throws IllegalStateException
* @throws IllegalArgumentException
*/
public static ManagerResponse getHangup(String Extension,Integer value) throws IllegalArgumentException, IllegalStateException, IOException, TimeoutException{
if(BaseUtil.getConnection()==null){
BaseUtil.getAsteriskJava();
}
HangupAction hangupAction=new HangupAction();
hangupAction.setActionId(BaseController.getactionId("Hangup", Extension));
hangupAction.setCause(value);//挂机原因
hangupAction.setChannel(BaseUtil.getChannel(Extension));
ManagerResponse response =BaseUtil.getConnection().sendAction(hangupAction);
return response;
}
/**
* 分机外呼
* @param Extension 发起呼叫的分机号
* @param phone 被呼叫的外线号
* @return
* @throws IllegalArgumentException
* @throws IllegalStateException
* @throws IOException
* @throws TimeoutException
*/
@SuppressWarnings("deprecation")
public static ManagerResponse getWOriginate(String Extension,String phone) throws IllegalArgumentException, IllegalStateException, IOException, TimeoutException{
if(BaseUtil.getConnection()==null){
BaseUtil.getAsteriskJava();
}
OriginateAction origaction=new OriginateAction();
origaction.setContext("from-internal");//路由器
String action=BaseController.getactionId("Originate", Extension);
origaction.setActionId(action);//呼叫action id
origaction.setChannel("SIP/"+Extension);//呼叫连接通道,呼叫时,先呼通自己
origaction.setExten("799"+Extension+phone+"#");//要外呼的电话799+分机号是
origaction.setPriority(1);//优先级
origaction.setTimeout(20000);//呼叫等待(毫秒)
origaction.setCallerId(phone);//呼叫号码
origaction.setAsync(true);//设置异步才会有结果返回
ManagerResponse response =BaseUtil.getConnection().sendAction(origaction);
System.out.println("外呼结果"+response);
return response;
}
/**
* 分机呼分机
* @param Extension 发起呼叫的分机号
* @param phone 被呼叫的分机号
* @return
* @throws IllegalArgumentException
* @throws IllegalStateException
* @throws IOException
* @throws TimeoutException
*/
@SuppressWarnings("deprecation")
public static ManagerResponse getROriginate(String Extension,String phone) throws IllegalArgumentException, IllegalStateException, IOException, TimeoutException{
if(BaseUtil.getConnection()==null){
BaseUtil.getAsteriskJava();
}
OriginateAction origaction=new OriginateAction();
origaction.setContext("from-internal");//路由器
String action=BaseController.getactionId("Originate", Extension);
origaction.setActionId(action);//呼叫action id
origaction.setChannel("SIP/"+Extension);//呼叫连接通道,呼叫时,先呼通自己
origaction.setExten(phone);//要外呼的电话
origaction.setPriority(1);//优先级设置1时,不会回拨,为什么
origaction.setTimeout(20000);//呼叫等待(毫秒)
origaction.setCallerId(phone);//呼叫号码
origaction.setAsync(true);//设置异步才会有结果返回
ManagerResponse response =BaseUtil.getConnection().sendAction(origaction);
return response;
}
/**
* 插入通话
* @param Extension 发起呼叫的分机号
* @param phone 被插入通话的分机号
* @return
* @throws IllegalArgumentException
* @throws IllegalStateException
* @throws IOException
* @throws TimeoutException
*/
@SuppressWarnings("deprecation")
public static ManagerResponse getCOriginate(String Extension,String phone) throws IllegalArgumentException, IllegalStateException, IOException, TimeoutException{
if(BaseUtil.getConnection()==null){
BaseUtil.getAsteriskJava();
}
OriginateAction origaction=new OriginateAction();
origaction.setContext("spy");//路由器
String action=BaseController.getactionId("Originate", Extension);
origaction.setActionId(action);//呼叫action id
origaction.setChannel("SIP/"+Extension);//呼叫连接通道,呼叫时,先呼通自己
origaction.setExten("557"+phone);//要插入通话的分机
origaction.setPriority(1);//优先级
origaction.setTimeout(20000);//呼叫等待(毫秒)
origaction.setAsync(true);//设置异步才会有结果返回
ManagerResponse response =BaseUtil.getConnection().sendAction(origaction);
return response;
}
/**
* 监听通话
* @param Extension 发起监听的分机号
* @param phone 要监听的分机号
* @return
* @throws IllegalArgumentException
* @throws IllegalStateException
* @throws IOException
* @throws TimeoutException
*/
@SuppressWarnings("deprecation")
public static ManagerResponse getJOriginate(String Extension,String phone) throws IllegalArgumentException, IllegalStateException, IOException, TimeoutException{
if(BaseUtil.getConnection()==null){
BaseUtil.getAsteriskJava();
}
OriginateAction origaction=new OriginateAction();
origaction.setContext("spy");//路由器
String action=BaseController.getactionId("Originate", Extension);
origaction.setActionId(action);//呼叫action id
origaction.setChannel("SIP/"+Extension);//呼叫连接通道,呼叫时,先呼通自己
origaction.setExten("556"+phone);//要插入通话的分机
origaction.setPriority(1);//优先级
origaction.setTimeout(20000);//呼叫等待(毫秒)
origaction.setAsync(true);//设置异步才会有结果返回
ManagerResponse response =BaseUtil.getConnection().sendAction(origaction);
return response;
}
/**
* 获取分机状态
* @param Extension 分机号
* @return
* @throws IllegalArgumentException
* @throws IllegalStateException
* @throws IOException
* @throws TimeoutException
*/
public static ManagerResponse getExtension(String Extension) throws IllegalArgumentException, IllegalStateException, IOException, TimeoutException{
if(BaseUtil.getConnection()==null){
BaseUtil.getAsteriskJava();
}
ExtensionStateAction extaction=new ExtensionStateAction(Extension,"default");
String Actionid=BaseController.getactionId("Extension", Extension);
extaction.setActionId(Actionid);
ManagerResponse response =BaseUtil.getConnection().sendAction(extaction);
return response;
}
/**
* 获取分机通话的录音文件
* @param Extension 需要录音的分机号
* @return
* @throws IllegalArgumentException
* @throws IllegalStateException
* @throws IOException
* @throws TimeoutException
*/
public static ManagerResponse getMonitor(String Extension) throws IllegalArgumentException, IllegalStateException, IOException, TimeoutException{
if(BaseUtil.getConnection()==null){
BaseUtil.getAsteriskJava();
}
MonitorAction MonitorAction=new MonitorAction();
MonitorAction.setActionId(BaseController.getactionId("Monitor", Extension));
MonitorAction.setMix(false);//获取false为1个语音文件,true为两个
MonitorAction.setChannel(BaseUtil.getChannel(Extension));
MonitorAction.setFile("分机号:"+Extension+" 时间:"+ToolUtils.formatDate(new Date(), "yyyymmddhhmmss")+" 监听录音");//语音文件的名称
//MonitorAction.setFormat("");//录音文件编码格式
ManagerResponse response =BaseUtil.getConnection().sendAction(MonitorAction);
return response;
}
/**
* 获取所有的sip话机信息连接情况
* @param Actionid 唯一标识
* @return
* @throws IllegalArgumentException
* @throws IllegalStateException
* @throws IOException
* @throws TimeoutException
*/
public static ManagerResponse getSIPpeers(String Actionid) throws IllegalArgumentException, IllegalStateException, IOException, TimeoutException{
if(BaseUtil.getConnection()==null){
BaseUtil.getAsteriskJava();
}
SipPeersAction sippeers=new SipPeersAction();
sippeers.setActionId(Actionid);
ManagerResponse response =BaseUtil.getConnection().sendAction(sippeers);
return response;
}
/**
* 重定向通话到指定的分机,外线
* @param outextension 进行指定的本机号
* @param inextension 指定的分机号,外线
* @return
* @throws IllegalArgumentException
* @throws IllegalStateException
* @throws IOException
* @throws TimeoutException
*/
public static ManagerResponse getRedirect(String outextension,String inextension) throws IllegalArgumentException, IllegalStateException, IOException, TimeoutException{
if(BaseUtil.getConnection()==null){
BaseUtil.getAsteriskJava();
}
MapCacheUtil mapcache=MapCacheUtil.getInstance();
String channel=BaseUtil.getChannel(outextension);//获取本机的通道
RedirectAction redrec=new RedirectAction();
redrec.setActionId(BaseController.getactionId("Redirect", inextension));
redrec.setChannel(String.valueOf(mapcache.get(channel)));//要转移的通道
redrec.setContext("from-internal");
redrec.setExten(inextension);//要转入的分机
redrec.setPriority(1);//优先级
ManagerResponse response=BaseUtil.getConnection().sendAction(redrec);
return response;
}
/**
* 通话保留
* @param Extension
* @param channel 对方通道
* @param channel2 自己通道
* @return
* @throws IllegalArgumentException
* @throws IllegalStateException
* @throws IOException
* @throws TimeoutException
*/
public static ManagerResponse getPark(String Extension) throws IllegalArgumentException, IllegalStateException, IOException, TimeoutException{
if(BaseUtil.getConnection()==null){
BaseUtil.getAsteriskJava();
}
MapCacheUtil mapcache=MapCacheUtil.getInstance();
ParkAction park=new ParkAction();
String channel=BaseUtil.getChannel(Extension);
park.setActionId(BaseController.getactionId("Park", Extension));
park.setChannel(String.valueOf(mapcache.get(channel)));//要保留的通道
park.setChannel2(channel);//时间结束要返回的通道
park.setTimeout(60*60*1000);//保留通话的时间
ManagerResponse response=BaseUtil.getConnection().sendAction(park);
return response;
}
/**
* 通话接回
* @param Extension
* @param channel 对方通道
* @param channel2 自己通道
* @return
* @throws IllegalArgumentException
* @throws IllegalStateException
* @throws IOException
* @throws TimeoutException
*/
public static ManagerResponse getBackPark(String Extension,String parked) throws IllegalArgumentException, IllegalStateException, IOException, TimeoutException{
if(BaseUtil.getConnection()==null){
BaseUtil.getAsteriskJava();
}
OriginateAction origaction=new OriginateAction();
origaction.setContext("from-internal");//路由器
String action=BaseController.getactionId("Originate", Extension);
origaction.setActionId(action);//呼叫action id
origaction.setChannel("SIP/"+Extension);//呼叫连接通道,呼叫时,先呼通自己
origaction.setExten(parked);
origaction.setPriority(1);//优先级设置1时,不会回拨,为什么
origaction.setAsync(true);//设置异步才会有结果返回
ManagerResponse response =BaseUtil.getConnection().sendAction(origaction);
return response;
}
/**
* 桥接通话
* @param Extension
* @param channel 对方通道
* @param channel2 自己通道
* @return
* @throws IllegalArgumentException
* @throws IllegalStateException
* @throws IOException
* @throws TimeoutException
*/
public static ManagerResponse getBridge(String Extension) throws IllegalArgumentException, IllegalStateException, IOException, TimeoutException{
if(BaseUtil.getConnection()==null){
BaseUtil.getAsteriskJava();
}
MapCacheUtil mapcache=MapCacheUtil.getInstance();
BridgeAction bridge=new BridgeAction();
String channel=BaseUtil.getChannel(Extension);
bridge.setActionId(BaseController.getactionId("Bridge", Extension));
bridge.setChannel1(String.valueOf(mapcache.get(channel)));
bridge.setChannel2(channel);
bridge.setTone(true);
//park.setTimeout(30000);//保留通话的时间
ManagerResponse response=BaseUtil.getConnection().sendAction(bridge);
return response;
}
/**
* 获取分机示忙示闲状态值
* @param Extension
* @return
* @throws IllegalArgumentException
* @throws IllegalStateException
* @throws IOException
* @throws TimeoutException
*/
public static ManagerResponse getdatabasednd(String Extension) throws IllegalArgumentException, IllegalStateException, IOException, TimeoutException{
if(BaseUtil.getConnection()==null){
BaseUtil.getAsteriskJava();
}
DbGetAction db=new DbGetAction();
db.setActionId(BaseController.getactionId("DND", Extension));
db.setFamily("DND");
db.setKey(Extension);
ManagerResponse response=BaseUtil.getConnection().sendAction(db);
return response;
}
/**
* 设置分机示闲状态值
* @param Extension
* @return
* @throws IllegalArgumentException
* @throws IllegalStateException
* @throws IOException
* @throws TimeoutException
*/
public static ManagerResponse deldatabasednd(String Extension) throws IllegalArgumentException, IllegalStateException, IOException, TimeoutException{
if(BaseUtil.getConnection()==null){
BaseUtil.getAsteriskJava();
}
DbDelAction db=new DbDelAction();
db.setActionId(BaseController.getactionId("DND", Extension));
db.setFamily("DND");
db.setKey(Extension);
ManagerResponse response=BaseUtil.getConnection().sendAction(db);
return response;
}
/**
* 设置分机示忙状态值
* @param Extension
* @return
* @throws IllegalArgumentException
* @throws IllegalStateException
* @throws IOException
* @throws TimeoutException
*/
public static ManagerResponse setdatabasednd(String Extension) throws IllegalArgumentException, IllegalStateException, IOException, TimeoutException{
if(BaseUtil.getConnection()==null){
BaseUtil.getAsteriskJava();
}
DbPutAction db=new DbPutAction();
db.setActionId(BaseController.getactionId("DND", Extension));
db.setFamily("DND");
db.setKey(Extension);
db.setVal("yes");
ManagerResponse response=BaseUtil.getConnection().sendAction(db);
return response;
}
asterisk-java ami4 一些基本功能的例子的更多相关文章
- Java 基本数据类型 sizeof 功能
Java 基本数据类型 sizeof 功能 来源 https://blog.csdn.net/ithomer/article/details/7310008 Java基本数据类型int 32b ...
- Java 守护线程(Daemon) 例子
当我们在Java中创建一个线程,缺省状态下它是一个User线程,如果该线程运行,JVM不会终结该程序.当一个线被标记为守护线程,JVM不会等待其结束,只要所有用户(User)线程都结束,JVM将终结程 ...
- java 多线程——quartz 定时调度的例子
java 多线程 目录: Java 多线程——基础知识 Java 多线程 —— synchronized关键字 java 多线程——一个定时调度的例子 java 多线程——quartz 定时调度的例子 ...
- java 多线程——一个定时调度的例子
java 多线程 目录: Java 多线程——基础知识 Java 多线程 —— synchronized关键字 java 多线程——一个定时调度的例子 java 多线程——quartz 定时调度的例子 ...
- java操作xml的一个小例子
最近两天公司事比较多,这两天自己主要跟xml打交道,今天更一下用java操作xml的一个小例子. 原来自己操作xml一直用这个包:xstream-1.4.2.jar.然后用注解的方式,很方便,自己只要 ...
- Java编程思想-注解生成外部例子代码
如果本文帮助到您,请点击下面的链接,这是本人的网站,以示鼓励,谢谢!链接绝对安全! 本人的网站 java注解属于java中高大上的功能,许多开源框架都使用了java注解的功能.比如spring,hib ...
- java 三次样条插值 画光滑曲线 例子
java 三次样条插值 画光滑曲线 例子 主要是做数值拟合,根据sin函数采点,取得数据后在java中插值并在swing中画出曲线,下面为截图 不光滑和光滑曲线前后对比: 代码: 执行类: p ...
- Java实现发邮件功能---网易邮箱
目录 Java实现发邮件功能 前言 开发环境 代码 效果 结束语 Java实现发邮件功能 前言 电子邮件的应用场景非常广泛,例如新用户加入,即时发送优惠清单.通过邮件找回密码.监听后台程序,出现异常自 ...
- Java中连接MySql数据库的例子
Java中连接MySql数据库的例子: package com.joinmysql.demo; import java.sql.DriverManager; import java.sql.Resul ...
随机推荐
- Hadoop 解除 “Name node is in safe mode”
运行Hadoop程序时,有时候会报以下错误: org.apache.hadoop.dfs.SafeModeException: Cannot delete /user/hadoop/input. N ...
- 用css解决Unigui在IE系列浏览器中字体变小的问题(设置UniServeModule的customcss属性)
Unigui运行在chrome浏览器下可以有最佳的效果,但用ie打开用unigui做的项目会发现字体明显小一截,可以用自定义css来解决这个问题. 可以在UniServeModule的customcs ...
- IP达人启示录(学会经营自己:靠软件来扩大自己的IP,或者获取很大的名声)
在家附近的一个小公园中,一个老人每天晚上都在用水练习书法,他的字写的的确很不错,不懂书法的我,看了就感觉非常的带劲--苍劲有力.今晚再次路过的时候,就有种想和这个老人聊一聊的冲动,那么多年纪了,用书法 ...
- ORACLE 创建视图索引序列
/* 视图View 视图是从若干基本表和(或)其他视图构造出来的表 视图存放的都是查询语句,并没有真实的数据 虚表 作用 限制对数据的操作 复杂查询变简单 提供相同数据的不同显示 UNION ALL ...
- jquery中注意点
1.jquery.fn.extend和jquery.extend jquery.fn.extend是向jquery中的prototype中添加方法或者属性,而jquery.extend是向jquery ...
- CF上的3道小题(1)
CF上的3道小题 终于调完了啊.... T1:CF702E Analysis of Pathes in Functional Graph 题意:你获得了一个n个点有向图,每个点只有一条出边.第i个点的 ...
- 徐州联赛选拔赛 - 计算IP地址值
题目链接 思路:这是一道非常简单的题目,直接用公式计算就好了.对于IP地址a.b.c.d,转换为十进制数就是(a<<24)|(b<<16)|(c<<8)|d.唯一要 ...
- 百度地图API详细介绍
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <t ...
- Android属性动画ObjectAnimator的使用1
版权声明:本文为xing_star原创文章,转载请注明出处! 本文同步自http://javaexception.com/archives/106 属性动画ObjectAnimator的使用 属性动画 ...
- 如何实现Docker镜像和容器实例的备份迁移
题记 大家在使用Docker都会从容器仓库下载镜像,不过这个过程可能依据网络带宽而定,那么如果将一个已经下载好的镜像迁移到另外一个环境中,或者说如何实现Docker容器的备份恢复,或者迁移,接下来我们 ...