- 浏览: 460005 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
a464697691:
楼主厉害,现在可以使用了
Proxool houseKeepingSleepTime bug修正 -
chenpi529:
楼主好牛逼
Proxool houseKeepingSleepTime bug修正 -
huangxinyu_it:
多谢楼主了
Proxool houseKeepingSleepTime bug修正 -
kokorodo:
谢谢了!
zk中文开发手册pdf版(基于3.5.1) -
superscorpio:
public void testImportInContex ...
MVEL2.0控制流
/** * * Asterisk通道工具类 * * * @author sunflower * * 时间:2010-7-26 下午01:11:41 * * Email:zhangxuehuaemail # gmail 点 com * */ public class ChanUtil { private ChanUtil() { } public static final String CHAN_LOCAL = "LOCAL"; public static final String CHAN_DAHDI = "DAHDI"; public static final String CHAN_ZAP = "ZAP"; public static final String CHAN_SIP = "SIP"; public static final String CHAN_IAX2 = "IAX2"; private static final Map<String, Integer> CHANNEL_TYPES = new HashMap<String, Integer>( 5); static { CHANNEL_TYPES.put(CHAN_LOCAL, 0);// 0 CHANNEL_TYPES.put(CHAN_DAHDI, 1);// 1 CHANNEL_TYPES.put(CHAN_ZAP, 1 << 1);// 2 CHANNEL_TYPES.put(CHAN_SIP, 1 << 2);// 4 CHANNEL_TYPES.put(CHAN_IAX2, 1 <<3);// 8 } /** * 判断通道类型是否被支持 * * @param channelType * 需要鉴定的通道类型 * @return 是true,否false */ public static final boolean contansChanType(String channelType) { return CHANNEL_TYPES.containsKey(StringUtils.upperCase(channelType)); } /** * 是否是本地通道 * * @param channel * 需要鉴定的通道 * @return 是true,否false */ public static final boolean isLocalChan(String channel) { return StringUtils.startsWithIgnoreCase(channel, CHAN_LOCAL); } /** * 是否是dahdi通道 * * @param channel * 需要鉴定的通道 * @return 是true,否false */ public static final boolean isDahdiChan(String channel) { return StringUtils.startsWithIgnoreCase(channel, CHAN_DAHDI); } /** * 是否是zap通道 * * @param channel * 需要鉴定的通道 * @return 是true,否false */ public static final boolean isZapChan(String channel) { return StringUtils.startsWithIgnoreCase(channel, CHAN_ZAP); } /** * 是否是sip通道 * * @param channel * 需要鉴定的通道 * @return 是true,否false */ public static final boolean isSipChan(String channel) { return StringUtils.startsWithIgnoreCase(channel, CHAN_SIP); } /** * 是否是IAX2通道 * * @param channel * 需要鉴定的通道 * @return 是true,否false */ public static final boolean isIax2Chan(String channel) { return StringUtils.startsWithIgnoreCase(channel, CHAN_IAX2); } /** * 窄化通道,获得简单通道字符串 例如: *<ul> * <li>DAHDI/2-1处理后DAHDI/2</li> * <li>SIP/102-d2dg3232ds处理后SIP/102</li> * <li>Local/FMPR-100@from-internal-7a11,1处理后Local/FMPR-100</li> * </ul> * * @param channel * @return */ public static String narrowChan(String realChannel) { if (StringUtils.isEmpty(realChannel)) { return ""; } if (StringUtils.contains(realChannel, "@")) { // 处理local通道 return StringUtils.substringBefore(realChannel, "@"); } else if (StringUtils.contains(realChannel, "-")) { return StringUtils.substringBefore(realChannel, "-"); } else { return realChannel; } } /** * 判断通道是否是FMPR通道 * <p> * 该通道在Fellow * me通道出现,Elastix1.3++,Local/FMPR-100@from-internal-7a11,1中100为实际被叫号码 * 而Local/FMGL-101@from-internal-7a11,1中101是100的fellow me * * @param channel * 需要鉴定的通道 * @return true or false */ public static boolean isFMPRChan(String channel) { return StringUtils.containsIgnoreCase(channel, "Local/FMPR"); } /** * 判断通道是否是FMGL通道 * <p> * 该通道在Fellow * me通道出现,Elastix1.3++,Local/FMPR-100@from-internal-7a11,1中100为实际被叫号码 * 而Local/FMGL-101@from-internal-7a11,1中101是100的fellow me * * @param channel * 需要鉴定的通道 * @return true or false */ public static boolean isFMGLChan(String channel) { return StringUtils.containsIgnoreCase(channel, "Local/FMGL"); } /** * 解析实际通道获取号码 * <p> * 支持的通道样式 * <ul> * <li>Local/100@from-internal-68d2,2</li> * <li>Local/FMPR-100@from-internal-7a11,1</li> * <li>SIP/101-b7604d00</li> * </ul> * * * @param channel * 实际通道 * @return 支持的通道返回号码字符串,否返回UNKNOWN */ public static String getExtenFromChannel(String realChannel) { if (StringUtils.isEmpty(realChannel)) { return ""; } // 解析内部通道 if (StringUtils.contains(realChannel, "@")) { if (isFMGLChan(realChannel) || isFMPRChan(realChannel)) { return StringUtils.substringBetween(realChannel, "-", "@"); } // Local/100@from-internal-7a11,1 else { return StringUtils.substringBetween(realChannel, "/", "@"); } } // 解析sip通道 例如SIP/100-0a208990 else if (isSipChan(realChannel)) { return StringUtils.substringBetween(realChannel, "/", "-"); } // 不支持的通道格式返回未知 else { return "UNKNOWN"; } } public static class AstState { /* from include/asterisk/channel.h */ /** * Channel is down and available. */ public static final int AST_STATE_DOWN = 0; /** * Channel is down, but reserved. */ public static final int AST_STATE_RSRVD = 1; /** * Channel is off hook. */ public static final int AST_STATE_OFFHOOK = 2; /** * Digits (or equivalent) have been dialed. */ public static final int AST_STATE_DIALING = 3; /** * Line is ringing. */ public static final int AST_STATE_RING = 4; /** * Remote end is ringing. */ public static final int AST_STATE_RINGING = 5; /** * Line is up. */ public static final int AST_STATE_UP = 6; /** * Line is busy. */ public static final int AST_STATE_BUSY = 7; /** * Digits (or equivalent) have been dialed while offhook. */ public static final int AST_STATE_DIALING_OFFHOOK = 8; } }
发表评论
-
使用 Local Channel呼叫时context 加/n与不加的区别
2010-09-09 16:37 1244示例代码 ManagerConnection ... -
asterisk1.6 manager 命令列表
2010-08-20 09:18 1558manager show commands Act ... -
TI技术常见名词解释
2010-08-13 10:20 1798转载于这里 ACD……Automatic ... -
Asterisk 通道变量
2010-08-13 10:18 2024${ACCOUNTCODE}: 用户计费帐号 sip.conf ... -
Elastix 2.0 has been released!
2010-08-10 13:33 1743Elastix 2.0 has been releas ... -
asterisk dialplan可用函数
2010-07-23 16:25 3714---------------------------- ... -
asterisk-1.6.2.6-2来电显示的bug修复以及asterisk-1.6.2.6-2 rpm重新打包
2010-05-24 11:49 2182asterisk-1.6.2.6-2来电显示的bug修复 ... -
asterisk1.6中通话播放
2010-04-21 20:21 1159Using Call Screening Another ... -
asterisk1.6支持的函数
2010-04-21 20:04 1191Installed Custom Functions:---- ... -
asterisk 中特殊的extension
2010-04-10 20:39 1463Special extensions 特殊的e ... -
Asterisk中实现桥接两个会议
2010-02-03 01:59 2388--------------------------- ... -
chan_dahdi.c 中dahdi_pvt的定义
2010-02-03 01:04 1803static struct dahdi_pvt { ast ... -
Asterisk自动报号优化
2010-01-25 16:37 1694自动报号详细细节见给asterisk添加自动报号功 ... -
Asterisk Manager api Originate的妙用
2010-01-25 00:03 5757Originate Using Asterisk Local ... -
Asterisk cmd ChanSpy,extenspy 通道监听与分机监听
2010-01-18 09:16 3856Asterisk cmd ChanSpy ChanS ... -
AST_CAUSE 定义
2009-11-24 13:14 2212文件位置asterisk-1.4.26.2/includ ... -
Asterisk CLI命令
2009-11-05 14:23 4896Asterisk 1.4.0 CLI commands ... -
Asterisk呼入队列分析
2009-10-21 11:42 4457asteriskjava监控打印 ... -
给asterisk添加自动报号功能
2009-09-03 12:00 3048asterisk自动报号 文章代码优化部分请 ... -
asterisk application命令
2009-07-27 13:50 2582常规指令Authenticate:鉴别用户VMAuthen ...
相关推荐
Asterisk AMI(Asterisk Manager Interface)接口是Asterisk PBX系统提供的一种用于远程管理和监控的强大工具。这个接口允许开发者通过编程方式与Asterisk进行交互,执行诸如控制呼叫、获取状态、监听通话等多种操作...
5. **使用通道(Channels)和拨号计划(Dialplan)**:Asterisk-java提供了对通道和拨号计划的操作,你可以查询现有的通道状态,修改拨号计划,甚至在运行时动态改变Asterisk的行为。 6. **实时监控**:通过...
Asterisk Manager Interface (AMI) 是一款强大的工具,它允许开发者通过TCP/IP协议与Asterisk PBX系统进行交互,实现远程管理和监控功能。本文档旨在为用户提供关于AMI的基本概念、协议细节、以及如何通过AMI来执行...
`BaseAgiScript` 是一个基础类,通常由 Asterisk 的 Java 库提供,它封装了一些基本的 AGI 功能,如接收请求、发送响应等。 ##### 3.2 方法实现 ```java public void service(AgiRequest request, AgiChannel ...
Asterisk Java是针对Asterisk AMI的Java库,允许开发者通过Java代码与Asterisk服务器进行交互,实现诸如创建呼叫、监控通道、更改拨号计划等功能。"asterisk-java-0.3.1-javadoc.rar" 是这个库的Java文档压缩包,...
这部分内容详细介绍了如何安装和配置这类干线,以便Asterisk系统能够通过传统的电话线路进行通信。 ##### 2. PSTN终结(Termination) PSTN终结是指将Asterisk系统的呼叫发送到PSTN网络上的过程。这通常涉及到与...
1. **Asterisk-Java API**:这是核心库,提供了各种类和接口,如ManagerConnection用于建立与Asterisk服务器的连接,ManagerEvent用于处理Asterisk事件,Channel接口代表电话通道,Call代表通话对象等。这些API使得...
1. **API接口**:Asterisk.NET提供了丰富的类和方法,如ManagerConnection用于建立与Asterisk服务器的连接,ManagerEvent用于处理从服务器接收的各种事件,Channel类则用于管理通话通道。 2. **事件处理**:通过...
矿用广播终端系统是一种应用于煤矿领域的重要通信工具,主要负责生产指挥调度、安全避险和应急救援等任务。为了满足煤矿工作中的多种需求,现代矿用广播终端系统需要具备实时广播、对讲以及高品质音乐播放等多种功能...
在面向对象编程中,类是对象的模板,定义了一组共享属性和方法的对象集合。 ### 35. クリア(する)- clear 清除是删除或重置数据的操作,常用于清理内存或初始化变量。 ### 36. クリック - click 点击是用户与...