XSwitch用户手册

使用场景说明

XSwitch 功能强大,但强大就代表复杂、配置繁琐。没有一种系统能很好的适应所有情况,XSwitch 在各种使用场景中做了一些权衡。

本章列举了一些典型的使用场景,在实际使用中可以参考进行配置,以便最大限度地发挥 XSwitch 的功能,同时以不失简洁高效。

基本策略

你首先应该规划号段和号长,最好是有规律的,内部分机的号长最好也一致。XSwitch 支持多种号长并存,但变长通常意味着你需要设置比较复杂的路由逻辑。以下是几种通用的分机号设置:

  • 600~699:所有分机都以6开头,支持 100 个分机
  • 800~899:所有分机都以8开头,支持 100 个分机
  • 600~999:分机以6789开头,需要对每位数字设置路由,这时候建议扩展为 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:直接送到外线,如110119以及所有手机号等

有分支机构的配置

如果你有多个分支机构,建议把系统放到公网服务器或云服务器上。不同分支机构规划不同的号段。

为了防止有人在公网上扫描系统,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 平台。

使用路由的高级号码变换功能

使用路由的高级号码变换功能,可以使用普通的分机号,如(10002000),在外呼时进行主叫号码变换。首先,在数据库中创建一个表,如:

CREATE TABLE xnumbers (
    a VARCHAR,
    b VARCHAR
);

CREATE UNIQUE INDEX xnumbers_a ON xnumbers(a);

将号码对应关系插入表中,如(其中x1x2为不同的 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 支持弹性伸缩,但弹性伸缩通常需要二次开发,跟多种运维系统和工具对接。详情请咨询我们的工程师。

系统状态