XSwitch用户手册
使用场景说明
XSwitch功能强大,但强大就代表复杂、配置繁琐。没有一种系统能很好的适应所有情况,XSwitch在各种使用场景中做了一些权衡。
本章列举了一些典型的使用场景,在实际使用中可以参考进行配置,以便最大限度地发挥XSwitch的功能,同时以不失简洁高效。
基本策略
你首先应该规划号段和号长,最好是有规律的,内部分机的号长最好也一致。XSwitch支持多种号长并存,但变长通常意味着你需要设置比较复杂的路由逻辑。以下是几种通用的分机号设置:
- 600~699:所有分机都以
6
开头,支持100个分机 - 800~899:所有分机都以
8
开头,支持100个分机 - 600~999:分机以
6
、7
、8
、9
开头,需要对每位数字设置路由,这时候建议扩展为4位 - 1000~1999:4位分机号
小型IP-PBX
小型IP-PBX通常只有一个管理员,管理员可以管理多个分机(如50
)。这时候没有必须建立多个管理员,除非用户需要登录系统进行一些自助服务,如看话单,听语音留言等。但国内用户不习惯使用语音留言,因而应用场景比较少。
如果需要用户账号,带来的复杂性不仅仅是创建账号那么简单,还要求管理员理解用户和分机的对应关系,用户密码的分发逻辑,重置账号密码、甚至权限管理等。
在小型IP-PBX中,大家都使用同样的域登录系统。如果在系统安装时在后台配置了force_domain
选项,则话机可以使用任何域注册,系统强制使用默认的域。
小型IP-PBX一般放在企业内网,员工也不会主动攻击系统,因而不需要太多考虑安全性。
所以,对于100
人以下的小公司,一种典型的分机和会议室配置是:
- 600~699:分机
- 300~399:会议室
- 800~899:IVR
- 0:拨打外线,路由在送出号码前做号码变换“吃掉”
0
- 1:直接送到外线,如
110
、119
以及所有手机号等
有分支机构的配置
如果你有多个分支机构,建议把系统放到公网服务器或云服务器上。不同分支机构规划不同的号段。
为了防止有人在公网上扫描系统,SIP服务器最好不使用默认的5060
端口,并且,把默认SIP Profile启用ban-ipv4-domain
参数。使用该参数要求使用域注册到系统,而不能使用IP地址。
多地组网
有时候,可能每个地方都放一台XSwitch服务器,这样,可以在XSwitch系统间互相做路由,跨地区的呼叫必须经过两个XSwitch才能接通。
两个XSwitch间可以使用IP认证。假设两个XSwitch服务器分别为XS1和XS2,则:
在XS1上创建分机xs2
,CIDR属性填入XS2的IP地址。同时,主叫名称和号码都设置为“PASS
”,这样即开启了主叫号码透传,所有从XS2上来的呼叫都认为是xs2
这个分机发起的呼叫,但是,仍能显示原来的主叫号码。
如果想为从XS2上来的呼叫指定不同的路由逻辑,则可以修改xs2
分机的呼叫源。
在XS2上做出局路由指向XS1的IP,如:
- 目的地类型:IP地址
- 目的地:XS1的IP地址
在XS2上也做对应的设置,双方就可以互拨,也可以使用对方的中继和路由规则出局。
多租户
XSwitch的设计理念是为了保持简单,仅支持一个租户,如果需要多租户,就为每个租户跑一个XSwitch Docker容器或者一个独立的虚拟机,每个租户都有自己的数据库和域名,XSwitch云就是这么做的。但是在有些情况下,这种强隔离手段有些重,因此,我们也提供轻量级的隔离。
系统有限的支持多租户功能。XSwitch底层完全支持多租户,但在系统界面上没有强隔离手段。
- 每个用户都有一个“域”字段,为不同用户填入不同的域
- 每个分机都有一个“域”字段,为不同分机填入不同的域
- 路由呼叫源可以为不同域的用户指定不同的呼叫源,这样他们的路由就不会交叉
- 为会议室指定域
- 为FiFo队列指定域
- 为Callcenter指定域
注意:如果用户登录XUI Web界面,则可以看到其它租户的分机等信息。如果是基本XSwitch API做二次开发,则完全可以忽略这个限制,在自己的界面上做租户隔离。
AXB中继
AXB是一种隐私号保护机制,A、B分别是两个真实号码,X是中间号,是一个虚拟号码。A如果想打B,则隐私平台可以做一个号码映射关系:X =(A, B)
,映射做好后,A打X可以呼到B,B打X呼到A,AB双方都只看到X,而互联不知道对方的真实号码,实现绑定关系。
在实际应用中,又有多种变体,一个X号码可以支持很多A、B的绑定关系,如(A1, B1)
、(A2, B2)
等。也可以每个X仅支持一对AB的绑定。
XSwitch云提供AXB中继,通过事先绑定的X号码,可以直接用X号码外呼。在使用时,用户只需要申请n个X号码,然后在自己的XSwitch中配置中继就好。
AXB平台提供的中继资源:
- ip:port,其中
axb
仅为示例,实际使用时需要替换为实际的域名 - 前缀:
8899
,为中继前缀,插入所有被叫号码的前面,用于区分用户以便计费 - X号码:若干
将X号码作为分机号
在XSwitch中可以有如下配置方式:
- 添加一个用户,用户名如
xnumbers
,用于管理这一批X号码 - 每个X号码配置为一个分机,属于
xnumbers
用户 - 创建一条默认路由:
- 呼叫源:默认,需要对应所有分机的呼叫源
- 字冠:(留空)
- 呼叫目的地类型:IP地址
- 目的地:前面提供的
ip:port
- 被叫号码变换:
+8899
这样,所有分机在呼叫任何号码时(如186xxxxxxxx),就会走到这条路由,自动前插8899
前缀,被叫号码变为8899186xxxxxxxx
,然后走到AXB平台。
使用路由的高级号码变换功能
使用路由的高级号码变换可能,可以使用普通的分机号,如(1000
~2000
),在外呼时进行主叫号码变换。首先,在数据库中创建一个表,如:
CREATE TABLE xnumbers (
a VARCHAR,
b VARCHAR
);
CREATE UNIQUE INDEX xnumbers_a ON xnumbers(a);
将号码对应关系插入表中,如(其中x1
、x2
为不同的X号码):
INSERT INTO xnumbers VALUES(`1000`, `x1`);
INSERT INTO xnumbers VALUES(`1000`, `x2`);
按上述方法做路由,设置如下号码变换:
- 主叫号码变换:
s/xnumbers/a/b/
- 被叫号码变换:
+8899
这样,所有分机号外呼时将查表,并自动进行号码变换,如果主叫号码匹配a
列,则自动变为b
列,被叫号码变换与上例相同。
无XUI配置
XSwitch支持无XUI运行,又分为以下几种:
- 无XUI,但使用XSwitch后台的API接口访问数据库,相当于自己写了一套XUI配置界面
- 无XUI,也不使用XUI的数据库,相当于原生的XSwitch
- 有XUI,但是不使用部分功能,如仅使用用户功能,但不使用路由功能。可以联系我们的工程师修改后台XML配置。
- 有XUI,但是不使用部分功能,如仅使用路由,但不使用用户和分机。可以联系我们的工程师修改后台XML配置。
详情参见如何使用不带XUI的XSwitch。
弹性伸缩
XSwitch支持弹性伸缩,但弹性伸缩通常需要二次开发,跟多种运维系统和工具对接。详情请咨询我们的工程师。