XSwitch用户手册

总体介绍

XSwitch 是一个电信级的 IP 电话软交换系统和综合实时音视频多媒体通信平台。

XSwitch 支持电话、传真、视频会议、呼叫中心等。支持主流的通信协议如 SIP、H323、WebRTC、RTMP 等,支持单机部署、云原生集群部署,支持无限扩容及动态伸缩。目标是为用户提供一站式语音、视频、会议解决方案,可以作为 IP-PBX、视频会议服务器、传真服务器、多协议网关、呼叫中心服务器等使用。XSwitch 提供 REST、Websocket 二次开发接口。XSwitch 基于开源技术构建,如 FreeSWITCH、PostgreSQL、Kamailio、Nginx 等。

XSwitch 是模块化、积木式按需叠加和无限伸缩扩容的通信产品,更可以通过定制支持集群部署,实现更强大的功能。XSwitch 的位置、组件和逻辑关系如下图所示:

其中,SIP 话机通过 SIP 协议接入 XSwitch,管理员可以通过 Web 浏览器进行系统管理和维护,也可以通过 WebRTC 打电话,静态 Web 页面都由 Web 服务器提供,动态 API 请求会由 Web 服务器转发到 XSwitch 端进行处理。

XSwitch 支持 HA 和集群,可以构建大规模电信级的通信系统和网络,详见XSwitch 系统架构与部署

产品介绍

  • XSwitch 是一个电信级的综合音视频通信平台及软交换系统。
  • XSwitch 是一个电话、呼叫中心和音视频会议平台,安全、稳定、高效、功能强大,能满足企业多样性的通信业务需求。
  • XSwitch 是一套电话软交换系统,可用于 IP-PBX、呼叫中心、视频会议服务、融合通信等。
  • XSwitch 有直观易用的中英文图形化操作界面,支持用户管理、网关配置、视频会议、路由设计、IVR 设计、呼叫队列、智能语音交互等。
  • XSwitch 支持全方位的互联互通,支持与 PSTN、SIP、H323、E1/T1、WebRTC、RTSP、RTMP、GB28181 等系统和协议对接,支持与 Agora(声网)、腾讯会议、微信小程序等对接。
  • XSwitch 是一个融合通信平台,支持语音、视频、即时通信、传真等。
  • XSwitch 平台提供开放的接口和 API,可对接各种 AI 平台、CRM 业务系统等。
  • XSwitch 是一个通信能力开放平台。
  • XSWitch 是一个企业通信中台。
  • XSwitch 云是一个 SSaaS(Soft-Switch as a Service,软交换即服务)平台。
  • XSwitch 云是一个 UCaaS(Universal Communication as a Service,统一通信即服务)平台。
  • XSwitch 系统是一个高度可定制的实时音视频通信平台,通过模块化设计、积木式叠加、开放的 API 接口,满足客户独一无二的功能需求。

XSwitch 的网址是 https://xswitch.cn

运行环境

XSwitch 运行于 GNU/Linux 环境,支持通用的 64 位服务器,支持虚拟机及 Docker 容器化、K8S 云原生部署,以及 Raspberry Pi 等 ARM 系统。支持阿里云、腾讯云、微软云、华为云、青云、Amazon 云等云端环境,支持私有化部署。支持国产 Linux 平台如华为欧拉(openEuler)、统信 UOS、麒麟等,支持国产 CPU 如 ARM、MIPS、麒麟等,支持鲲鹏和泰山系列服务器。

基本功能和特性

  • 系统内部呼叫:分机呼叫
  • 异地呼叫:分支机构间呼叫
  • 语音和视频会议:多方语音电话会议、高清视频会议 MCU
  • 小型呼叫中心:IVR 及座席排队
  • 点击拨号
  • 录音、录像、直播
  • 连接传统电话和手机
  • 连接 PSTN 或 IMS 线路
  • 支持 SIP
  • 支持 UDP/TCP/TLS 连接
  • 支持 WebRTC,在浏览器中打电话
  • 传统设备对接
  • 移动端 App
  • Android/iOS SIP 客户端
  • 开放的 API
  • 可对接各种 CRM 及第三方呼叫中心系统
  • 可二次开发、一切尽在掌控
  • 支持第三方功能模块
  • 多维度统计图表
  • 在线 SIP 跟踪
  • 在线日志跟踪
  • 支持双机高可用(HA)部署
  • 支持双平面和多平面部署
  • 中英文 Web 管理界面
  • 支持 PCMA/PCMU/OPUS/G722/H264/H265/VP8/VP9 编码
  • 健康的生态环境

