asterisk-java ami2 事件监听
asteriskServer文章1提到啦怎么获取,就不解释
asteriskServer.addChainListener(new AsteriskeventListenerInit());//整个服务的事件监听,给这个服务加监听
通过实现ManagerEventListener类,
public class AsteriskeventListenerInit implements ManagerEventListener {
@Override
public void onManagerEvent(ManagerEvent event) {
这里可以获得事件返回的参数,获取类型可以惨开api文档
domo:
//返回sip分机结束事件
}else if(event instanceof PeerlistCompleteEvent){
PeerlistCompleteEvent perrs=(PeerlistCompleteEvent)event;
MapCacheUtil Instance=MapCacheUtil.getInstance();
if(perrs.getActionId()!=null){
Instance.putPerrsList(perrs.getActionId(), Instance.getPerrs(perrs.getActionId()));//获取整个事件结束
}
//返回的是sip分机信息事件
}else if(event instanceof PeerEntryEvent){
PeerEntryEvent pentry=(PeerEntryEvent)event;
mapcache.putExtensions(pentry.getObjectName());//存放所有分机的容器,用于判断是分机就不需要弹屏
if(pentry!=null && pentry.getStatus()!=null){
if(pentry.getStatus().contains("OK") && !String.valueOf(pentry.getPort()).equals("0")){
List actionidoldList=mapcache.getActionId();
if(actionidoldList!=null){
for(int i=0;i<actionidoldList.size();i++){
String actionid=pentry.getActionId();
if(!ToolUtils.checkNull(actionid) && actionid.equals(actionidoldList.get(i))){
if(ToolUtils.isInteger(pentry.getObjectName())){//分机号是数字类型就放入
mapcache.putPerrs(actionid, pentry.getObjectName());
}
}
}
}
perrlist.add(pentry.getObjectName());
}
}
//返回的是挂机信息事件
}else if(event instanceof HangupEvent){
HangupEvent hangup=(HangupEvent)event;
new WebSocket().broadcast("websocket"+BaseUtil.getnumber(hangup.getChannel()), "挂机原因:"+BaseUtil.getHangup(Integer.valueOf(hangup.getCause()).intValue()));
//分机状态改变事件
}else if(event instanceof ExtensionStatusEvent){
ExtensionStatusEvent extensionstatus=(ExtensionStatusEvent)event;
JSONObject jsono=new JSONObject();
jsono.put("id", extensionstatus.getExten());
jsono.put("statusname", BaseUtil.getExtensionState(extensionstatus.getStatus()));
new WebSocket().broadcastAll(jsono);
//暂时是呼叫保留事件
}else if(event instanceof ParkedCallEvent){
ParkedCallEvent parkcall=(ParkedCallEvent)event;
String key=BaseUtil.getnumber(parkcall.getFrom());
key+=BaseUtil.CHANNELPARK_CENTENT;
mapcache.put(key, parkcall.getExten());
//获取数据库数据事件
}else if(event instanceof DbGetResponseEvent){
DbGetResponseEvent dbget=(DbGetResponseEvent)event;
}else if(event instanceof DisconnectEvent){
DisconnectEvent disconn=(DisconnectEvent)event;
System.out.println("连接asterisk服务失败事件触发:"+disconn);
//所有结果返回事件,写在最后
}else if(event instanceof ResponseEvent){
ResponseEvent response=(ResponseEvent)event;
}
}
}
asterisk-java ami2 事件监听的更多相关文章
- JAVA GUI 事件监听事件 详解 和 案例.
GUI(图形用户界面) Graphical User Interface(图形用户接口) 用图形的 方式, 来显示 计算机操作的 界面, 这样更方便 更直观. CLI Command Line Use ...
- Java GUI 事件监听
现在使用的仍是AWT的事件模型.涉及到3类对象: Event Source:事件源,即事件发生所在的组件 Event:事件,封装了此次事件的相关信息 Event Listener:事件监听器,监听事件 ...
- JAVA自定义事件监听完整例子---sunfruit[转]
http://cache.baiducontent.com/c?m=9f65cb4a8c8507ed4fece763105392230e54f733628a854d2c90c05f9313071601 ...
- JAVA Swing 事件监听
EventListner 接口 它是一个标记接口,每一个监听器接口扩展.这个类定义在java.util包. 类声明 以下是声明java.util.EventListener接口: public int ...
- java Gui编程 事件监听机制
1. GUI编程引言 以前的学习当中,我们都使用的是命令交互方式: 例如:在DOS命令行中通过javac java命令启动程序. 软件的交互的方式: 1. 命令交互方式 图书管理系统 ...
- Java界面编程—事件监听机制
组件首先要先注册事件处理器,当用户单击组件.移动鼠标或者敲击键盘时都会产生事件(Event),一旦有时间发生,应用程序就会做出对该事件的响应,这些组件就是事件源(Event source). 接受.解 ...
- Java事件监听的四种实现方式
1.事件对象: 一般继承自java.util.EventObject对象,由开发者自行定义. 2.事件源: 就是触发事件的源头,不同的事件源会触发不同的事件类型. 3.事件监听器: 事件监听器负责监听 ...
- 事件监听:诀别Android繁琐的事件注册机制——view.setOnXXXXListener
本版本为1.0,支持较少,使用不够方便.相关封装逻辑结构已升级至2.0,详情可参见:更完善的安卓事件监听实现 先简单扯两句这几天学习下来对java事件监听机制的一点感触.客观地讲,java的事件监听机 ...
- Java中用得比较顺手的事件监听
第一次听说监听是三年前,做一个webGIS的项目,当时对Listener的印象就是个"监视器",监视着界面的一举一动,一有动静就触发对应的响应. 一.概述 通过对界面的某一或某些操 ...
随机推荐
- 将eclipse java程序打包成jar的总结(包括工程中没有引用外部jar包和有引用外部jar包两种情况)
一.当eclispe java工程中没有引用外部jar包时: 选中工程---->右键,Export...--->Java--->JAR file--->next-->填写 ...
- mongodb启动脚本
#!/bin/sh # #chkconfig: #description: mongodb start() { /usr/local/yunshipei/enterplorer/mongodb/bin ...
- PLSQ创建用户L
1.首先使用dba权限角色登陆PLSQL 2.选择File-New-User 输入需要创建的账户及密码,选择表空间 3.一定要分配的权限:Role privileges 角色权限,至少分配conn ...
- 为什么选择Netty
支持高并发访问 比核心 Java API 更好的吞吐量,较低的延时资源消耗更少,这个得益于共享池和重用减少内存拷贝 https://baike.baidu.com/item/Netty/1006162 ...
- eclipse安装cppcheck
简介: cppcheck 是一个 c 和 c++ 的静态的代码检查分析工具,不用运行程序就可以进行代码的检测. 可以检测一般的内存泄漏和程序编码错误 0.安装 cppcheck 1.57版本,这个版 ...
- 3. 关于sql注入的综合题
关于sql注入的综合题 ----------南京邮电大学ctf : http://cms.nuptzj.cn/ 页面上也给了好多信息: 根据这个sm. ...
- 转换为标准IPv4格式
Insus.NET刚写了一个函数,把一个IP地址转换为标准格式,即每段位均是由3个数字组成. SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- = ...
- 谷歌同声翻译Translatotron原理
背景介绍 作为中国人,学好英语这件事从小学开始就让人苦恼,近些年随着AI的快速发展,语言差异是否会缩小甚至被消灭成了热门话题.在5月15日,谷歌AI在博客平台发出一篇文章,正式介绍了一款能保留原声的& ...
- 无监督学习:Linear Dimension Reduction(线性降维)
一 Unsupervised Learning 把Unsupervised Learning分为两大类: 化繁为简:有很多种input,进行抽象化处理,只有input没有output 无中生有:随机给 ...
- 程序员收藏必看系列:深度解析MySQL优化(二)
程序员收藏必看系列:深度解析MySQL优化(一) 性能优化建议 下面会从3个不同方面给出一些优化建议.但请等等,还有一句忠告要先送给你:不要听信你看到的关于优化的“绝对真理”,包括本文所讨论的内容,而 ...