odoovoip集成国产XSwitch实时音视频通信

odoo原生企业版内置的软电话解决方案是对接Asterisk这种VoIP PBX系统,七年前我则二次开发过基于FreeSWITCH的呼叫中心CRM模块一体化解决方案。这些年也陆陆续续的对这两大网络电话交换机系统的发展迭代进行了关注学习,直到XSwitch的V6版本发布开始推出了社区版和企业版,这熟悉的味道又来了:)

XSwitch可提供一站式语音、视频、会议、AI 解决方案,连接一切,满足企业多样化实时音视频通信需求,支持SIP、WebRTC等众多通信协议,兼容所有FreeSWITCH API接口:Lua、ESL、HTTAPI等,兼容第三方功能模块。

一个是企业应用层连接一切,一个是基础通信层连接一切,那一旦将这两层上下互通后真是未来可期且想象空间天花板无限高了。

freeswitch http https ws wss nginx domain default port config

现代H5浏览器产业链越来越丰富,http+websocket+webrtc+sip组合已经是一种非常成熟的web原生音视频通讯解决方案

FreeSWITCH是一个开源的电话软交换平台,早在SIP年代就非常有名,自从支持WebSocket传输sip信令后与Web结合玩法多了许多

WebRTC提供了音视频通讯的核心技术,包括音视频的采集、编解码、网络传输、显示等功能,并且还支持跨平台,但就是没有信令协议部分

Chrome、Firefox等浏览器为了从保护用户隐私绝对安全角度考虑,纷纷提高了Web原生应用访问摄像头、麦克风的门槛:如不是用https、wss安全协议则会有各种警告及确认甚至直接拒绝

WS、WSS其实就是HTTP、HTTPS的WebSocket协议名称,其使用方式及默认端口都完全一致

综上所述,如果都用同一个域名地址承载web sip相关服务方便用户使用,就需要在nginx上做一些优雅的配置

其对应freeswitch相关端口配置片断如下

注:
sip和rtp端口不经nginx直连,但需要防火墙做相应的白名单
ws5066端口和wss7443端口间接通过nginx的http端口和https端口反向代理提供服务
nginx默认的http80端口和https443端口又用来提供webrtc前端相关资源访问

阿里云ecs部署freeswitch默认event socket listen port 8021 ipv6问题

阿里云ecs服务器目前还不支持ipv6
freeswitch默认event_socket模块配置
/etc/freeswitch/autoload_configs/event_socket.conf.xml

里的<param name=”listen-ip” value=”::”/>是ipv6地址的表现形式,其等同于ipv4的0.0.0.0
这就造成服务启动后,由于无法绑定ipv6地址,也就不能通过fs_cli命令行进行控制台管理了
这就解释了同样的配置在本机一切正常,部署到阿里云上就无法管理

知道原理解决起来就简单了,将listen-ip的value根据实际需要改成127.0.0.1、0.0.0.0或内外网卡的ipv4地址即可