XSwitch入门
基本概念
本来基本概念应该放到本文档最前面的部分,但考虑到大多数人都不想看基本概念,就放到了这里。
本章描述 XSwitch 系统中的基本概念和设计原则。
用户及组织架构
- 用户指一个人,属性有用户名、密码、电子邮件、手机号等,可以登录 Web 系统。
- 用户名只可以是字母与数字的组合,区分大小写,除“
-_.
”外不能有特殊符号。 - 组织架构对应公司的组织架构。
- 组织架构可以级连。
- 组织架构与用户是一对多关系,比如一个部门有多个用户,但一个用户只属于一个部门。
- 用户组是一组用户。
- 用户组与用户是多对多关系,即一个用户可以属于多个组。
- 用户与分机是一对多关系,即一个用户可以有多个分机。
- 用户可以在呼叫中心中作为座席使用,可以把工号当做用户名和登录名。
- 只有用户可以登录 Web 系统,根据设置,可以使用用户名、电子邮件、分机号、手机号等登录系统。
- 在 API 调用时,为避免每次都使用密码调用,可以使用 Token,或者开发 Key 调用。
- 系统默认有两个特殊用户:
- ID 为
0
的system
用户,没有任何权限,不能登录系统,不能被删除。当对应不到真人的时候可以使用它,如不属于任何人的分机号,可以关联到该用户。 - ID 为
1
的admin
用户,该用户是最高级的管理员,在简单的场景中可以使用,在复杂的权限管理下,每个管理员都应该使用自己的账号登录。
- ID 为
实际上,为了使系统保持简单,我们淡化了用户的使用。在最小最简的应用中,您可以只有一个admin
用户,但它下面可以挂很多分机。
分机
- 一个用户可以有 0 个或多个分机。创建一个用户可以选择同时创建一个同名分机。
- 在简单场景下,可以只有一个
admin
用户,其它分机都挂在该用户下(当然也可以挂在system
用户下)。 - 也可以用户与分机一一对应。
- 分机可以使用密码或 Token 鉴权,如果在 Websocket/WebRTC 端使用,可以使用用户登录,再获取分机的 Token(详见 API 手册)。
- 如果是 SIP 客户端软件,在可以获取 Token 的情况下,可以/建议使用 Token 鉴权,如果是硬件话机则仍使用用户名/密码登录。
- 用户管理分机,分机用于打电话。
- 分机必须属于一个用户,在小规模应用场景下,为每个分机都建立一个对应的用户可能有点复杂,这时候,可以让分机属于
system
用户。
权限
权限指 Web 界面和 API 的使用权限。权限采用业界流行的 RBAC(Role Based Access Control,基于角色的访问控制)设计。可以给一个用户分配多个不同的角色,不同的角色可以分配不同的权限。用户总是从自己所属的角色上获取权限。权限用于控制某些菜单对用户是否可见,某些 API 对用户是否可以访问等。
呼叫方向和呼叫流程
呼叫方向有入局(Inbound、Incoming)和出局(Outbound、Outgoing)呼叫两种。所有方向都是相对于 XSwitch 本身而言的。即呼叫的方向是相对的,看参照物是谁。比如我打了你一拳,我就是出拳,而对于你就是入拳了。
一个通常的误解是用户描述电话故障的时候通常说电话打不出去,这时候,他(她)其实是站在自己(电话机)的角度说的,对于 XSwitch 而言,可能是入局故障(从话机到 XSwitch),也可能是出局故障(从 XSwitch 到落地网关或运营商)。所以在排查电话故障时,一定注意参照物,把呼叫流程搞清楚再下手。
XSwitch 是一个 B2BUA(背靠背用户代理),一个典型的呼叫流程如下:
路由
问君能有几多愁,恰似在 XSwitch 中配路由。
路由是本系统中最最重要的概念。路由即电话从哪里来到哪里去。呼叫源用于描述电话从哪里来,目的地描述电话到哪里去。在路由上可以做“号码变换”,设置计费规则,是否自动录音,设置不同时间段目的地等。
本系统路由均根据被叫号码判断。在默认配置中,来自“本地分机”(即注册分机)的呼叫,一般呼叫源为default
,来自中继网关的外部呼叫,一般为public
,在实际部署时可能有所不同。
呼叫源是针对来话而言的,系统允许在最先收到来话的地方设置关联的呼叫源,如本地注册用户来话、中继来话、网关来话等。
DID 和 DOD 中的号码映射规则优先级要高于路由,除此之外,所有送到系统的呼叫都要通过路由决定去向,详见路由。
呼叫权限
呼叫权限指分机的呼叫权限,可以在分机上指定。如果分机的呼叫权限大于或等于路由上设置的呼叫权限,电话就能通,反之不通。
会话和通道
会话(Session)和通道(Channel)在 XSwitch 中是一对一的。XSwitch 是一个背靠背的用户代理(B2BUA)。分机 A 通过 XSwitch 打给分机 B,在 XSwitch 内会产生两个通道,也就是两个会话。同理,分机 A 通过 XSwitch 拨打一个手机号,也会产生两个通道。分机或外线打电话到 IVR 或会议,只会产生一个通道。每一个通道都有一个唯一的 UUID(Universally Unique Identifier,通用唯一识别码,全球唯一,包含 36 个字符,如“00000000-0000-0000-0000-000000000000
”)。
XSwitch 的许可证是按通道授权的,分机打 IVR 或会议只占用一个通道授权,但通过网关打外线电话则占用两个授权。
通话
通话指一路电话、一个电话、或一通电话,指通信的两个实体间逻辑的概念。如分机 A 打给 B,称为一路通话,它包含两个通道。三方通话其实也是一个通话,但是会有三个通道,每个通道代表参与通话的一方。
WebRTC
XSwitch 支持基于 SIP 信令(SIP Over Websocket)及 Verto 信令的 WebRTC 通话,但是,WebRTC 通话通常需要相应的https
及相关证书。如何部署 WebRTC 通话不在本文档范围内。
如果已经部署了 WebRTC 功能,则可以在最新版的 Chrome、Firefox、Microsoft Edge 等主流浏览器中使用 WebRTC 通话。
WebRTC 通话支持 PCMA、PCMU、OPUS、H264、H265、VP8 等音视频编码。
可以通过以下方法设置证书。
多语言支持
Web 界面支持多种语言,点击右上角的国旗图标,可以进行中英文切换。如果系统中安装超过三种语言包,则语言选择会以下拉菜单显示。
浏览器
系统界面使用跨浏览器框架 Ant Design 提供跨浏览器支持,支持主流浏览器较新的版本。
WebRTC 功能支持音、视频通话,目前测试支持最新的桌面版 Chrome、FireFox、Opera、Edge、Safari 等浏览器、Android 版 Chrome 和 FireFox、iOS 版 Safari。
WebRTC 技术比较新,更新也比较快,所以请保持浏览器版本最新。
如果在使用过程中发现功能不正常,请使用最新版本的 Chrome 或基于 Chrome 内核的 Microsoft Edge 浏览器,因为这是我们研发和测试过程中使用最多的浏览器。
界面使用约定
系统界面简单直观。大部分页面在设计时都遵循以下约定,下面以分机页面为例加以说明。
列表页
如分机列表,列表页列出所有分机,有翻页功能。如果分机数量比较多,可以选择每页显示多少个分机。设置会存到浏览器的缓存里,仅对当前浏览器有效。
在该页面上通常有一个【新建】按钮可以新建一个分机。也支持导入、导出、批量设置分机等操作。
详情页
点击一个分机号码,可以进入详情页,显示详细信息。
在该页面上有一个【编辑】按钮,点击后进入编辑状态,编辑完毕后可以保存。
可点击进入详情页的区域通常有其它颜色(如绿色)显示,其他参数黑色显示。
即时编辑
有些页面,如 SIP Profile 管理页面,有即时编辑(In Place Edit)功能。即时编辑适用于一个对象有很多属性,但你只想修改其中某一项内容的情况。
点击某一可编辑的区域时,则出现编辑框,修改内容后按【回车键】,可以退出编辑状态并自动保存。如果想放弃编辑,则可以按键盘上的【ESC】键或用鼠标单击编辑框以外的任何区域。
如果不知道哪些区域可以编辑,则可以按下旁边的【编辑】按钮,则可编辑的区域会显示成输入文本框或选择框。
有的按钮也有即时编辑功能,一般用于“是”、“否”的场景。点击后会直接改变状态,并自动保存。