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平台如统信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
的字符)^name-rules。
系统中使用的按钮和动作使用以下约定:
- 新建/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
目录下有一系列静态配置文件,是底层软交换引擎需要的。
动态配置
动态配置存放在数据库里,会按需读取,因而,需要保持数据库稳定可用。
运行时数据
为了使系统运行高效,减少对数据库的访问和依赖,有些数据会直接加载到内存里。同时,为了能长久保存数据,这些数据也需要存储在数据库里。一般来说,当有相关的数据修改时,会首先修改数据库中的数据,然后使用【重载】操作,将数据重新加载到内存。根据重载模块的不同,有些模块在重载时不会影响通话,有些会影响通话。另外,系统重启时也会在启动时从数据库中加载这些数据,如果系统启动时数据库不可用,可能会影响系统启动。