高级功能和特性

  • 连接到 IMS 网络
  • 4GVoLTE、5GNR 视频呼叫
  • 连接到 Agora 网络
  • 连接到腾讯 TRTC 网络
  • 连接到微信小程序
  • BFCP 双流支持
  • H323
  • 推流到 RTMP
  • RTSP/RTMP 拉流
  • GB28281 摄像头接入
  • xTalk 视频会议

具体功能根据软、硬件版本和型号可能有所不同。不同型号的产品与本文的描述也可能有所出入。

系统参数

根据硬件不同,所支持的用户量也不同。以 8 核 8G 内存的服务器为例。

  • 单机可支持 1 ~ 10000 路 SIP 注册
  • 1 ~ 5000 路(Channel)并发呼叫
  • 1 ~ 800 路视频呼叫
  • 1 ~ 400 路视频会议融屏
  • 最大可支持 36 万 BHCA(Busy Hour Call Attempt)

安装

  • 如果是购买硬件,系统在出厂时已安装完毕,可直接开始使用。
  • 如果是购买软件,一般以 Docker 镜像形式安装部署,您拿到本手册的时候系统应该已经安装好了。
  • 如果是从软件安装,可以参考《XSwitch 下载安装指南》

基本架构

  • XSwitch 在生产环境部署时,一般搭配 PostgreSQL 数据库和 Nginx Web 服务器部署。
  • XSwitch 内置 XUI,不依赖任何其它外置系统和开发语言。
  • XSwitch 支持积木式添加更多功能模块。
  • XSwitch 可以和 Kamailio 结合,构建大规模、电信级通信网络。

部署方式

XSwitch 支持以下几种部署方式:

  • 小型嵌入式系统
    • 使用 OpenWRT 系统,使用 SQLite 数据库。
  • 小型 Linux 系统
    • 基于 Debian 10/11 部署,或基于 Docker 容器部署,使用 PostgreSQL 数据库。
  • 大型系统
    • 基于 Debian 10/11 部署,或基于 Docker 容器部署,使用 PostgreSQL 数据库,使用 Kamailio 与 OpenResty 做 SIP 和 Web 代理。
  • 定制化部署
    • XSwitch 可以定制化部署在其它 Linux 系统或 Windows 平台上,支持 K8S 云原生部署。定制化部署超出了本文档的范围。

名词术语

下面是在 XSwitch 中用到的一些名词术语,跟业界同类产品可能有所不同,但都有相应的对应关系。在实际使用时,由于您安装的版本不同,并不是所有的版本中都会用到所有这些名词。

  • VoIP:Voice over IP,即基于 IP 的语音传输。随着时代发展,VoIP 现在也支持视频,也可以认为是 Video over IP。
  • SIP Server:SIP 服务器。
  • PBX:Private Branch eXchange,小交换机,通常都是 SIP Server。
  • SBC:Session Border Controller,会话边界控制器。一般用于不同 VoIP 网络的分界点,它可以转换信令和媒体流,并保护运营商或企业 VoIP 网络。
  • B2BUA:Back to Back User Agent,背靠背用户代理。通过 XSwitch 通话的双方都是独立的通道,通过 XSwitch 背靠背的连接。
  • 网关:类似 SBC,连接不同的 VoIP 网络,通常具有比 SBC 更强的路由功能和更多的路由策略。
  • 网元:网络中的一个设备或具有相对独立功能的组件,如 PBX 就是一个网元。
  • 中继:SIP Server 间一个点对点的连接,中继分为出、入和双向三种。
  • 中继组:一组中继。中继组中包含出中继的负载分担策略。轮循、按百分比选择等。
  • 黑白名单:黑名单内的 IP 和号码不能打通,白名单内的 IP 和号码能打通。
  • 路由码:8 位字母或数字(可以包含“-_”等连字符,不能有其它字符和空格),可以在主叫号码、被叫号码,或 SIP 头域中携带。用于区分同一中继来话不同的主叫类型,进而可以选择不同的出局路由。
  • 呼叫源:呼叫从哪里来,用于选路由。
  • 目的地:呼叫到哪里去,可以是中继或中继组。
  • 号码变换:在路由的过程中可以变换主、被叫号码,也可以在中继组或中继上做变换。
  • 路由表:描述呼叫从哪里来到哪里去的表。
  • 路由:名词:路由表中的一条路由(一行);动词:选路,根据当前通话的参数从路由表中选择一条路由。
  • 标志符:是一个字符串,除“-_.”外不允许有特殊符号,如不能有空格,中文以及有特殊含义的符号如“&$@\”等。
  • 分机:系统内的一个电话号码,必须属于一个用户。
  • 外线号码:从运营商处取得的电话号码,通常对应一条电话线或虚拟的电话线路。
  • 用户:能登录 Web 界面的管理员,或拥有分机的用户。
  • 多租户:在同一个系统中支持多个不同的组织、分支机构、公司等,不同租户中可以有相同的电话号码。XSwitch 底层完全支持多租户,但 Web 界面没有严格的区分。
  • 域:域是 SIP 中的概念,也可以将租户分开,系统使用前需要先选定一个域。域可以是一个域名(FQDN,Fully Qualified Domain Name),也可以是一个 IP 地址。

