若接收烟台小樱桃网络科技有限公司(以下称为“小樱桃”)的此份文档,即表示您已同意以下条款。若不同意以下条款,请立即停止使用本文档。
本文档版权所有烟台小樱桃网络科技有限公司。保留任何未在本文档中明示授予的权利。文档中涉及小樱桃的专有信息。未经小樱桃事先书面许可,任何单位和个人不得复制、传递、分发、使用和泄漏该文档以及该文档包含的任何图片、表格、数据及其他信息。本网页版文档仅在xswitch.cn上发布。
本产品符合有关环境保护和人身安全方面的设计要求,产品的存放、使用和弃置应遵照产品手册、相关合同或相关国法律、法规的要求进行。
本文档按“现状”和“仅此状态”提供。本文档中的信息随着小樱桃的产品和技术的进步将不断更新,小樱桃不再通知此类信息的更新。
烟台小樱桃网络科技有限公司
地址:烟台市高新区蓝海路1号
邮编:264000
电话:0535-6753997
XSwitch是一个电信级的IP电话软交换系统和综合实时音视频多媒体通信平台。
XSwitch支持电话、传真、视频会议、呼叫中心等。支持主流的通信协议如SIP、H323、WebRTC、RTMP等,支持单机部署、云原生集群部署,支持无限扩容及动态伸缩。目标是为用户提供一站式语音、视频、会议解决方案,可以作为IP-PBX、视频会议服务器、传真服务器、多协议网关、呼叫中心服务器等使用。XSwitch提供REST、Websocket二次开发接口。XSwitch基于开源技术构建,如FreeSWITCH、PostgreSQL、Nginx等。
XSwitch是模块化,积木式按需叠加和无限伸缩扩容的通信产品,更可以通过定制支持集群部署,实现更强大的功能。XSwitch的位置、组件和逻辑关系如下图所示:
其中,SIP话机通过SIP协议接入XSwitch,管理员可以通过Web浏览器进行系统管理和维护,也可以通过WebRTC打电话,静态Web页面都由Web服务器提供,动态API请求会由Web服务器转发到XSwitch端进行处理。
XSwitch的网址是 https://xswitch.cn 。
XSwitch运行于GNU/Linux环境,支持通用的64位服务器,支持虚拟机及Docker容器化、K8S云原生部署,以及Raspberry Pi等ARM系统。支持阿里云、腾讯云、微软云、华为云、青云、Amazon云等云端环境,支持私有化部署。支持国产Linux平台如统信UOS、麒麟等,支持国产CPU如ARM、MIPS、麒麟等,支持鲲鹏和泰山系列服务器。
具体功能根据软、硬件版本和型号可能有所不同。不同型号的产品与本文的描述也可能有所出入。
根据硬件不同,所支持的用户量也不同。以8核8G内存的服务器为例。
XSwitch支持以下几种部署方式:
-_.
”外不允许有特殊符号,如不能有空格,中文以及有特殊含义的符号如“&$@\
”等。本手册内容和排版遵循以下约定:
context-1
。(TLDR)
标志,即(Too Long Don't Read
),这些内容在快速阅读时可以先忽略。系统中用到的字符串值(通常是名称字段的约束)遵循以下约定:
-_.
”,不能有其它字符,如“$/\;@%'"[]{}()
”等0~31
的字符)系统中使用的按钮和动作使用以下约定:
系统中的对象,有以下一些通用的字段和属性:
任何管理员拿到一个新系统都想快速做一个体验,而不是先阅读冗长的手册。本章将带你快速打通第一个电话。
系统默认的管理员admin
密码是admin
,登录Web界面后可以看到一些统计信息和图表。
系统默认自带1000~1019
共20个分机,密码都是1234
。你可以使用任何一个分机注册到系统打电话。
可以用SIP话机或软电话注册到系统(注册端口可通过【高级配置】⇨【SIP】⇨default
查看SIP端口,默认7060),常用的注册选项是:
1000
1234
有时候,你使用的域和IP地址不同,或者“域”只是个标志字符串不是一个合法的域名(FQDN),或者你在内网上注册根本无法解析这个域名2,这时候你就需要填入:
通过这种方法,你的SIP终端就会将SIP注册及呼叫消息发到你指定的IP地址上,但SIP消息中的域是你指定的域名。
还有时候,你的SIP终端要求输入“鉴权用户名”,XSwitch默认的设置是它必须跟你的用户名相同。当然你熟悉了本系统,可以参考本手册后面的章节修改这个默认设置。
注册成功后,可以尝试拨打回声测试号码9196
,一切正常的话它应该自动应答,你就能听到自己的声音。
注册两个不同的分机可以互打。
多个分机可以同时呼入3000
会议室开会。如果你的终端支持视频(并且购买了XSwitch的视频许可),也可以进行视频会议。
如果拨打系统外的电话,如手机,则需要添加一个网关。具体网关的添加方法见后面的章节。
本章描述XSwitch系统中的基本概念和设计原则。
-_.
”外不能有特殊符号。0
的system
用户,没有任何权限,不能登录系统,不能被删除。当对应不到真人的时候可以使用它,如不属于任何人的分机号,可以关联到该用户。1
的admin
用户,该用户是最高级的管理员,在简单的场景中可以使用,在复杂的权限管理下,每个管理员都应该使用自己的账号登录。实际上,为了使系统保持简单,我们淡化了用户的使用。在最小最简的应用中,您可以只有一个admin
用户,但它下面可以挂很多分机。
admin
用户,其它分机都挂在该用户下(当然也可以挂在system
用户下)。system
用户。权限指Web界面和API的使用权限。权限采用业界流行的RBAC(Role Based Access Control,基于角色的访问控制)设计。可以给一个用户分配多个不同的角色,不同的角色可以分配不同的权限。用户总是从自己所属的角色上获取权限。权限用于控制某些菜单对用户是否可见,某些API对用户是否可以访问等。
呼叫方向有入局(Inbound、Incoming)和出局(Outbound、Outgoing)呼叫两种。所有方向都是相对于XSwitch本身而言的。即呼叫的方向是相对的,看参照物是谁。比如我打了你一拳,我就是出拳,而对于你就是入拳了。
一个通常的误解是用户描述电话故障的时候通常说电话打不出去,这时候,他(她)其实是站在自己(电话机)的角度说的,对于XSwitch而言,可能是入局故障(从话机到XSwitch),也可能是出局故障(从XSwitch到落地网关或运营商)。所以在排查电话故障时,一定注意参照物,把呼叫流程搞清楚再下手。
XSwitch是一个B2BUA(背靠背用户代理),一个典型的呼叫流程如下:
路由是本系统中最最重要的概念。路由即电话从哪里来到哪里去。呼叫源用于描述电话从哪里来,目的地描述电话到哪里去。在路由上可以做“号码变换”,设置计费规则,是否自动录音,设置不同时间段目的地等。
本系统路由均根据被叫号码判断。在默认配置中,来自“本地分机”(即注册分机)的呼叫,一般呼叫源为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,称为一路通话,它包含两个通道。三方通话其实也是一个通话,但是会有三个通道,每个通道代表参与通话的一方。
XSwitch支持基于SIP信令(SIP Over
Websocket)及Verto信令的WebRTC通话,但是,WebRTC通话通常需要相应的https
及相关证书。如何部署WebRTC通话不在本文档范围内。
如果已经部署了WebRTC功能,则可以在最新版的Chrome、Firefox、Microsoft Edge等主流浏览器中使用WebRTC通话。
WebRTC通话支持PCMA、PCMU、OPUS、H264、H265、VP8等音视频编码。
可以通过以下方法设置证书。
客户需要提供自己的私钥(申请证书时上传的私钥)以及下载的证书
openssl x509 -in gd_bundle-g2-g1.crt -out chain.pem -outform PEM
cat 客户提供的证书.pem chain.pem > fullchain.pem
cat fullchain.pem 客户的私钥.pem > wss.pem
cat 客户提供的证书.pem 客户的私钥.pem > agent.pem
将生成的wss.pem
上传到/usr/local/freeswitch/cert/
下即可
如果存在Nginx镜像,修改Nginx配置文件,开启如下参数:
ssl_certificate /data/xswitch.cn/fullchain.pem;
ssl_certificate_key /data/xswitch.cn/客户私钥.pem;
ssl_trusted_certificate /data/xswitch.cn/chain.pem;
提供私钥以及证书即可。
按照上述方式上传到/usr/local/freeswitch/cert/
以及修改Nginx配置。
系统Web界面分为横向的快捷菜单、左侧功能菜单、全局功能区和工作区。菜单显示内容均可定制,左侧菜单也可以收起成条状,以便显示更大的工作区。
全局功能区有用户设置及退出等功能。最右上角的小绿点(通常是绿色)代表Websocket的连接状态。绿色代表连接正常,黄色代表正在连接,红色代表连接失败。连接失败时系统可能也能正常工作,但是一些实时的消息推送将不能正常送达到前端,比如一些统计图表和系统状态等将不能实时变化,但通话不受影响。
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】键或用鼠标单击编辑框以外的任何区域。
如果不知道哪些区域可以编辑,则可以按下旁边的【编辑】按钮,则可编辑的区域会显示成输入文本框或选择框。
有的按钮也有即时编辑功能,一般用于“是”、“否”的场景。点击后会直接改变状态,并自动保存。
“用户”可以使用“用户名”和“密码”登录系统。登录后一直有效,关闭浏览器并不能使登录失效,只有在XSwitch重启后失效。为安全起见,建议在使用完成后主动退出系统。当然,在对登录安全性要求较高的场合,可以通过配合Redis缓存服务做超时自动退出。默认的XSwitch不带Redis缓存功能。
工作台首页主要显示一些系统相关的统计信息。
呼叫相关的功能及设置。
分机用于打电话。一个分机必须属于一个用户,可以为每个分机建一个对应的用户,也可以所有分机属于同一个用户。
分机有以下一些基本属性:
-._
”外不支持其它字符,如不能有空格或中文等PASS
,则透传SIP
INVITE中的主叫名称PASS
,则透传SIP
INVITE中的主叫号码force_domain
,则该值是不可编辑的;反之,为多租户模式,可以编辑。关于号码透传:
PASS
。点击分机详情页面的【显示高级属性】按钮可以设置如下主叫属性:
权限是递增的,高级的权限自动具有低级的呼叫权限,即开通了国际呼叫的分机可以呼叫所有号码。
开启可以代答其他通话的权限。
*63
可以代答该分机*75
可以代答正在振铃的分机如果开启强插权限,如果某分机正在通话,拨打*62+分机号
可以强行插入当前通话形成三方通话。
如果开启强拆权限,如果某分机正在通话,拨打*63+分机号
可以强行插入当前通话并强制原来与该分机通话的一方挂机。
如果开启监听权限,拨打*78+分机号
可以监听指定号码的通话。
点击分机详情页面的显示高级属性按钮可以设置以下属性:
*
,以便从话机上读取语音邮件时能正确输入。这是一个被叫业务。分机开启了语音信箱后,如果做被叫时无法接通,则可以将来话转到语音邮箱提求主叫进行留言。
配合呼叫转移号码以及超时时长使用,以分机1001为例,无条件转移,如果呼叫1001,那么则直接转接到呼叫转移号码对应的号码。如果设置了同振,则两个号码同时振铃。如果设置了顺振,则1001未响铃或拒接等情况下,通话转移到呼叫转移号码对应的号码。默认超时时长为60秒,如果设置了超时时长为15,则表示1001分机15秒后没有应答则直接转接到其他号码。
呼叫该分机的超时时长。
*63
代答该通话*75
代答正在振铃的该分机允许其他分机拨打*62+分机号
可以强行插入该分机的当前通话。
允许其他分机拨打*63+分机号
可以强行插入当前通话并强制该分机通话挂机。
允许其他分机拨打拨打*78+分机号
监听该号码的通话。
呼叫该分机时的编码。这可以在A与B没有共同编码时强制使用相应的编码。分机编码设置优先级高于路由界面中的媒体编码,即当分机设置了编码PCMA,路由界面设置了媒体编码PCMU,则选择PCMA去呼叫此分机。
开启后则自动录音,此自动录音和路由上的自动录音区别在于路由时针对所有。分机的录音是只针对此分机(前提路由不开启录音)。
新建分机有三种方法:
经过鉴权的用户,在使用时最好使用${username}
(鉴权用户名)。因为caller_id_number
是可以由客户端指定的,不一定是你期望的。具体原因如下:
SIP
注册界面中的“Display
name”和“User
ID”,会成为${caller_id_name}
和${caller_id_number}
,而这两个值可由set
重置。Authorization Name
才是真正的鉴权用户名,并成为${username}
。名称优先原则:
set caller_id_name
,则优先选被set
后的值,如果没有被set
,则${caller_id_name}
会优先选系统用户里的主叫名称,如果没有设置主叫名称,则会取系统用户中的名称;set caller_id_number
,则优先选被set
后的值,如果没有被set
,则${caller_id_number}
会优先选择系统用户中的号码,${effective_caller_id_number}
;SIP话机中的显示名称是无法通过通道变量获取的。
分机CIDR字段用于使用IP鉴权。
通常情况下,分机注册和呼叫都使用用户名/密码鉴权方式。在知道对方IP地址(对方需为固定IP)的情况下,可以使用IP鉴权,而无需给对方分配密码。
CIDR的全称是无类域间路由(Classless Inter-Domain Routing),它是的格式是“IP地址/掩码位数”,可以指定一个IP地址或IP段,如:
192.168.1.1/32
:32
位掩码(255.255.255.0
),代表一个IP192.168.1.1/24
:24
位掩码(255.255.255.255
),代表一个IP段,即192.168.1.0~192.168.1.255
当设置了CIDR以后,所有从这个IP地址段的来话都认为来自这个用户(为区分不同用户的来话,通常会设置主叫号码透传)。
CIDR在系统内部默认使用ACL实现,因此每次修改后要手要点击【重载】按钮重载ACL设置。
路由表描述呼叫从哪里来到哪里去。当有呼叫到达XSwitch时,XSwitch会根据呼叫的来源确定一个“呼叫源”,并根据呼叫源和被叫号码查找路由表。如果能找到相应的路由,则会根据路由描述送往相应的目的地,如进入IVR、进入一个会议、呼叫另外一个号码等。
路由表查找策略有以下几个重要参数:
路由其他参数功能说明:
国际呼叫 > 国内呼叫 > 本地呼叫 > 本局呼叫 > 紧急呼叫
。例如:路由呼叫类型为“国内呼叫”,那么类型为国内呼叫或国际呼叫的分机才有权限通过此路由外呼。功能码仅针对本地分机而言,为系统自带功能路由。
*3
到*6
为本地通话过程中,话机可通过按功能码实现相应功能;*62
到*85
为分机对其他通话进行的操作。
*3
:盲转;1001和1002通话,如果需要转到1003,1002只需按*31003
即可*4
:协商转;1001和1002通话,如果需要转到1003,但需要先了解1003是否方便,那么1002只需按*41003
,此时1002和1003通话,如果方便,则1002挂机,1001和1003通话,反之,1001和1002继续通话*5
:三方通话;1001和1002通话,如果需要1003加入,1002只需按*51003
即可形成三方通话*6
:呼叫停泊;1001和1002通话,1002临时有事,那么只需按*6
将来电暂存在系统中,其他用户拨打*76
取回即可*62
:强插。如1001正在和1002通话,1003可通过拨打*62+1002
,强行插入通话,形成三方通话。*63
:强拆。如1001正在和1002通话,1003可通过拨打*63+1002
,强行挂断1001,从而和1002通话*75
:代答最近号码。如分机1001正在振铃,1002也在振铃,此时,1003可通过拨打*75
代答最后振铃的分机(1002)*76
:指定代答。如分机1001正在振铃,1002也在振铃,此时,1003可通过拨打*76+1001
代答指定分机(1001)*77
:取回指定停泊号码。针对通话通过*6
已经停泊的,可以通过其他分机拨打*77+1001
重新取回通话*78
:监听指定号码。如1001正在和1002通话,分机1003可通过拨打*78+1001
,来实时监听该分机通话。*79
:组播。针对拨号*79
可对所有配置组播地址话机进行喊话*85
:查询语音信箱文件。如1002呼叫1001,1001未接听,1002进行留言。当1001想要听取留言时,可直接拨打*85
即可听取留言*86
:立即会议接入码。拨打*86
即可获取临时会议号码并进入此临时会议。XSwitch使用呼叫字冠号码最长匹配优先(longest-prefix
)路由选择算法,被叫号码的前几位称为呼叫字冠(XSwitch中也称为被叫号码前缀),假设系统中只有如下一条路由:
1 通过移动网关出局
则所以人拨打所有1
开头的号码,都会走这个路由。后来,你又加了一个联通网关,让某些号码通过联通网关出局,但你不确定这个网关是否好用,因此,你想用你自己的手机号测一下,因此你加了一条路由,路由表如下:
1 通过移动网关出局
1860535xxxx 通过联通网关出局
这样,当你拨打1860535xxxx
时,它就会从联通网关出局,因为它匹配的号码更长、更精确,而其它以1
开头的号码仍然从移动网关出局。等你测试没问题以后,你可以修改路由表,把0535xxxx
去掉,让所有186
开头的号码都从联通网关出局。如:
1 通过移动网关出局
186 通过联通网关出局
所以,号码最长匹配优先这个规则就是基于上述理论设计,下面是更详细的解释。
路由查找算法可以这样理解(实际的路由查找过程比描述的高效得多,这里的说明仅方便大家理解):
如路由表中有以下路由:
139
1390535
则呼叫13905350000
会走第二条路由(从开头共有8
位匹配,而第一条路由只有3
位匹配),呼叫13912345678
走第一条路由(3
位匹配,第二条不匹配)。
注意,如果路由上设置了最大号长,则路由受号长约束。还是以上述号码为例,如果第一条路由的最大号长为11
,第二条最大号长为8
,则呼叫13905350000
时,由于被叫号码的号长为11
位,超出了第二条路由的限制(最大仅支持8
位),因此即使它能匹配8
位,但也只能走第一条路由。
即使被叫号长没有超出高大号长最大值,也是“最大号长”短者优先(因为这个匹配更精确),如路由表中有以下路由:
155
最大号长:12
155
最大号长:11
则呼叫15568181234
走第二条路由。
路由被叫号码前缀可以为空字符串,依然采用长度最短匹配优先算法,如路由表中有以下路由:
[空]
最大号长:12
155
最大号长:13
则呼叫15568181234
走第一条路由。同理,如果第二条路由长度变为11,则呼叫15568181234
走第二条路由。
路由查找顺序跟路由规则有关,跟在路由表中的顺序关系不大。如果根据路由规则找到多条匹配路由,则以数据库返回的顺序为准取第一条。注意,数据库返回的顺序是不可预知的(如果有两条一模一样的路由,一般数据库会返回更新时间比较早的那一条,但最好不要依赖这种不确定的逻辑)。
路由的目的地有多种不同的条件,根据不同的条件生成相关的呼叫字符串。
这样设计主要是为了解决以下问题,假设路由表中有以下项:
被叫号码前缀 | 最大号长 | 目的地 |
---|---|---|
1 | 4 | 本地分机 |
1 | 3 | 网关,短号码如110等 |
1 | 11 | 网关,呼手机 |
0 | 12 | 网关,长途 |
[空] | 8 | 网关,市话 |
上表中是一个简单的办公室IP-PBX路由表。
110
、119
等2
~9
开头做上8条路由,那样更明确,但也更复杂。如果你买了一个新网关,想做个路由测试,但不想在确认新网关正常前影响其它通话,你就可以做一条更严格的路由,如用你的手机号前7位1555555
作为被叫号码前缀,指向你的新网关。
号码变换支持主叫和被叫号码变换,有以下几种类型:
-nnn+nnn
:其中nnn
为号码,-
表示从号码开头删除nnn
,+
表示在号码开头加上nnn
rnnn
和Rnnn
:分别表示在号码开头和结尾替换掉相应位数,其中n
可以是多个。如果位长小于n
的个数,则号码会变为nnn
。mxnnn
:从第x位起,替换掉nnn
相应的位数,其中n
可以是多个。如果位长小于n
的个数,则号码会变为nnn
,如果x
大于9
,还可以使用16进制数a-f
,如f
代表第15
位,本算法不支持大于15
位的变换。ixnnn
:在第x
位前插入nnn
,x
取值0-9,a-f
。Ixnnn
:在第x
位后插入nnn
,x
取值0-9,a-f
。dxn
:从第x
位开始删掉n
位,x
和n
取值0-9,a-f
。nnn
:将全部号码替换为nnn
。/pattern/replace/
:正则表达式替换,将匹配pattern
的替换为replace
。正则表达式使用PCRE格式。原号码 | 变换规则 | 变换后号码 |
---|---|---|
01234 | -0+9 | 91234 |
01234 | -0 | 1234 |
01234 | +9 | 901234 |
01234 | 999 | 999 |
01234 | r999 | 99934 |
01234 | R999 | 01999 |
01 | r999 | 999 |
01 | R999 | 999 |
01234 | m3** |
01**4 |
01234 | i399 |
0199234 |
01234 | I399 |
0129934 |
01234 | d23 |
04 |
01234 | /^(.*)[0-9][0-9]$/$1/ |
012 |
123456 | /^(\d{2})\d{2}(.*)$/$1**$2/ |
12**56 |
高级变换规则
s/table/field1/field2/
:将表table
中的field1
替换为field2
。示例:
设numbers
表内容如下(该表在数据库中必须存在):
a | b |
---|---|
1000 | 13912345678 |
1001 | 13987654321 |
原号码 | 变换规则 | 变换后号码 |
---|---|---|
1000 | s/numbers/a/b/ |
13912345678 |
1001 | s/numbers/a/b/ |
13987654321 |
01000 | -0\|s/numbers/a/b/ |
13912345678 |
特别注意:在新建路由时,只能指定基本信息如名称、起始号码、描述、呼叫源、目的类型等,主叫、被叫号码变换等高级信息可以在路由创建完成后再修改。
创建新用户账号有两种方法:
路由的目的的决定通话的去向。有以下类型:
路由到与被叫号码相同的分机号。如果分机不存在,则返回空号(SIP 404)。
路由到临时分机组,即目的类型选择【同振分机组】后,手动选择需要同振的分机。
当呼叫此路由的被叫号码时,被选中的分机会同步振铃,直到某个分机应答。
路由到临时分机组,即目的类型选择【顺振分机组】后,手动选择需要顺振的分机。
当呼叫此路由的被叫号码时,被选中的分机中第一个会优先振铃,如果超时未接听则第二个分机振铃,直到主叫挂机或被应答。
路由到一个已存在的会议室,即在会议室界面已经创建好的会议室。会议室号码和被叫号码可以不相同。
路由到和被叫号码相同的会议室,如果被叫是3000,则路由到已创建好的号码为3000会议室。
不需要提前创建会议室,可随时开会,即动态创建一个临时会议室,会议号码会随机生成。
路由到一个IVR(语音导航功能)
路由到指定的队列。比如拨打0535xxx
,进到测试队列中。
需要事先建立与被叫号码相同的队列,适用于有很多队列需要适配的场景。
路由到一个网关。需要在网关界面,提前创建对接网关信息。
FXO口的网关作为一个分机注册到系统中,可以使用该网关出局。用于FXO网关位于NAT后面的情况。
简单来说,适用于网关在内网,系统在公网情况。
SIP Server间一个点对点的连接,中继分为出、入和双向三种
中继组中包含中继的负载分担策略。轮循、按百分比选择等。
主要用于高并发高负载的情况,即使用kamailio时。
路由到一个IP地址。格式如下(以10.0.0.1
为例):
10.0.0.1
:直接送往IP地址,默认端口5060
,SIP消息为:sip:被叫号码@10.0.0.1
10.0.0.1:5060
:送往指定的IP和端口,默认使用UDP协议10.0.0.1:5060;transport=tcp
:送往指定IP和端口,使用TCP协议this.domain;fs_path=sip:proxy.this.domain;transport=tcp
:送往域名,指定真实IP和端口,使用TCP协议语音调度,主要针对本系统分机而言。即系统分机间呼叫调度。
在使用此功能前,需要在分机界面,查看主被叫分机是否有相应的权限。如:
员工A的话机响铃,此时员工B想要代答。B拨打代答码后发现无法代答,通过查看权限,发现员工A没有代答权限或B开启了不允许被代答功能。
同样,其他强插/强拆/监听等均针对主被叫做了权限限制。
系统默认功能码*62实现强插功能。
当需要强插某路通话时,用户拨打*62+分机号
即可强行插入指定通话,形成三方通话。
系统默认功能码*63实现强拆功能。
当需要强拆某路通话时,拨打*63+分机号
可以强行插入当前通话并强制原来与该分机通话的一方挂机。
系统默认功能码*78实现监听功能。
开启了此参数,拨打*78+分机号
可以监听指定号码的通话。
系统默认功能码*63实现强插功能。
*75
可以代答正在振铃的分机*76+分机号
可以代答指定的分机号可以选择一个已编程的路由脚本,特殊应用,用于一些特定的场景。
路由到一个积木。在积木界面,通过积木模块组合实现需求。也可以理解为图形化脚本功能实现。
分配器是一个算法,可对指定对象等进行加权轮询分配。通常用于网关分配。
系统路由是一种高级路由。系统路由支持底层XSwitch(FreeSWITCH)提供的标准Application,如下列内容执行应答并回声:
answer
echo
下面的内容应答并播放文件:
answer
playback http://ip:port/welcome.wav
该路由一般仅供高级管理员使用,用于一些比较复杂的边缘场景,如在二次开发或调试时快速创建一些路由逻辑等。对于标准配置方法无法支持的路由逻辑,也可以在这里设置。
注意:错误的使用系统路由可能导致电话不通或不可预知的后果,使用前请资询XSwitch工程师。
组播是使用TCP/IP协议的组播功能(发送一个IP包,同网段上有很多其它主机都能收到),从一台话机上对很多话机“广播喊话”,提高通话效率。使用时拿起电话拨打指定号码,即可对一群人(话机)喊话。该功能需要加载mod_esf
模块。
目的类型选择“组播”,组播地址如果不填写,则默认组播地址为224.168.168.168:34567
。如需填写其他地址及端口,则在文本框内直接填写并保存即可。
实现此功能需要话机按照如下配置:
在支持组播功能界面的话机上,按照如下所示,填写组播地址。如下图和所示
此时拿起话机拨打指定号码即可对所有设置过组播地址的话机进行喊话了。
特别注意:使用组播功能需要在同网段下,即话机和系统需要在同一个交换机下,一般不支持NAT环境(如需支持需要配置各路由器的组播路由,但需要注意网络安全,具体的配置方法超出本手册范围)。
Linux服务器系统上通常需要配置组播路由,如下:
ip route add 224.0.0.0/4 dev eth0 src 192.168.x.x
采用XSwitch(FreeSWITCH)提供的标准Application,主要用于临时设置一些通道变量或其他参数。
名称为App名称,如常用的set
,值为具体的参数值,如effective_caller_id_name=XSwitch
。
智能回呼:在一定时间内打出去的电话,如果客户回过来时就直接分配到最近的分机号上去。
指定时间通过【高级配置】⇨【系统管理】⇨【全局变量】中参数callback_time_limit
控制(单位为秒)。如果没有设置此参数,则系统默认为3600秒时间内的通话可以回呼。如下图所示:
为了实现部分用户想要的智能回呼功能,我们在路由中通过设置Application实现。如下:
外呼路由里,在Application添加弹出框中,输入名称xcallback
,值track
保存,那么所有经过这条路由打出去的通话都会被追踪。
来话路由里,在Application添加弹出框中,输入名称xcallback
,值check
保存,那么所有经过这条路由的来话都会先判断一定时间内是否有分机呼叫过,如果有则直接路由到对应的分机响铃。如下图所示:
如果想要实现通过相同的网关出局的通话,只能通过相同的网关线路呼入时才去分配到最近的号码,那么如下:
外呼路由里,在Application添加弹出框中,输入名称xcallback
,值track-zl
保存,那么所有经过这条路由打出去的通话都会被追踪并记录该线路名。
来话路由里,在Application添加弹出框中,输入名称xcallback
,值check-zl
保存,那么所有经过这条路由的来话都会先判断一定时间内是否有经过此线路的分机呼叫过,如果有则直接路由到对应的分机响铃。
查询功能,是根据被叫号码来确定路由是否建立正确。比如想拨打156xxxxxxx
这个号码,但是不知道是否已经建了路由或不知道拨打此号码会走哪条路由。
如果不输入呼叫源则默认查询所有呼叫源。
如果结果列表有多条路由,则会走与呼叫源的匹配的第一条路由。如果没有结果,表示没有路由,拨打该号码将返回空号。
点击【重置】后,可重新显示所有路由。
点击【?】可显示查询使用说明。
点击用户界面右上方【导出】,导出后格式为.csv
。
呼叫源,即电话呼叫的来源。通常在用户、分机、路由中关联应用。如果你需要给用户设置新的呼叫源,则需要在此界面先新建“呼叫源”,方可在用户、分机、路由中选择关联此呼叫源。
如果你需要实现DID功能,则需要在相应的呼叫源右侧点击【启用DID】。开启DID功能后,当有通话过来时,系统会自动判断此号码是否为DID号码,如果是则直接呼叫对应的号码。通常default和public为默认系统呼叫源,默认不开启DID,如下图所示:
黑白名单主要配合路由使用。白名单与黑名单相对应。通过黑白名单规则对通话进行控制。路由中黑名单启用后,被列入到黑名单的用户(号码)不能通过。如果设立了白名单,则在白名单中的用户(号码)才可通过,其他用户(号码)则直接被拒绝,安全性和快捷性都大大提高。
点击黑名单界面右上方【新建】,填入名称等必填参数。
新建黑名单后,点击名称进入黑名单界面 ⇨ 点击右上方【编辑】,即可修改黑名单信息 ⇨ 点击【保存】,保存修改后的分组信息。
点击黑名单界面最右侧【删除】,即可删除时间管理信息。
特别注意:起始号码采用相似匹配模式,当起始号码写为10
时,那么此条信息就包含所有10开头的号码。当路由中采用此黑/白名单,则会针对所有10开头的号码均起作用。
IVR(Interactive Voice Response)即交互式语音应答,也就是我们常说的语音菜单。当来电后,播放欢迎音,然后根据语音提示,执行不同操作。
每个IVR都有个自己的名字,如“welcome
”。在各自的IVR中通过配置参数实现不同功能。参数简介如下:
IVR常用参数如下:
1
,如果需要输入分机号的情况下,则至少要有分机号相同的位数。IVR其他默认参数如下:
通常可以在按键多次失败后或超时后执行一些指令。
如
ivr ivr-name
如:
lua /tmp/test.lua
Lua脚本内容:
:streamFile("/tmp/test.wav")
session:hangup() session
执行路由表项中的指令,语法:
execute_extension dest XML context
execute_extension
:执行路由中的动作dest
:被叫号码XML
:拨号计划类型,一般为XMLcontext
:呼叫源标志符,如:context-2
示例:
execute_extension play XML context-2
在路由中配置:
context-2
play
play /tmp/test.wav
hangup
该路由执行完毕后会返回当前IVR,所以,如果不需要返回,则需要在路由执行完毕后transfer
到其它路由或挂机。
与执行路由类似,转移后不再回到当前IVR,如:
transfer play XML context-2
内联路由语法比较复杂,本质上与上面相同,如:
transfer set:ivr_hangup_cause=system_hangup,playback:/tmp/test.wav,hangup inline
新建IVR后,点击名称,进入IVR界面,点击【编辑】,即可修改分组信息
⇨
点击【保存】,保存修改后的IVR信息。其中语音类文件修改,只需要点击参数右侧【...
】即可弹出媒体文件选择。
点击IVR界面最右侧【删除】,即可删除IVR信息。
10
,那么当用户按10xx
时均可以匹配此项。系统默认提供如下功能:
IVR常用指令参考如下:
按键 | 执行 | 文本 | 备注 |
---|---|---|---|
0 | 高级指令 | bridge user/1001|user/1003 |
桥接到1001或1003,1001如果未响应,则1003响铃 |
1 | 高级指令 | bridge [leg_timeout=40]user/$1 |
桥接到获取的按键号码,40秒后超时挂断 |
2 | 高级指令 | transfer $1 xml public |
转接到获取的按键号码 |
3 | 高级指令 | lua ivr.lua $1 |
执行Lua脚本,在脚本中可以通过argv[1] 获取按键值 |
4 | 高级指令 | fifo default in undef |
转接到fifo,可实现多个账号順玲或全部响铃等功能 |
IVR如果进入callcenter队列后,在队列无人应答时如果想跳出队列回到IVR开始欢迎音处,需要在IVR对应的路由设置如下参数,
set cc_exit_keys=8
即按8
跳出队列,重新听取IVR欢迎信息并重新选择。路由设置如下图所示
该模块可通过积木组合实现大多数程序员想要的功能,并导出相对应的代码,代码形式共三种:Lua、XML、SVG。同理,也可通过导入,将代码转变成积木模式。
点击首页左侧【呼叫管理】⇨【积木】⇨ 进入积木模块。
点击【新建】⇨ 输入名称,添加描述 ⇨ 点击名称,创建积木。
从左侧中选择合适的积木进行组合,实现各种功能。直观,易操作。
参考积木如下以及所示:
注意:逻辑、文本、列表、函数的模块中含有设置按钮,点击设置可根据需求修改模板,提供更多选择。如下图所示:
积木完成后,点击【保存】,共生成三种保存格式:XML、SVG和Lua。
通过导入,可将XML文件代码转换成积木。该功能仅限XML格式的代码。 点击【导入】,选中XML文件,打开即可还原成积木。
特别注意:XML文件内容必须是积木对应的XML代码。
保存路径:默认所有积木生成的文件保存在/usr/local/freeswitch/storage/blocks
中。
详细说明参见《XSwitch积木使用手册》。
DID,即直接向内拨号,该服务原本由电话公司提供的,它使用户能够直接拨打PBX或VoIP系统中的分机号码,而无需求助于总机或自动话务系统。现通过XSwitch系统也可以实现。
如果使用DID功能,需要在【呼叫】⇨【呼叫源】中启用DID。在DID页面设置好DID号码后,当有来话时如果开启了DID,则直接呼叫DID对应的分机。
DID设置如下图所示:
DOD应用于分机外呼时使用哪条线路或中继组。在XSwitch中仅对路由类型为网关或分配器或集群中继时起作用。
现在以类型为网关为例:
场景说明:1001
对应DOD线路号码为01086201111
,那么当1001
通过网关/分配器路由外呼时会优先查看01086201111
下的网关,如果设置了指定网关那么会优先选01086201111
下的指定网关并发送指定号码01086201111
。
第一步:创建分机与线路对应关系,如下图所示:
第二步:创建线路与网关对应关系,如下图所示:
那么分机1001
外呼时会选择example
网关线路呼叫。其他分机外呼时则通过路由界面设定的网关线路。
如果你拥有某个运营商提供的SIP账号、模拟网关或数字中继网关,均可通过此界面配置实现SIP拨打外部电话,该账号即为SIP网关。
点击页面左侧【呼叫管理】⇨【网关】,即可进入网关管理界面。
点击【新建】⇨
输入名称、服务器、用户名、密码、描述,选择SIP Profile
【default】/【public】,选择模板【default】或【gateway】,选择是否注册。其中红色部分为必填。在此页面仅含基本参数,如需更详细的设置,请点击【编辑】进行重新设置。
在与对端网关使用IP对接时,服务器处输入网关地址,用户名和密码处可以随便填(底层逻辑中这两项为必填项,但可以随意填),是否注册处可选择“否”。
注意:新建网关时,名称必须为英文,否则网关无法生效。如果不想出现呼入需要鉴权的情况,SIP
Profile选择public
。
网关注册图如图所示:
特别注意:修改网关参数后,需要通过点击停止再开始方可生效
网关参数列出了网关可能用到的参数,默认不需要开启,如果在和其他硬件网关对接时遇到特殊情况,比如发送指定头,那么根据需求开启参数即可。
网关变量是为了更好的针对某个网关进行设置通道变量。比如,SIP中设置了全局编码,但有时我们需要根据不同网关设置不同编码,此时,我们在网关变量中设置添加即可。如下如下所示:
其中,方向可选inbound
、outbound
或null
,其中null表示两个方向均设置。
SIP Server间一个点对点的连接,中继分为出、入和双向三种。网关也可以理解为一个中继。
一般中继和中继组配合Kamailio使用,普通通话,使用网关即可。
中继组主要对所包含的中继进行负载分担,策略为轮循、按百分比选择等。通常配合Kamailio使用,在不使用Kamailio时,目前仅支持轮循、百分比两种策略。
点击中继组名称,进入中继组详细界面:
在时间管理界面创建完成后,可进入“路由界面”,在路由详情界面的“时间段设置”中,选择该模版即可
路由码限制由8位字母或数字(可以包含“-_
”等连字符,不能有其它字符和空格)组合,可以在主叫号码,被叫号码,或SIP头域中携带。用于区分同一中继来话不同的主叫类型,进而可以选择不同的出局路由。
系统收到一路电话,首先确定呼叫源(即呼叫是从哪里来的),呼叫源通常以字符串表示。路由码也是其中一种呼叫源。如果来话带路由码,则呼叫源等于“code-路由码
”。
通常配合Kamailio使用,如无Kamailio,则忽略此界面即可。
会议相关功能。系统支持立即会议,预约会议等。代替原有会议室功能。
立即会议用于临时即兴发起一个会议。用户可以用话机或网页直接呼入一个临时会议,会议号会随机生成。然后用户可以将会议信息通过微信,邮件等方式分享给其它人,其它人拨打该号码或点击链接可以参会。
规则:
立即会议可以使用以下方式创建:
*86
相关路由设置:
*86
72
,固定为两位数字会议号生成规则:
两位立即会议字冠 + 7位随机数字
预约会议用于预约计划的会议。
预约会议字冠规则:
71
呼叫规则:
短号用于一种特殊情况的呼叫。有时候,创建一个会议,希望不管时候都用同一个号码呼入。这时候,可以通过创建一个永远存在的周期性预约会议解决,关联一个短号码然后就可以永远呼叫该号码入会。
内部呼叫,短号可以相对固定,比如用户记住一个会议短号为3000
。则可以通过拨打该号码入会。
短号必须从号码池中选择,号码池由管理员分配,号码池与用户所在的组相关。
多个会议短号不能冲突,如果一个组中有多个管理员管理会议,则短号的使用规则由使用的人自行协调,系统不限制任何使用规则。
路由规则:需要在路由中设置规则,短号对应的号码路由到预约会议。
普通会议,点击会议详情,会显示改会议相关信息,当天会议配置均可以修改(在详情界面增加“修改日志”记录链接)
如果为周期性会议,则显示周期性会议最近一次会议信息。如:如果周期性会议为每周三会议,则会议详情中显示最近一次周三的日期及开会时间;
修改周期性会议,如果选择修改本次会议,则只允许修改开始时间和结束时间,其他参数不允许修改;
修改周期性会议,如果选择修改周期性会议,则可修改所有参数;
修改界面和创建预约会议界面相同,在之前已创建好的界面上继续增删改动作。
分享会议中的网页链接信息,包含内部账号呼叫号码。
如果为普通会议,点击“取消会议”,则取消本次会议;
如果为周期性会议,点击“取消会议”,选择取消本次会议还是周期性会议;如果取消本地会议,则周期性会议自动选择下一次会议时间;如果取消周期性会议则整个会议自动默认结束;
已取消的会议会自动进入历史会议,且与会者不可再入会(如拨打已取消的会议号码则提示会议已取消)。
如果为周期性会议,在会议详情中,取消会议默认为取消本次会议。取消后会议详情中开始时间自动下延到下一次会议时间。
我创建的会议或作为辅助者的会议
我创建的会议以及被选为辅助者的会议均在此界面显示,且可以进行编辑、进入会议控制等
显示所有我作为与会者加入的会议
我参与的会议只能显示会议,不可进入会议详情,编辑会议,不可进入会议控制。
如果我参与的会议被设置为管理员,则可进入会议详情,可显示会议控制
显示我参与的所有会议,包括我创建、辅助以及参与的其他会议,显示其会议名称、号码、开始时间、结束时间、会议总时长、会议类型、会议状态。其中,如果为已开始的会议,历史会议则显示真正的开会时间和结束时间,如果是已取消等情况则显示预约时的时间。
如果为当天创建的会议(非即时会议),当到达会议结束时间,依然未发起会议,则放到历史会议中;
如果为当天创建的会议,如果已经开过会,当历史会议中话单则关联所有和此会议相关的话单。如果在其他时间内(限制一个月)有人再次呼入该会议则只更新历史会议信息,不再在我的会议中显示。
历史会议中,如果是我创建的会议或我参与的(但被设置为管理员),则可显示“话单详情”按钮,“话单详情”中显示会议预定“开始时间”、“结束时间”、“会议名称”、“会议类型”、“最早人会时间”、“最晚退会时间”、“会议总时长”以及涉及到的会议话单ID。通过会议话单ID可跳转到相关会议话单,查看详细信息(如与会者、会议录像等)
如果是我参与的会议(未被设置管理员),则仅显示历史会议信息,不可点击“会议话单详情”,即,不可查看此会议与会者等信息。
该功能在未来的版本中会取消,请使用预约会议代替。
可创建多个会议室,如3000,可根据实际需求对此会议进行特别设置。通过界面控制按钮,进入会议控制界面从而对某个会议进行操作控制。
1、画布
画布为会议人员所在区域,通常设置为1,即所有成员均在一个区域内。
根据需要也可设置为2,画布设置为2后,默认除管理员外,其他成员均在画布2上,会议默认除管理员均禁言。
2、管理员
管理员为会议管理员,可对会议进行操作,默认管理员进入会议不禁言。
3、视频模式
通常为“透传”、“融屏”、“转码”。
4、会议模版
在“会议管理”–“会议模版”中设置,通常可以通过会议模版设置进入会议播放的各种语音提示、画面布局、会议室分辨率设置等,具体参考会议模版界面。
5、呼叫权限
1)只允许认证用户呼入
只有同时符合以下两个条件才可加入会议:
防止他人呼叫时修改主叫号码(比如:origination_caller_id_number
)混入会议。
2) 检查主叫号码
如果主叫号码属于会议室中的与会者即可参加此会议室
3)允许任何人呼入
不限制账号来源
6、字幕显示
通常设置为${caller_id_number} ${caller_id_name}
7、字幕大小
字幕宽度,数字越大,宽度越大,通常设置为1或2
8、所属用户
所属用户,即此会议室归谁所属。
例如,所属用户为1009
,则,仅1009
账号登录后可看到此会议室,而其他账号登录无法看到此会议室,同样也无法操作。
设置所属用户:点击此用户1009
,点击“编辑”,在“类型”一行,选择会议管理员,保存即可。
9、字幕颜色
分为背景色和字体颜色,如果遇到会议中没有显示字幕,可查看背景色是否和字体颜色相同导致被覆盖。
10、容量
容量为会议成员最大数,如果设置为10,当会议中成员达到10后,其他人无法加入会议。
11、自动禁言
如果选择了自动禁言,那么默认除管理员外,其他会议成员呼入后,自动禁言。如果为否。则所有成员呼入后均可自由发言。
此功能仅针对画布数为1的情况。
12、管理员/普通用户密码
设置管理员密码/普通用户密码。如果设置了管理员密码,则普通用户密码也必须设置,否则呼入会议后会提示“您还尚未设置普通用户会议密码”。
一旦设置了管理员密码,那么只有管理员密码输入成功后,方可开启会议,否则提示“管理员尚未加入会议”。
点击会议界面的某个会议室右侧【控制】按钮,则可进入会议控制界面,对某个会议室进行控制。如下所示:
会议模版用于对会议进行参数设置,以下为常用参数介绍。
conference-flags
:通常使用默认即可。当然如果想体验不一样的会议效果,也可设置为livearray-sync|minimize-video-encoding|xvideo-bridge-first-two|manage-inbound-video-bitrate|video-mute-exit-canvas
进行体验moderator-controls
:默认不开启此参数,此参数需和会议控制进行关联使用,比如,在会议控制中设置了admin_control
,将admin_control
填写在此参数框内,则表示管理员可以执行admin_control
里规定的指令操作。特别注意:如果想使用moderator-controls
需要同时开启moderator-flag
为moderator
,默认开启。caller-controls
:此参数和moderator-controls
相似,也要配合会议控制才可使用,此参数表示普通会议成员可操作的指令。video-layout-name
:会议画面布局,默认group:grid
,表示根据会议成员数自动调节画布上画面布局。当然,如果你想固定只显示4个人,可以设置为2x2
。另外,如果视频模式为透传,则此参数不起作用。domain
:会议号后面的域名,每个固定会议室会议名为name-domain
,比如3000-xswitch.cn
,通常使用默认值即可。video-mode
:视频模式,mux为容屏*-sound
:所有-sound
结尾参数均为会议相关语音。根据需求修改或使用默认语音提示。按键控制主要是指管理员或普通与会者通过按键进行控制会议中通话,比如开启/关闭语音,退出会议等。
参考下图所示:
mute on
:开启音频mute off
:关掉音频vmute on
:开启视频vmute off
:关掉视频deaf mute
:解除静音energy up
:增加门限energy dn
:降低门限vol talk up
:提高讲话音量vol talk zero
:讲话音量设置为0vol talk dn
:降低讲话音量vol listen up
:提高收听音量vol listen zero
:收听音量设置为0vol listen dn
:降低收听音量hangup
:退出会议lock
:锁定会议transfer
:转移到其他路由execute_applicationg
:执行其他app会议控制添加参数时,有“按键”、“功能类型”、“值”三个参数。其中,“按键”为1,2,3等按键数;“功能类型”对应按键执行的动作;“值”一般默认不填即可,只有动作类型为“transfer
”或“execute_applicationg
”时才需要填写对应文本。
比如“按键”9
,“动作类型”为transfer
,“值”可以填写ivr
,那么当用户按9
之后,则系统会将通话转到被叫号码为ivr
的重新路由。
dial string
//呼叫串Logged Out
、Available、Available、On Break
//状态On Break
状态点击【呼叫中心】⇨ 【坐席名称】,进入坐席详细界面 ⇨ 点击分机右侧【新建】,填入名称、号码、密码、呼叫源、域等必填信息,添加分机。
也可点击【用户管理】⇨【用户】,修改指定用户类型,改为坐席即可。
坐席信息中“仅硬件话机可用”选择“是”,并且将坐席放入队列中,可使用签入签出功能。
strategy
:振铃策略
ring-all
:所有坐席振铃longest-idle-agent
:空闲时长最长振铃round-robin
:轮循振铃top-down
:顺序振铃agent-with-fewest-calls
:接听最少振铃sequentially-by-agent-order
:优先级振铃random
:随机振铃moh-sound
:队列语音,如:local_stream://moh
announce-sound
:定期播放音乐
与announce-frequency
一起使用announce-frequency
:播放频率,即多久播放一次,与announce-sound一
起使用record-template
:录音文件夹路径time-base-score
:优先级相关的时间积分选项(queue
:不增加积分;system
:进入系统时积分)tier-rule-wait-second
:梯队的等待时间(进入下个梯队的时间)tier-rule-wait-multiply-level
:梯队等待级别
false
:除了第一个梯队等待tier-rule-wait-second
,其他梯队不等待true
:每个梯队都会等待tier-rule-wait-second
tier-rule-no-agent-no-wait
:是否跳过no-agent
的梯队,(no-agent
就是这个梯队中不存在状态为available的成员agent)。true
:跳过;false
:不跳过discard-abandoned-after
:最大丢弃时长(丢弃超过此时长,将不可以恢复)与abandoned_resume_allowed
同时生效abandoned-resume-allowed
:丢弃后是否允许恢复或者重新进入队列。(true
:允许恢复或重新进入,超过discard-abandoned-after
将不可恢复;false
:禁用不允许恢复)max-wait-time
:最大等待时间(超过时间未被接通将退出callcenter)0为禁用。说明:呼入到队列,有坐席,但坐席拒接,重新等待分配坐席,那么超过最大等待时间
主叫会自动挂机;(如果已经分配到坐席,坐席未接听,由于已经建立了连接,超过时间也不会自动挂断max-wait-time-with-no-agent
:
无坐席成员等待超时时间:
超出时间电话会退出callcenter,0为禁用。
呼入到队列,没有坐席签入,此时超过无坐席最大等待时间则主叫会自动挂机max-wait-time-with-no-agent-time-reached
:如果有电话因为(max-wait-time-with-no-agent
)的原因退出队列,
队列将在延迟一定时间不允许新的电话呼入到队列通过用户模块,可自由添加登陆账号及对应的分机号等,未建立的账号无法登录界面。
SIP终端可以使用与Web端一致的服务器地址、用户名与密码注册。修改前admin
默认密码为admin
,1000~1019
默认密码为1234
。
其中Web端新增用户建立过程如下:
创建新用户账号有两种方法:
通过分组,可将账号按用户或分机类型分成指定组,为后期角色权限分配、会议与会者等做准备。
点击分组界面右上方【新建】,填入名称、域等必填参数,其中域需要和用户中的域相同,方可将用户分到此组。如下图所示。
例如:
新建分组中,名称填入“办公室”,填入域为xswitch.cn
,点击【办公室】,进入添加界面
⇨
点击【添加用户】,则会显示所有用户域为xswitch.cn
的用户,选中需要加入的用户即可。
点击组名,进入添加用户界面:
联系人主要用于记录客户基本信息。客户信息分为公开和私有,如果设置了公开,那么所有其他人都可以看到此客户信息,如果设置了私有,那么仅对应的账号可以看到该账号下的客户信息。
为了减轻数据库查询负担,如果有需要根据客户信息来电显示的需求功能时,可通过xtra_config.lua
中开启参数check_contacts
实现,
即当参数为true
时,那么所有来话,会检查主叫号码是否和联系人号码相同,如果相同则设置相应的联系人名称,当客服话机响铃时显示客户联系人名称。
角色权限,主要对用户进行权限设置,即设置某些用户拥有哪些权限,比如,1001
用户可以查看所有用户分机等信息,1002用户可以查看呼叫相关界面,1003用户可以查看会议界面等。
当然除了查看界面权限也可以设置增删改查权限,比如,2001用户可查看用户、分机等界面,同时可对用户、分机中的信息进行修改。
设置权限的使用流程如下:
系统模块包含系统几乎所有界面模块,可对界面进行增删。比如删除呼叫中心—坐席这个界面模块后,刷新即可发现系统界面没有了坐席这个界面。
删除或修改显示位置,如下图所示:
可通过修改排序,调整各功能界面显示位置。比如,上图用户管理原本在第一个,将排序写为10,刷新界面,用户管理则放到了最后显示。
其他界面同理。
系统菜单,显示系统所有菜单信息,比如路径、状态、所属模块等。
同时可通过系统菜单界面,调整快捷栏上显示。根据使用习惯,比如将话单、媒体文件等放到最上面的快捷栏上,方便操作。具体对如下图所示:
系统最多只能选择5个快捷菜单,默认已有5个,如需调整,需要先删除某个快捷菜单,然后再在菜单中选择你想要的,点击提交。
在AI时代,越来越多的设备和组件对智能语音提出了更多的要求。而电话是语音最佳的载体。所以,我们在XSwitch中实现了与主流AI平台的语音接口互通,旨在给第三方应用程序提供更丰富接接口。
点击右上方【新建】,选择参数模板,即可完成创建AI的的参数配置。非必要不修改此配置界面。
打开AI界面,找到settings
参数,修改post-event-url对应的值(填入需要将事件推送到的地址)。填写成功后需要重启一下mod_ai模块。
在【高级配置】⇨【系统设置】⇨【模块】中找到mod_ai,然后点击后面的【重载】即可(如果没有此模块,将此模块添加进去后加载即可)
Bindings
中包含的所有事件均将推送到上述地址。
同样点击右上方【新建】,选择参数模板,完成创建baidu模块的的参数配置。模块参数分为tts和asr两类,即语音合成和语音识别
在浏览器中输入“百度TTS”,进入百度语音合成界面,如下图:
点击上图【语音识别】⇨ 点击【立即使用】,进入注册界面,申请账号,按照提示一步步完成。
完成后,点击【应用管理】,如下图所示 ⇨ 点击【查看key】,即可获取key值。
与百度模块相同
一个运营平台往往需要有一个记录话单的能力,方便后续的计费提供数据支持。XSwitch可支持话单写入远程HTTP服务器,即你现在看到的web端提供的话单状况。
XUI采用mod_cdr_csv
模块可以记录CSV格式话单。
因此,正式启用话单功能时,请确保mod_cdr_csv
模块已加载启用。
话单界面显示所有通话话单信息,包括下面会议话单、fifo话单、callcenter话单等。点击【话单】即可查看详细信息。
页面右侧显示时间轴,根据各自需求随时查询近期内7天、15天或一个月的通话情况。点击【更多】,可进行条件查询
显示各个时间段的会议状况,点击【conference cdrs】即可查看详细信息。
页面右上方显示时间轴,根据各自需求随时查询近期内7天、15天或更多会议情况。点击【详细】,可查看某条会议话单的详细信息,包括参与会议的与会者信息
显示系统FIFO队列内通话使用状态,具体包含UUID信息、队列名、主/被叫号码、服务号码、开始、接听、结束信息。
页面右侧显示时间轴,根据各自需求随时查询近期内7天、15天或一个月的通话情况。点击【更多】,可进行条件查询。
显示各个时间段的呼叫中心通话状况,点击【callcenter话单】即可查看详细信息。
页面右上方显示时间轴,根据各自需求随时查询近期内7天、15天或更多会议情况。点击【详细】,可查看某条会议话单的详细信息
话单配置为话单模块配置文件界面,通常使用默认配置,非必要不修改(如果比较熟悉FS配置,可根据场景需要修改)
话单推送目前支持JSON以及XML格式推送,分别对应mod_cdr_xml
以及mod_json_cdr
两个模块。
如需话单推送,请确保上述模块已被加载。
模块已加载成功的基础上,修改xml_cdr.conf.xml
或json_cdr.conf.xml
中如下即可。
param name="url" value="http://localhost/cdr_curl/post.php"/> <
修改完成后,重载即可。当然也可以直接参考AI界面中话单推送方法。
这部分是系统的一些高级配置,在与不同的设备或运营商对接时可以设置一些特殊的参数等。
SIP是XSwitch支持的主要协议,有很多配置参数,这些配置参数通常比较复杂,建议只有高级用户使用。
系统支持多个SIP
Profile,每个Profile相当于一个SIP
UA,通过配置不同参数可以配置一个UA行为。多个SIP
Profile监听不同的IP地址和端口。XSwitch默认的配置带有两个Profile:default
以及public
,前者通常用于内部,需要用户注册的端口,后者通常与外部系统对接,如运营商和网关等。
一个SIP Profile中有可以关联多个网关。网关主要用于描述远端的SIP服务器,使XSwitch可以与其他服务器通信。
点击【新建】,输入Profile名称,填写相关描述,选择模板,点击【保存】即可。
点击【启用】,当变为“是”时,则启用该Profile,系统启动时,该Profile自动开启。
“状态/控制”栏中,点击【停止】则关闭此时正使用的Profile,同理,点击【重启】,则重新启动该Profile。当改动某些参数后,点击【重新扫描】,自动更新状态(适用于大多数参数改动情况)。
如下图和所示:
同理,再次点击【启用】,当变为“否”时,意味,下次使用时关闭该Profile。
点击SIP Profile的名称,进入详情页,可根据需求添加模块参数,同理,如果启用某个参数,点击【启用】变为“是”后,点击页面【 重新扫描】,使之生效。
特别注意:如果某个参数已启用,且有值,当停止此参数效果时,点击【启动】变为“否”后,需要重启该Profile才可生效。
XSwitch可实现多个终端同时注册,当有电话打入时,所有注册终端可实现同时响铃,方便用户使用任意终端均可及时通话。
可以在SIP
Profile中开启multiple-registrations
以开启该功能。
查找SIP界面中sip-port
或tls-sip-port
,查看或设置如下:
端口7060(TCP/UDP) 7161(TLS)
通过SIP.js实现的一种视频通话客户端,适用于支持WebRTC的浏览器进行视频通话。SIP.js是基于JavaScript编写的功能齐全的SIP堆栈。借助SIP.js利用WebRTC的功能实现语音通话和视频通话。
查找SIP界面中ws-binding
的值,在界面输入wss://demo.xswitch.cn:7443
,账号,密码等。端口查询如下:
默认端口:
5066
(WS)7443
(WSS)如果使用了Nginx,那么端口就对应nginx中的配置即可。如果没有配置Nginx,那么查看Verto下的端口配置。如下例子仅供参考。
WS/WSS url
示例:
ws://192.168.3.170/ws
wss://192.168.3.170/ws
ws://freeswitch.xyt.com:9080/ws
wss://freeswitch.xyt.com:4443/ws
XSwitch的前台命令客户端,实现各种命令输入,也可快捷的查看后台日志,如下图。
点击上图【暂停】可以使日志界面暂停,当日志较多时,方便查看通话日志,防止被后来日志覆盖。
点击“【设置回滚行数】,可以设置显示最大数,比如,设置为1000
,那么可显示最多1000
行日志信息,防止重要信息被覆盖。
在终端界面可以【下载】保存当前终端中显示的日志。
当遇到问题,需要发送日志给相关技术人员时,可以点击下图所示的【SIP
Flow】按钮,如果没有打开SIP跟踪,需要手动在命令行上输入“sofia global siptrace on
”以打开跟踪。以后收到的SIP消息都可以在流程图上显示出来。该功能仅用于实时跟踪查看和诊断SIP消息。
重现问题后,点击下图【下载】,此时可以将流程图以及日志下载下来,发给XSwitch技术支持人员以便定位问题原因。
在此页面可下载系统日志、声音文件等。
在此界面可以添加话机信息,支持批量导入。如下图所示
在界面填入话机MAC地址以及对应账号后,如果想批量实现话机自动部署,需要在话机界面填写系统URL地址,现在以方位F3话机以及方位FA26为例:
进入话机管理界面,【维护】⇨【更新升级】,然后按照如下图所示填写URL。URL格式为IP:port/api/provision_auto/gs
协议类型选择http,服务器地址填写系统真正的访问地址(如192.168.3.144:18081/api/provision_auto/gs
)。
进入话机管理界面,【升级】⇨【自动升级】等,然后按照如下图所示填写URL。URL格式为IP:port/api/provision_auto/fw
协议类型选择http,服务器地址填写系统真正的访问地址(如192.168.3.1:8081/api/provision_auto/fw
)
进入话机管理界面,【话机配置】⇨【自动更新】,然后按照如下图所示填写URL。URL格式为IP:port/api/provision_auto/fwA26
协议类型选择HTTP,服务器地址填写系统真正的访问地址(如http://192.168.3.144:18081/api/provision_auto/fwA26
)
智能安全帽通过对接XSwitch系统平台实现WebRTC实时音视频通话。
智能安全帽注册到该系统平台后,其他设备(如SIP话机或手机等)可通过路由设置实现直接呼叫相应智能安全帽;当安全帽需要帮助时,可通过按SOS直接呼叫相应的客服人员。
在系统安装时,请.env
文件中FreeSWITCH_NAME
填写了正确域名
特别注意
证书类型优先选择适用于Nginx类型的SSL证书。
ws-binding
和wss-binding
参数并检查该参数是否已自动开启,若未开启,则开启后点击该界面上“重启”或“重新扫描”,使其生效。特别说明
进入智能安全帽自己的配置界面,找到安全帽设置–服务器地址配置。
在服务器地址配置中,如下所示,其中test.cn
替换为真实的域名即可。
https://test.cn/api/provision_auto/safety_hat?ctl=config&act=get_config
点击菜单栏【高级】⇨【状态】⇨【注册】,通过该注册界面查看安全帽有没有注册成功;
如果未能成功注册,可通过访问https://www.doubango.org/sipml5/call.htm?svn=252#
,输入分机配置信息,查看系统是否支持WebRTC。
上传文件以及保存录音。所有系统通话录音均可在此界面查看下载。
可根据需求,自定义媒体文件类型,将上传后的文件转到指定类型。通常用于IVR、呼叫中心、会议等需要选择语音文件的场景。
按类型分配,可解决因文件太多而不方便查询选择的问题。
在使用XSwitch通信过程中,经常需要一些语音文件,有时录制起来比较麻烦。在配置了TTS(语音合成功能)的情况下,XSwitch可以直接使用TTS生成语音文件,供以后使用。
TTS使用方法:
点击【TTS】,在TTS文本框内填写内容,点击TTS即可生成声音文件。
提示:使用TTS之前请确保在相关语音识别模块已自动加载,比如使用百度TTS,确保mod_baidu
已加载。
XSwitch也支持离线生成TTS语音,详细操作办法可参考如何使用XSwitch内置的离线ASR及TTS
由于XSwitch提供配套的espeak-ng播放出的中文声音不太好听,我们给出了一个更“好听”的解决方案,详细可参考如何在XSwitch中使用Edge TTS
点击【设置】⇨【日志】,此界面记录了XUI界面每一次的修改状态及内容。通过此界面,可随时查看历史修改记录,根据修改记录,查看配置变化。
此界面功能默认不开启,如需使用日志记录,请在配置文件中(xtra_config.lua
)设置auto_log
为true
。
访问控制列表,主要用于免鉴权,默认是安全。如果你想将某个域名或IP可通过鉴权端口且无须密码即可通信,那么将其填入如下界面中,然后加载即可。
特别注意,如果是域名,节点数据类型选domain
,然后填入domain
值,如果是IP类型选择cidr
,然后输入IP及子网掩码即可,切记,不要忘了子网掩码。另外,如果sip profile
开启了ban-ipv4-domain
,cidr
方式不可用。
全局变量,和名称一样,设置后,可全局使用。比如,保持音乐hold_music
,设置某个音乐文件后,所有通话保持均播放此音乐。
其他参数,如默认播放语音(默认中文,也可设置英文),默认语音文件路径,默认rtp_video_max_bandwidth_in
视频带宽默认最大最小值等。
可以对模块进行添加和删除,开启、加载、卸载、重载等操作。模块中【启用】按钮表示系统每次启动后默认加载此模块。如果针对某模块,第一次点击【启用】,仅表示下次会自启动;如果想立即使用,需要点击【加载】实现。模块名字由灰色变为黑色则表示加载成功。
此界面为系统内部参数配置界面,非必要不修改。
该界面可以对某个模块内所有profile的参数进行增删改查操作,有些模块没有提供单独的配置界面,例如mod_agora
,此时,如果修改其配置参数,需要通过模块参数,找到AGORA
,然后,点进去修改即可。
gw_1
和gw_2
均为网关名称,下图所示:添加节点后,只需要在路由或其他脚本中调用即可,路由中使用时参考sofia/gateway/${distributor(xui)}/$1
,其中xui即分配器名称。当有通话时,会根据权重使用gw_1
或gw_2
。
XCC模块主要是实现控制XSwitch,程序员不用纠结于XSwitch的内部逻辑,从更高的视角分析业务需求,进而调用合适的API进行控制。
debug
:调试日志级别,
0~7。nats‑url
:NATS的地址,如nats://127.0.0.1:4222
,如果不配置则不连接NATS。publish‑events‑subject‑prefix
:事件的Subject
前缀,如.event
,将会变为cn.xswitch.ctrl.event.CHANNEL_ANSWER
之类。cdr‑format
:CDR
的格式,可以在CDR
中选一种格式,目前支持CUSTOM。xml‑handler‑bindings
:XML绑定,不同的Section
以│分隔,如directory│config
。cdr-subject
:CDR事件名,如填写cn.xswitch.cdr
。绑定哪些事件。绑定的事件会向NATS
发送,如果设置为ALL
则会绑定所有事件。发送的Topic
可以由publish‑events‑subject‑prefix
参数改变,如:
cn.xswitch.ctrl.event.CHANNEL_ANSWER
cn.xswitch.ctrl.event.CUSTOM.sofia::register
如果你想订阅通话相关事件,可以绑定如下几个事件
CHANNEL_CREATE
//通话创建事件CHANNEL_STATE
//状态CHANNEL_ANSWER
//应答CHANNEL_HANGUP_COMPLETE
//挂机结束挂机结束后话单指定事件,默认如下字段参数说明:
caller_id_name
//主叫号码destination_number
//
被叫号码uuid
//通话uuidstart_stamp
//开始时间answer_stamp
//应答时间end_stamp
//结束时间duration
//总时长billsec
//计费时长hangup_cause
//挂机原因context
//呼叫源direction
//方向caller_id_name
//主叫名称mod_xcc
模块参数设置:
nats-url
设置(默认无须修改)publish-events-subject-prefix
设置(定义订阅事件前缀,主要用于后续订阅需要统一),比如cn.xswitch.ctrl.events
,然后开启即可;cdr-format
设置(话单格式),默认CUSTOM
即可,只需要开启cdr-subject
设置(话单订阅事件名,用于后续客户订阅话单信息),比如cn.xswitch.cdr
如下图所示:
如下图所示:
第三步:写订阅代码,现提供nodejs
下的demo,如events.js,代码如下:
const NATS = require('nats')
// nats_url对应配置文件中nats‑url的值
let nats_url = process.env.NATS_URL;
console.log("Connecting to " + nats_url)
const nc = NATS.connect(nats_url);
console.log("Event started, waiting ...")
// controller handler 订阅事件,其中`cn.xswitch.ctrl.events`对应xcc配置文件中的`publish‑events‑subject‑prefix`中的值
.subscribe('cn.xswitch.ctrl.events', function (msg, reply, subject, sid) {
ncconsole.log('Received a message: ' + subject)
console.log(msg)
})
function wait() {
// console.log('tick ... ');
setTimeout(wait, 3000);
}
wait();
// Close connection
// nc.close()
关于XCC,请参阅《XSwitch XCC API手册》,以及示例代码:https://git.xswitch.cn/xswitch/xcc-examples 。
微信小程序配置文件界面,通常不需要修改。
数据字典(Data dictionary)是一种用户可以访问的记录数据库和应用程序元数据的目录,用来描述数据库中基本表的设计,主要包括字段名、数据类型、主键、外键等描述表的属性的内容。在对数据库或应用程序结构进行修改时,其内容可以由DBMS自动更新的数据字典。
数据字典主要仅系统内部使用,用户一般不需要修改。如需修改,请咨询XSwitch工程师。
点击【新建】,输入域、键、值、描述等,点击【保存】即可。
点击右上角【编辑】,只能改动“值”对应的内容,或者点击蓝色的“域”或者“键”,进入编辑界面,可对所有文本框进行修改。
Event Soket配置文件界面,非必要不用修改。在做二次开发时可以修改监听IP等信息。
显示系统运行时间、版本信息、CPU、呼叫并发等各种系统信息。
显示系统中当前是否存在通话以及查看正在通信中的账号及信息。
此页面显示当前正在通话的Session状况,具体包含UUID、主/被叫号码、来/去话状态、通话创建时间。
正在通信中的电话,通常一个通话有两个通道,可查看通道信息。如果是呼入会议一般一个成员只有一个通道。
此界面显示所有注册上的账号信息。
分机注册成功后,才可作为被叫呼叫,可查看账号是否注册成功。
此界面显示所有已经签入队列坐席状态信息
显示所有FreeSWITCH多中模块状态报告信息,其中各部分所代表含义如下:
LDAP(Lightweight Directory Access Protocol,轻量目录访问协议),是一种 C/S(即“客户端/服务器”)模式的协议,基于此协议可实现“客户端访问服务器目录”的功能。
LDAP服务器方便用户集中管理电话簿。支持LDAP功能的IP话机通过设置LDAP服务器,可实现在话机上快速查找LDAP上的联系人信息,而不需要在本地维护电话簿。
LDAP服务为新的镜像服务,服务取系统中分机和联系人信息。该功能默认不启动,默认端口为3893
。如需LDAP服务,请提前联系相关负责人。
本文以Grandstream GXP1625
话机的LDAP功能。
登录话机网页,进入【电话本】 ⇨ 【LDAP】,配置LDAP客户端,参数设置如下图所示::
192.168.3.70
;3893
;dc=xswitch,dc=cn
;cn=admin,dc=xswitch,dc=cn
;*
”代表任意字母,“%
”代表输入的字符串,用于筛选条件的前缀(|(cn=%))
;*
”代表任意字母,“%
”代表输入的字符串,用于筛选条件的前缀(|(cidName=%))
;cidName
;cn
;%cidName
;1
至3000
。默认为50
条;0
至180
,默认即可;%cidName
。登录方位话机网页,在页面点击【电话薄】⇨【LDAP】,配置LDAP客户端,参数设置如下图所示::
192.168.3.70
,端口对应3893
;dc=xswitch,dc=cn
;cn=admin,dc=xswitch,dc=cn
;*
”代表任意字母,“%
”代表输入的字符串,用于筛选条件的前缀(|(cn=%)
);*
”代表任意字母,“%
”代表输入的字符串,用于筛选条件的前缀(|(cidName=%)
);1
至32000
。默认为50
条;cidName
;cn
;Zopier Biz
软电话。Settings > Preferences > Contacts > LDAP Options
。Use this server to search for contacts
。LDAP
客户端。参数设置 | 说明 | 值 |
---|---|---|
LDAP server | 系统IP地址 | 192.168.3.x |
Password | 管理员的密码 | password |
CN | LDAP服务器的用户名 | cn=admin,dc=xswitch,dc=cn |
DN | LDAP服务器的目录节点 | dc=xswitch,dc=cn |
Result limit | 设置LDAP服务器搜索结果的最大条目 | 0 |
Min Chars to Search | 设置LDAP服务器搜索条件的最少字符 | 1 |
Fields to Search | 设置要获取的名字属性 | cn, cidName |
XMPP presence | LDAP中此栏的名称指向XMPP联系人的状态名称 | Do not use |
注意:LDAP功能需要在XSwitch端额外配置并启用LDAP服务器组件。
XSwitch功能强大,但强大就代表复杂、配置繁琐。没有一种系统能很好的适应所有情况,XSwitch在各种使用场景中做了一些权衡。
本章列举了一些典型的使用场景,在实际使用中可以参考进行配置,以便最大限度地发挥XSwitch的功能,同时以不失简洁高效。
你首先应该规划号段和号长,最好是有规律的,内部分机的号长最好也一致。XSwitch支持多种号长并存,但变长通常意味着你需要设置比较复杂的路由逻辑。以下是几种通用的分机号设置:
6
开头,支持100个分机8
开头,支持100个分机6
、7
、8
、9
开头,需要对每位数字设置路由,这时候建议扩展为4位小型IP-PBX通常只有一个管理员,管理员可以管理多个分机(如50
)。这时候没有必须建立多个管理员,除非用户需要登录系统进行一些自助服务,如看话单,听语音留言等。但国内用户不习惯使用语音留言,因而应用场景比较少。
如果需要用户账号,带来的复杂性不仅仅是创建账号那么简单,还要求管理员理解用户和分机的对应关系,用户密码的分发逻辑,重置账号密码、甚至权限管理等。
在小型IP-PBX中,大家都使用同样的域登录系统。如果在系统安装时在后台配置了force_domain
选项,则话机可以使用任何域注册,系统强制使用默认的域。
小型IP-PBX一般放在企业内网,员工也不会主动攻击系统,因而不需要太多考虑安全性。
所以,对于100
人以下的小公司,一种典型的分机和会议室配置是:
0
110
、119
以及所有手机号等如果你有多个分支机构,建议把系统放到公网服务器或云服务器上。不同分支机构规划不同的号段。
为了防止有人在公网上扫描系统,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,如:
在XS2上也做对应的设置,双方就可以互拨,也可以使用对方的中继和路由规则出局。
XSwitch的设计理念是为了保持简单,仅支持一个租户,如果需要多租户,就为每个租户跑一个XSwitch Docker容器或者一个独立的虚拟机,每个租户都有自己的数据库和域名,XSwitch云就是这么做的。但是在有些情况下,这种强隔离手段有些重,因此,我们也提供轻量级的隔离。
系统有限的支持多租户功能。XSwitch底层完全支持多租户,但在系统界面上没有强隔离手段。
注意:如果用户登录XUI Web界面,则可以看到其它租户的分机等信息。如果是基本XSwitch API做二次开发,则完全可以忽略这个限制,在自己的界面上做租户隔离。
XSwitch支持无XUI运行,又分为以下几种:
XSwitch支持弹性伸缩,但弹性伸缩通常需要二次开发,跟多种运维系统和工具对接。详情请咨询我们的工程师。
与其它系统对接有很多方法,根据不同的使用场景大约有以下几种方式。
如果运营商提供IMS线路,通常需要注册,根据运营商提供的以下信息建一个网关:
ims.beijing.chinamobile.com
之类将网关挂在public
这个SIP
Profile上,以便能接收来话。
去话:本地电话拨打IMS
做一条路由,目的地选择这个新建的网关。
来话:IMS拨打XSwitch
根据运营商提供的DID(通常跟用户名差不多),做一条路由,可以路由到IVR,也可以根据DID与分机一一对应(在DID菜单中设置)。
需要的参数:
0
之类给对端提供的参数:
去话:
ip
ip:port
ip:port;transport=tcp
来话:
public
Profile对应的IP地址和端口(默认为5080)FXS口的模拟网关用于把普通的模拟话机(老式话机)变成SIP话机。
FXO口的模拟网关用户连接外线,即运营商的线路。
来话:
public
Profile指定的端口去话:
有时候,模拟网关的IP不可预测,或在NAT后面不可达,如XSwitch在云端但模拟网关在办公室的场景。
来话:
去话:
XSwitch提供音视频会议功能,功能强大而灵活,但在使用前需要做一些基本的配置。
*86
72
,位长9
71
,位长9
最好选一个专用号段作为会议号段以免与系统冲突。如果直拨本地网号码(外线不加0
),一般来说本地网号码都是7-8
位,因此可以设置更严格的路由,与位长为9
的会议字冠区分。
如果需要邀请,则还需要进行邀请相关的接入设置,如规划DID等,详询系统支持工程师。
IP与IP对接需要根据使用场景考虑是否对对端的IP进行验证,以保证呼叫的安全性。
感谢您使用XSwitch。
XSwitch可谓功能极其强大,使用起来极其灵活。但并不是任何人都能驾驭极其强大的“野马”,因此,我们花了很大精力驯服它并给它套上了Web管理界面的“枷锁”。如果您觉得这些这些枷锁限制了您的想象力及使用空间,欢迎联系我们,获取更深入的支持,一起探索XSwitch背后更深层的秘密。
您可以用以下方式联系我们,获取更多技术支持和文档资料。
如果您是通过代理商或服务商购买我们的产品,请优先联系您的服务商,他们往往比我们更了解您及您的使用场景,离您更“近”也能提供更贴心的服务。