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

系统状态