XSwitch入门

基本概念

本来基本概念应该放到本文档最前面的部分,但考虑到大多数人都不想看基本概念,就放到了这里。

本章描述 XSwitch 系统中的基本概念和设计原则。


用户及组织架构

  • 用户指一个人,属性有用户名、密码、电子邮件、手机号等,可以登录 Web 系统。
  • 用户名只可以是字母与数字的组合,区分大小写,除“-_.”外不能有特殊符号。
  • 组织架构对应公司的组织架构。
  • 组织架构可以级连。
  • 组织架构与用户是一对多关系,比如一个部门有多个用户,但一个用户只属于一个部门。
  • 用户组是一组用户。
  • 用户组与用户是多对多关系,即一个用户可以属于多个组。
  • 用户与分机是一对多关系,即一个用户可以有多个分机。
  • 用户可以在呼叫中心中作为座席使用,可以把工号当做用户名和登录名。
  • 只有用户可以登录 Web 系统,根据设置,可以使用用户名、电子邮件、分机号、手机号等登录系统。
  • 在 API 调用时,为避免每次都使用密码调用,可以使用 Token,或者开发 Key 调用。
  • 系统默认有两个特殊用户:
    • ID 为0system用户,没有任何权限,不能登录系统,不能被删除。当对应不到真人的时候可以使用它,如不属于任何人的分机号,可以关联到该用户。
    • ID 为1admin用户,该用户是最高级的管理员,在简单的场景中可以使用,在复杂的权限管理下,每个管理员都应该使用自己的账号登录。

实际上,为了使系统保持简单,我们淡化了用户的使用。在最小最简的应用中,您可以只有一个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】键或用鼠标单击编辑框以外的任何区域。

如果不知道哪些区域可以编辑,则可以按下旁边的【编辑】按钮,则可编辑的区域会显示成输入文本框或选择框。

有的按钮也有即时编辑功能,一般用于“是”、“否”的场景。点击后会直接改变状态,并自动保存

排查问题