约定

本手册内容和排版遵循以下约定:

  • 章节号或重要的内容会以粗体或黑体表示,有的地方可能有“重要”或“提示”字样。
  • 系统中会用到一些标志符,它们通常以等宽字体表示,如:context-1
  • 菜单或按钮顺序以下列形式给出:【一级菜单】⇨【二级菜单】⇨【按钮】。
  • 有些内容会有(TLDR)标志,即内容太长可以先不看(Too Long Don't Read),这些内容在快速阅读时可以先忽略。

系统中用到的字符串值(通常是名称字段的约束)遵循以下约定:

  • 表达式:大小写字母、数字及“-_.”,不能有其它字符,如“$/\;@%'"[]{}()”等。
  • 任意字符串:任意合法的 UTF-8 字符串,不包含控制字符(ASCII 码为0~31的字符),目前,并不是所有的名称字段都允许输入空格和中文。具体命名规则见各对象的使用说明。

系统中使用的按钮和动作使用以下约定:

  • 新建/New:弹出新建对话框,可以新建一条记录,成功后显示在列表页第一行
  • 添加/Add:有时候,有的页面上,资源是存在的,但是需要添加到某个列表时,比“新建”语义更明确一些
  • 删除/Delete:删除一行或多行
  • 导入/Import:弹出导入框
  • 导出/Export:导出 Excel 或 CSV 文件
  • 刷新/Refresh:在不刷新整个页面的情况下刷新数据
  • 保存/Save:保存当前修改
  • 重载/Reload:将当前数据应用到运行时的程序中
  • 上传/Upload:上传文件
  • 下载/Download:下载相关资源
  • 快速删除模式/Fast Delete Mode:在该模式下可快速删除多条数据,而不需要确认

系统中的对象,有以下一些通用的字段和属性:

  • ID/ID:唯一标志
  • 名称/Name:最大 20 个汉字
  • 描述/Description:最大 250 个汉字
  • 创建时间/Created At
  • 更新时间/Updated At
  • 删除时间/Deleted At
  • 启用/Enabled
  • 状态/Status

理解系统配置和运行机制

XSwitch 系统在运行期间基本分为以下几个部分:

  • 配置文件和数据
    • 静态配置文件
    • 动态配置(数据库)
  • 运行时数据

静态配置文件

XSwitch 的静态配置文件需要在系统后台配置,这些配置一般在系统安装和初始化时配好,后续一般不需要改动。有些配置参数可能在修改后立即生效,但一般可以认为修改后需要重启系统或重新加载数据。

这些配置文件有:

  • xtra_config.lua:该文件是系统 Lua 脚本和 Rest 框架相关的配置,参见\ref{xtra-config} /xswitch-user/xtra-config/
  • XML:在/usr/local/freeswitch/conf目录下有一系列静态配置文件,是底层软交换引擎需要的。

动态配置

动态配置存放在数据库里,会按需读取,因而,需要保持数据库稳定可用。

运行时数据

为了使系统运行高效,减少对数据库的访问和依赖,有些数据会直接加载到内存里。同时,为了能长久保存数据,这些数据也需要存储在数据库里。一般来说,当有相关的数据修改时,会首先修改数据库中的数据,然后使用【重载】操作,将数据重新加载到内存。根据重载模块的不同,有些模块在重载时不会影响通话,有些会影响通话。另外,系统重启时也会在启动时从数据库中加载这些数据,如果系统启动时数据库不可用,可能会影响系统启动。

欢迎