手机实时提取SIM卡打电话的信令和声音-(五、最终解决方案-智能拨号器方案)

手机实时提取SIM卡打电话的信令和声音-(五、最终解决方案-智能拨号器方案)

前面的篇章中,我们提到行业用户面临的需求是:需要对SIM卡的通话能力进行实时的干预和管理,具体的业务需求包括:播放IVR、AI接听并对话交互、AI拨打进行语音通知并收集用户语音反馈、共享SIM卡套餐分钟数、对SIM电话全程实时录音、以及后台坐席拨打等实际场景。

在前面的预研和层层分析中,我们从GSM硬件的模块引脚、安卓打电话RIL架构、Android声音策略等角度进行分析,确定了所有的通话语音数据都会从模块进入手机底板,进行按声音策略调度和分流的逻辑。

同时,我们参照“小爱通话”的方式,去修改安卓源码中的电话策略和声音逻辑后,用血一般的教训,知晓了手机“刷机”和“Root手机”这些行为不具备可行性的道理。

在最后面的篇章中,我们依据Android声音策略和通道的规划,创造性的提出了:在手机不刷机的前提条件下,对USB数据和蓝牙这两个通道进行深入挖掘和探索的创新性思想。

一转眼,智能手机从出现到现在,已经整整16年了(2007-2023)。近十年来,随着各厂商操作系统的品牌逐步的完善(MIUI、EMUI、Flyme、ColorOS等),手机品牌厂商逐步的收紧了刷机的入口。很多品牌和型号的手机已经不开放刷机的渠道,就算还存在入口的品牌,也对解锁和刷机操作设置了层层条件和阻碍。

早几年的时候,网上对这块的内容,讨论得也很激烈。诸如下述这种文章和讨论,经常在各个讨论区板块中可以看得到:《为什么越来越少的人刷机了?》

https://www.zhihu.com/question/271287201/answer/2083626973

其实不要说刷机,手机厂商的每一次自诩的“创新性”改动,都会引起一批的开发者适配和调整。就比如鸿蒙(HarmonyOS)2.0后期和3.0,为了省电策略,参照iPhone的墓碑机制,推出的“杀后台”这个策略,就难倒了一批有后台服务或进程的常规应用(切换到后台5秒,应用和应用下的所有进程,都会被杀死)。

后来我们针对这个场景,搜索后发现,切换到后台的应用,经以下3个步骤,即可防止进程被杀死。步骤大致如下:

1)应用的权限中,开启悬浮窗(或后台弹窗)--非常关键

2)手机的设置中,应用启动管理,将应用从自动管理改为手动管理,并勾选【允许后台运行】

3)在开发人员选项中,拉到最底下,应用-后台进程限制,将其从标准限制改为【不得超过4个进程】

也就是说,高版本的Android,需要依赖“悬浮窗”才能实现后台保活。

这个现象,除了在鸿蒙(HarmonyOS),我们在部分的其它手机,同样发现存在这个情况,区别仅是它们可能不是5秒,而且会依赖于手机内存的大小。

根据前面篇章的探索方向,本篇中将对USB数据和蓝牙,进行深入探索和分析。

LibUSB的使用

Android本质上,其实算Linux的一个分支(抛开bionic和libc等差异)。Linux中针对USB数据,最常用的开源库为libusb(iOS中由于重写了编译器,情况会有所不同)。依托于GCC的编译体系,Android中针对libusb及其扩展的应用,也同样能够正常的编译和运行。(跟Linux有区别,主要差异在两个方面:1、Root和用户权限的问题 2、安卓的授权是针对用户内的App单独授权)

我们随便在网上检索一下,就能简单的获取到诸如下方的调用成功的例子:

《Android从USB声卡录制高质量音频-----使用libusb读取USB声卡数据》

http://www.taodudu.cc/news/show-5406859.html

也就是说,通过应用弹框授权的方式,Android可以允许普通的应用app,调用libusb这个开源库,对Android中USB设备进行数据的读写和控制。

是不是很眼熟?我们在去年对【电脑使用蓝牙打电话】的技术预研中,《电脑蓝牙打电话-总结(五、玖云33e9cloud)》一文里,针对windows操作系统,曾经推导出一个惊人的现象:

缓过劲来,我们不禁思考,为什么我要按微软的蓝牙框架的逻辑去搜索和实现这一块的功能呢?前面第一篇章我们讲过“Windows自带的蓝牙驱动,通常包括用于传输信令、含有RFComm的驱动,以及用于传输SCO语音的媒体驱动”,但事实上真的如此?我们真的需要这么多繁复冗杂的驱动和调用逻辑?

就以我们手上的10块钱的USB Bluetooth Dongle为例,这玩意对于电脑而言,就是一个纯粹的USB设备,那我把它当作USB字符设备和块设备来进行ioctl和bulk_read/bulk_write不也一样可以?从这个理念出发,上述的什么RFComm驱动、SCO媒体驱动都不过是USB驱动之上的子集。既然是这样,何必还要跟着微软玩?开源社区中对这一块的扩展已经非常的丰富了,反正微软到目前为止,在蓝牙特别是我们预研的这块蓝牙电话领域也没什么建树。

