蓝牙电话方案-如何对接WebRTC的实时媒体流-技术预研
背景
最近在弄自动AI外呼机器人,遇到了一个问题,现在好多市面上的AI机器人方案,为了兼容Web网页的使用方式,除SIP协议之外,部分外呼机器人会优先(默认)采用WebRTC的方式进行传输。
当前蓝牙电话方案中,手机APP提取到电话通话的声音后,目前有两种方式将数据同步到WIFI、4G/5G网络:
1、局域网tcp的方式传输通话事件和状态,局域网udp的方式直接收发语音数据流。
2、以SIP协议来传输通话事件和状态,以RTP(带时间戳的udp)的方式来收发语音数据流。
但是很明显,这两种方式的数据传输途径,与WebRTC这种融合传输的方式(通常以datachannel德方式传输)不太一致。
因此,蓝牙电话方案的对外数据传输的技术演进上,就面临一个选型的权衡问题:是否需要兼容支持WebRTC接口传输?以及如果要支持,需要在网络拓扑的哪一段对它进行扩充和支持?
技术方案思考:
当前蓝牙电话方案,通过SIP协议实现通话状态事件和电话语音数据的分发和传输,即俗称的“手机转SIP”,其SIP对接的软交换平台默认为FreeSwitch和VOS。当前市面上的软交换平台或多或少都有对WebRTC进行兼容(比如FreeSwitch的mod_verto模块)。那么是否应该由手机APP直接转webrtc直连?或者每通呼叫都由【SIP-mod_sofia-mod_verto-AI机器人】的方式进行电话呼叫内容的转换?
这里面其实有一个最大的问题:绝大部分的AI机器人公开的webrtc接口,均为webrtc客户端,即机器人通过 wss:// 连接 FreeSWITCH,AI机器人本身并不会提供WebSocket Server出来供其它节点进行连接(这个也很好理解,这个架构允许AI机器人部署在内网,并对外正常提供服务)。
因此,后续我们将花费一两个篇章的内容,详细的论证和分析一下:蓝牙电话到底是否需要对webrtc进行支持,以及我们在这个过程的思考和选型经过,感兴趣的朋友可以关注我们,或者在评论区留言私信探讨这个方向。
