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 支持弹性伸缩,但弹性伸缩通常需要二次开发,跟多种运维系统和工具对接。详情请咨询我们的工程师。