在Windows体系中,有了USB Dongle硬件,下一步需要一个特定的驱动,然后才是在这个驱动上参照示例来实现各种功能的应用。我们在GitHub中很容易就能找到一款USB开源驱动libusb。

————————————————

版权声明:本文为CSDN博主「limingade」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:
https://blog.csdn.net/limingade/article/details/125641324

这就说明,libusb不仅仅能用于Linux、嵌入式Linux、windows,还能用于Android、mac的OSX,甚至是iPhone/iPad为代表的iOS。(事后证明,普通的libusb无法适用于iOS,需要进行一个专项的调整后才能使用

那么,我们当初选型时的玖云33e9cloud方案,除了我们当初看到的windows和mac的OSX方案,是否本身就有Android和iOS的方案呢?细思极恐。

再看玖云33e9cloud方案

我们回过头来再审视玖云33e9cloud方案,它使用蓝牙BT的HFP协议,将windows操作系统的电脑和任意带有蓝牙和SIM模块功能的手机进行绑定、连接和数据通信,其原理大致如下:

其公开的架构和规划中,本身就预留了局域网共享和移动端的扩展支持的能力。是否本身就有Android和iOS的方案呢?

我们进其官网【玖云33e9cloud官网:https://www.33e9cloud.com】去寻觅,没找到。但我是谁?人民币玩家,传说中的氪金大佬。几个电话打过去,与它们的团队进行友好交流后,发现真有现成的,而且是Android和iOS都有可用的方案。

其中Android版,就是我们本文准备要展开的【智能拨号器3.0】方案。

一顿操作,发现我们走了很多弯路。如果我们一开始不瞎折腾,直接到网上去寻觅可用的商用方案,估计这项目早就完结了,毕竟现在已是接近21世纪中叶的2023年,而不是2003年。我们自己的折腾似乎并没有太大的意义。

智能拨号器3.0

先上原理拓扑图,Android版的(从它官方文档中拷贝过来的,可以参考看看)。

我们从其官方下载渠道和介绍中,可以正常的获取该方案的描述说明和Android应用安装包,下载地址如下:

http://120.78.211.195:8060/Dialer.apk

《Dialer3.0智能拨号器Android版功能说明书》

为避免文档和当前版本的下载路径丢失,我们在CSDN同步上传了当前版本的app和文档,里面增加了部分我们对应用使用的不同机型适配的操作步骤(主要是杀后台),进行存档和下载。(仅供参考)

安装包:
https://download.csdn.net/download/limingade/88284233

文档:
https://download.csdn.net/download/limingade/88279844

另外,我们根据上一篇《电脑蓝牙打电话-总结(五、玖云33e9cloud)》文章中,对C#版测试工具的呼叫信令和媒体的工程,进行Android版的重写(仅仅是转换语言,其它逻辑都没动),使其能装在同一个手机中运行和试用,不用单独依赖电脑,有兴趣的同学可以下载来对比。原有C#版的测试工具源码和抓包:

链接:
https://pan.baidu.com/s/1ip6cNaHQeNRWuu1ICdxE7g

提取码:jp4c

Android版的调用示例程序:
https://download.csdn.net/download/limingade/88298157

从其拓扑图和官方描述的信息来看,这个方案依赖一个USB蓝牙的硬件(幸亏上次10块钱买的USB Bluetooth Dongle还没有丢掉)。同时由于手机没有预留标准USB这么粗的接口,所以还另外需要一个type-C转USB的转接头(如果是Micro-USB的就自己买对应的口)

注意:由于此种方式的USB蓝牙,使用的是OTG供电的模式,部分手机(如OPPO、VIVO)存在默认不开启OTG(默认5分钟不使用就自动关闭)。需要手动进入手机的设置界面中搜索OTG,跳转后手动开启该选项后,才可正常识别USB蓝牙。

由于一般的手机,只有一个暴露的USB接口,如果需要边使用边充电,也可购买带充电口的转接头,如下图,仅供参考。

由于转接头配件之前没有购买,我随便单独去拼多多搜索了一下【usb蓝牙】、【type-c转usb】、【type-c转usb可充电】,发现之前在淘宝10块钱还买贵了。转接头带USB蓝牙,加起来不到7块钱。随便买,喜欢哪个颜色哪个外形的配件自己下单。如下图:

从这个角度也说明了咱们国家的综合工业实力,确实是产能过剩了。

该【智能拨号器】app,说句实在话,用起来比较麻烦,主要关卡在第一次连接的时候,蓝牙需要进行配对。只有配对成功后,后续才能正常的连接和使用。

从其官方的说明书上来看,它具备了远程打电话切换SIM卡统计SIM卡当月已拨打的套餐分钟数并提醒、远程外发电话任务到手机进行逐个拨打、离线的话单和录音自动上传等功能。

外部应用的共享调用方式

由于该【智能拨号器】App默认是自动连接云平台的,正常情况下,连接会被独占式使用(而且会不停的抢通道入口)。

像我们这样的外部应用(Android应用或windows局域网exe应用)想要使用其功能,需要运行该【智能拨号器】App,在其右上角的设置图标,在设置界面中,将“协议栈启动模式”的值,改为“SDK对接”,才可正常留给外部应用访问,如下图所示:(当然,我试了,不改也行,就是偶尔莫名其妙信令被拦截和语音偶尔不太正常)

我们外部应用访问时,需要先启动【智能拨号器】App(可以将其设置为允许自启动,就可以省去这个步骤),插入USB蓝牙,即可正常使用我们的windows局域网exe应用或刚新鲜出炉的Android应用进行扫描、连接、呼叫、接听等正常操作。

注意:windows应用由于采用局域网共享的方式,需要修改其LinuxCmd.ini文件,将其访问IP指向为手机的IP地址。如下图:

指向后,即可正常在电脑中插入耳麦和喇叭,进行连接和通话了。

Android版应用要稍微麻烦一些,因为运行在同一个手机中,通话或来电时,手机的声音通道会被占用。应用App做不到一边从手机的听筒/扬声器中播放声音,同时一边提取电话声音,只能二选一。(方法就是自己在通话界面切换蓝牙/听筒/喇叭接听)

但貌似不影响我们最初需求的“用AI做自动应答、AI自动外呼、播放IVR后再人工接听”等能力的实现。

Android版的示例应用界面如下图所示:(新鲜出炉,功能还是偏弱了些,没来得及优化,还请多海涵)

我个人是建议,试用的同学直接使用windows电脑版exe应用,使用局域网的方式来试验,毕竟可以直接插耳麦进行直接通话,更直观。

再次贴一下Android版的示例源码下载地址,仅供参考:https://download.csdn.net/download/limingade/88298157

行业的支持

这也是本篇章要写出来的最基本的初衷,现在的手机卡,又便宜又好用,还很好办理。特别是以广电为首的第四大运营商,因为已知的发卡业绩考核压力等原因,推出普通用户和行业用户一批又一批的套餐,其它运营商也不甘人后。我们甚至听说有19元/1800分钟+300条短信这种价格的行业套餐。可以说是相当的实惠和平价了。

但是,我还是有话说,我们从最初立项开始做选型的时候起,就一直打算开拓海外市场,让印度、非洲地区、南美等各个国家和地区,都能因我们的方案而受益。

我们也没打算困顿在国内的一亩三分地中,跟运营商、虚商、行业政策斗智斗勇,这个绝不是我们的本意和初心。

所以,针对部分客户和试用过的同学说的,会不会被诈骗、金融催收等灰色产业地带的不法分子利用上?在这里我很明确的告知:不会,产品在规划之初就设计了各种实时检测和约束规则,有能力保证产品输出的客户的使用方式进行监管。

只是后面我们选型,采用的是第三方公司【玖云33e9cloud】的商用方案,具体解释权由它们输出,但是我们的最初的承诺和方向不会改变。

以下插播一段广告,感谢这两位朋友圈的同学,提供的推广文案。这里也顺便帮你们互相宣传宣传,仅供参考。

总结

兜兜转转,绕了一圈,最终还是实现了我们最初的需求:

我们最朴素的念头,是希望在当世大量手机的存量市场的前提下,采用一种所有手段都无法约束的标准化方式,打通互联网/移动互联网 与传统电话网络之间的隔离。用分布式、离散化的方式,让全世界各国的民众,都能简单的使用这种能力。

并且在行业客户的需求上,满足了【AI来电自动接听】、【所有通话都要有录音,可回溯与核查】、【套餐分钟数太多、打不完,想共享给部门内其它同事】、【SIM卡电话用AI来播出,收集用户的语音反馈】等相当特殊化的需求。

至此,项目选型和预研

结束,项目最终还是选型了“玖云33e9cloud”现成的扩展方案,完成项目和技术的选型工作。

最后,插入一段视频,一起感受一下AI通过SIM卡进行电话呼出的魅力:

AI通过SIM卡进行电话呼出

私下吐槽一下:为啥首发我会先在头条发,而不是先发CSDN?之前我没传头条。这几天发现,头条可以直接导入docx的文档,而CSDN要一个一个上传图片和视频??而且从word粘贴过来的内容,目录的序号还乱七八糟的。头条传一篇文档一分钟搞定,csdn至少需要10分钟,唉,累了,毁灭吧。后面会不会传这里,再说吧。


上一篇:手机实时提取SIM卡打电话的信令和声音-(四、辅助外设与商用SIM通话方案)

下一篇:蓝牙电话方案-外置配件的电商价格和下载链接的选型

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值