把分机信息存储到redis,需要验证的时候,从redis读取存储的信息转换成XML格式,让FreeSWITCH完成验证。优点就是redis的读取性能非常快,可以让FreeSWITCH支持大量的分机,并且配置可以实时生效。
配置说明
cti_exten@domain [哈希表]
- key 分机名
- value
|
- param 参数
- password 分机密码
- a1-hash md5(username:realm:passwd),如果担心明文密码不安全,可以使用a1-hash。
- auth-acl 设置允许注册的IP 。比如 192.168.0.100/255,cidr格式,多个用逗号隔开。
- allow-empty-password 是否允许空密码
- sip-forbid-register 是否禁止注册。
- user-agent-filter 终端的user-agent必须和这个设置匹配才可以注册。这个配置是一个正则表达式。
- max-registrations-per-extension 最大允许同时注册的终端数量,就是一个账户可以在多少个地方同时注册。
- variable 变量,可以通过模板自己添加
- sip-force-contact 使用NDLB-connectile-dysfunction-2.0 ,可以解决NAT问题。
- sip-force-expires 强制注册间隔,UDP注册方式,如果分机在内网fs在外网,为了维持NAT,要设置为60。
- attribute 属性
- cacheable 缓存时间 单位毫秒,如果需要修改配置实时生效,就不能设置缓存,设置true永不过期。
- number-alias 别名,比如分机号是的字母,你可以配置一个数字的别名。
分机注册状态记录到redis
cti.json
|
如果分机注册会在哈希表registrations添加一个记录,如果分机注销会删除这个记录。
key:分机号
value:注册信息
|
分机呼叫信息记录到redis
cti.json
|
如果分机呼出或者呼入,哈希表calls添加一个记录,value就是呼叫信息。如果配置了写入hash表,最后一个挂断的通话信息会缓存。
key:分机号
value:呼叫信息
|
current: 最后状态发生变化的uuid
notify:current指向UUID通道的状态,answer,callin,callout,hangup
activity: 当前所有的通话
uuid: 这个通话的通道变量,fields可以配置要记录的通道变量。
Caller-Profile-Created-Time:通话的发起时间,单位是微妙的时间戳。
Caller-Channel-Answered-Time: 通话的接通时间,单位是微妙的时间戳。
Caller-Channel-Hangup-Time: 通话的挂断时间
Answer-State: 通话状态