快立之年
asterisk设置呼叫队列
笑向天 发表于 2008-05-09 15:40:58
一个call建立到平台时,需要找相应的Context(拨号规则,没有拨号规则的是不允许进行呼叫的),所以在建立终端就。必须指定相应的context.
第一步:
使用freepbx建立终端20001,20002,20003。用freepbx建立的默认context是 from-internal。建立完成之后.需要允许这三个终端进行拨打电话
故打开extensions.conf。修改 [from-internal] context
增加
exten=>_2XXXX,1,Dial(SIP/${EXTEN})
此句代码意思: 呼入终端 _2XXXX 以2开头的5位号码认可
第二步:增加Agent ,每个座席被认为是一个Agent
修改agents.conf。
增加
agent => 20003,20003,agents1
agent => 20002,20002,agents2
agent => 20001,20001,agents3
有三个参数,第一个参数是座席号码,第二个参数是密码,第三个参数是用户名
第三步,增加队列
修改queues.conf,增加一个队列
[gmengqueue]
music=default
strategy=ringall
timeout=15
retry=5
wrapuptime=0
maxlen = 0
announce-frequency = 0
announce-holdtime = no
member => Agent/20001
member => Agent/20002
member => Agent/20003
这个队列中有三个座席20001,20002,20003
第四步:设置登录.20001是一个终端,同时也是一个座席,登录了终端并不一定会登录座席.
20001登录之后,需要拨打一个固定号码去登录座席。
修改 extensions.conf
增加
exten=>1000,1,AgentCallbackLogin(||${CALLERID}@from-internal)
exten=>1001,1,AgentCallbackLogin(||l)
故拨打20001拨打10000号后会有语音提示 进行登录座席,可惜是英文的。真正运营的时候需要进行一下本地化,
先提示让你输入号码,输入20001#,输入密码20001#.第三个参数没有听清楚,但也输入20001#也是没有问题的
现在20001注册座席成功了
第5步,设置拨打方案.
一个电话打入,首先是接通,然后播放音乐等待座席选择。使用如下设置
exten=>8000,1,Answer
exten=>8000,2,Ringing
exten=>8000,3,Wait(2)
exten=>8000,4,Queue(gmengqueue)
exten=>8000,5,Hungup
这样一个完整的呼叫队列方案完成了
-------------------------------
附:
-----
extensions.conf
[from-internal]
exten=>1000,1,AgentCallbackLogin(||${CALLERID}@from-internal)
exten=>1110,1,AgentCallbackLogin(||l)
exten=>_2XXXX,1,Dial(SIP/${EXTEN})
exten=>8000,1,Answer
exten=>8000,2,Ringing
exten=>8000,3,Wait(2)
exten=>8000,4,Queue(gmengqueue)
exten=>8000,5,Hungup
-------
agnets.conf
autologoff=15
wrapuptime=5000
ackcall=no
group=1
agent => 20003,20003,agents1
agent => 20002,20002,agents2
agent => 20001,20001,agents3
------------
queues.conf
[gmengqueue]
music=default
strategy=ringall
timeout=15
retry=5
wrapuptime=0
maxlen = 0
announce-frequency = 0
announce-holdtime = no
member => Agent/20001
member => Agent/20002
member => Agent/20003
--------------------------------------------------
信令网络层协议Q.931
笑向天 发表于 2008-05-09 15:40:01
|
信令网络层协议Q.931 |
![]()
![]()
www.OpenVoIP.cn 2005-12-13 10:15:25 来源:本站原创 作者:
![]()
Q.931,作为电信体系的网络层协议,主要为 ISDN 提供呼叫建立及维护和终止两设备间的逻辑网络连接。Q.931 是电信体系网络层(第三层)协议之一,由 ITU Q 系列 Q.930-931 文件详细说明。
在第三层呼叫建立期间,有三方参与发送和接收信息:
- 呼叫方,
- ISDN 交换机,
- 接收方。
下面是一个关于呼叫设置步骤的例子:
- 呼叫方发送一个建立呼叫信息(SETUP)给交换机;
- 如果 SETUP 通过,交换机发送一个 CALL PROCeeding 信息给呼叫方,并发送一个 SETUP 信息给接收方;
- 接收方收到 SETUP 。如果该信息正常,它就振铃电话并发送一个 ALERTING 信息给交换机;
- 交换机转发该 ALERTING 信息给呼叫方;
- 当接收方应答呼叫后,就发送一个 CONNECT 信息给交换机;
- 交换机转发该 CONNECT 信息给呼叫方;
- 呼叫方发送一个 CONNECT 响应信息给交换机;
- 交换机转发该 CONNECT 响应信息给接收方;
- 呼叫方发送 CONNECT ACKnowledge 信息到交换机;
- 交换机转发该信息到接受方;
- 完成。连接建立成功。
ISDN 设备具有的服务和特征在可选字段 ― 业务预置文件 ID (SPID)中规定,但它们只能在呼叫建立之前的设备初始化时期被访问。SPID 的一般格式是 ISDN 线路的10位数字电话号码,并具有前缀和后缀以识别在线特征,但其格式也可由电信公司决定。
协议结构
Information Field Structure ― Information Field 是可变长字段,包括 Q.931 协议数据:
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
|
Protocol Discriminator |
|||||||
|
0 |
0 |
0 |
0 |
Length of CRV |
|||
|
Call Reference Value (1 or 2 octets) |
|||||||
|
0 |
Message Type |
||||||
|
Mandatory & Optional Information Elements (variable) |
|||||||
· Protocol Discriminator (1 octet) ― 识别第3层协议。如果是 Q.931 头,该值恒为0816。
· Length (1 octet) ― 表示下一字段即 CRV 的长度。
· Call Reference Value (CRV)(1或者2 octet) ― 唯一地识别用户网络接口上的每个呼叫。在呼叫开始时分配该字段值。当该呼叫清除后,该字段值可以用于其它呼叫过程。
· Message Type (1 octet) ― 识别信息类型(也就是 SETUP、CONNECT 等)。该字段决定需要并许可哪些其它信息。
· Mandatory and Optional Information Elements (variable length) ― 可选项,主要取决于 Message Type。
工作知识总结
笑向天 发表于 2008-05-09 15:16:37
这段时间有空,做一下四年来的工作知识总结。
1:系统架构
A:
架构设计要达到的目标:
1:可靠性。软件系统必须非常可靠。不能动不动就当机
2:安全行。系统的安全性非常重要
3:可扩展性。用户需求总是经常变化的,不能应为需求变化而使原有的代码发生大的改变
4:可定制化。这一点非常重要.软件的最终目的是面向市场,面每个用户所需要的并不相同.对不同的用户提供不同的版本.这就需要软件能够定制.
5:可以升级.当有新的技术出现是,可考虑适当引用.很多软件寿命比较短,就是不能引起新的东西
6:可维护性。软件系统的维护包括两方面,一是排除现有的错误,容易发现和找出当前系统错误.Log在此处就显得非常重要,特别是通信软件.
需要提供不同的log
二是将新的软件需求反映到现有系统中去。
7:客户体验.
B:一个企业web应用软件需要考虑的东西
B:常用架构设计
第一步是把系统划分模块.模块划分一般有两种划分方式,并且经常同时使用.一按功能划分.二是按系统层次划分
比如一个IM系统
IM系统从功能上可以分为.发送IM消息, 传文件,传图片,传语音.等等
从系统层次上可以是表示层,显示用户界面,领域层,数据层.传输层等等.(Layers)
第二.门面设计(facade模式)
虽然模块划分了一个子系统.但是还不是很容易使用.用户需要使用这些子系统.而且这些系统还需要互相打交道
比如一个IM系统.
IM系统提供很多功能.如传文件.传图片.传语音.远程控制等.如果直接同这些模块进行打交道,很明显
这个代码非常繁琐.代码难于维护和扩展.故此需要设计一个facade模式.提供统一的门面入口.
用户不直接同这些子系统打交道.而是提交facade.则facade直接处理.如下图:
user->facade|->传IM
|->传文件
|->远程控制
可以参见RTX的系统架构
通过这两种方法.基本上解决了层次与层次同层次之间的关系的问题.下面的一些模式可以使用在子系统当中
具体知识
2:webwork,structs ,Velocity 模板引擎
用xml和sevlet来构建页面
3:spring
4:hibernate.
sql 线程池
5:协议
xmpp radius
6:软交换
gnugk sip asterisk IAX2 IVR TTS
7:工作项目
8:其它知识
com组件编程
Linux下常用命令及linux编程
加解密
JNDI
JMX
ThreadLocal
bat文件写法
log
FCKeditor
js 树
8:电子商务,企业管理
crm
工作流
ERP
OA
