手机实时提取SIM卡打电话的信令声音-智能拨号器的SIP线路-双卡双待单通方案

手机实时提取SIM卡打电话的信令声音

--智能拨号器的SIP线路-双卡双待单通方案

  • 一、前言

蓝牙电话的技术方案最初是从蓝牙耳机和车机蓝牙的使用领域延伸出来的技术方式。通过蓝牙的HFP协议,把手机通话的声音和通话事件状态提取出来进行复用和处理。但中国大陆现行的手机基本都是双卡双待手机,在外呼的时候通常采用默认呼叫卡或者呼叫的时候在手机屏幕中弹框进行实时选择后外呼。通常的蓝牙耳机和车机拨打手机电话外呼时基本都是手机中设置了默认拨号卡的方式进行呼叫。

来电时,不同的SIM卡来电在手机上是可以正常的展示是SIM1或SIM2卡产生的来电。但在蓝牙耳机中,由于它没有界面,以及蓝牙HFP协议并不存在卡1卡2的扩展指令,因此它们仅仅能够知道有来电、对方号码是多少。但是并不会知道本地到底是哪个SIM卡接收的来电。

智能拨号器Android的app中,前期由于采用蓝牙电话的方案进行外呼和来电的处理,在技术上同样无法做出SIM卡1和SIM卡2的区分。因此才衍生出了一系列的“切换SIM卡”、“手机固定SIP账号”等这些需求。

事实上,经过了前面几个篇章的技术预研,我们发现做为一个纯Android的app,其实完全可以做到代码在呼叫过程中指定到底是由哪一个SIM卡发起呼叫,也能做到来电时感知到是哪个SIM卡产生的来电。

这样的话,原先规划的配置一个SIP坐席,通过呼叫中心一对多配置,然后拨打一定周期和频率后就自动切换SIM卡的操作方式已经不能适应实际用户的使用场景。

我们依托现有技术,完全可以把配置两个SIP坐席号,使它们同时在线;呼叫时随机选择一个坐席对应的中继SIM卡进行呼叫即可,当手机处于呼叫状态时,当前SIP坐席或者另一个SIP坐席打算发起新呼叫时,由手机主动返回486-busy here即可。

来电的时候采用同样的调度方式,识别出来电的本地SIM卡的手机号,找到对应的SIP坐席,将通话业务和语音调度到对应的SIP坐席上接听或操作即可。

这样的话,就构成了【智能拨号器SIP线路的双卡双待单通】的方案,使SIP坐席跟双卡SIM手机一样,能同一时刻同时在线两个坐席,可以分别进行外呼和来电的操作。如果手机本身是“双卡双待双通”的手机,就更加不用考虑,默认就能支持两路并发的呼叫。

  • 二、双SIP坐席+双SIM卡的外呼方案

本章的详细技术细节可以参考《手机实时提取SIM卡打电话的信令声音-智能拨号器的双SIM卡切换方案》这篇文档的实现方式。主要是Android操作系统本身天然就具备了双卡或多卡的对外呼叫方式。

在本次方案中,我们基于这个技术实现,将两个SIM卡的手机号,分别注册为SIP中继号码,并将其分别分流到两个局域网的SIP坐席上,使这两个SIP坐席号同时在线。

SIP坐席外呼时,由于手机设备是双卡双待“单通”的方式,因此这两个SIP坐席之间、以及单SIP坐席同时外呼多个目标时,手机均会自动的拒绝新呼叫的发起(直接返回486-busy here),最大限度的保障当前呼叫会话的完整进行。

  • 三、双SIM卡的来电方案

本章的详细技术细节,在上一篇的《手机实时提取SIM卡打电话的信令声音-双卡手机来电如何获取哪一个卡的来电》中进行了详细的论述。来电时,手机设备的app,能够根据内部广播的事件触发,从广播参数中读取得到来电所在的SIM卡槽和来电号码。

手机app可以根据这个卡1/卡2的来电、以及来电号码,从SIP连接中找到对应的局域网SIP坐席,并将来电和对应的呼叫会话调度到对应的SIP坐席当中。

在呼叫过程中,由于通话状态和控制命令仍然依赖蓝牙的AT指令来进行,并且通话的声音仍然需要依赖蓝牙SLC连接建立的sco连接来进行传输,因此手机app仍然需要依赖外置的USB蓝牙模块+手机自带的蓝牙模块来进行,这部分的功能和呼叫逻辑与之前的蓝牙电话方案保持一致。

  • 四、单SIM卡的呼叫方案

智能拨号器app在以下两种场景会存在单SIM卡的呼叫场景:

  1. 手机只插入了1张SIM卡。
  2. App中配置了【固定SIP账号密码】

在这些情况下,智能拨号器app仍然采用手机自带的【默认拨号卡】的呼叫策略。此时,蓝牙电话方案与蓝牙耳机、蓝牙车机拨打手机电话的使用方式完全相同。

  • 五、手机固定SIP账号密码的方案

在实际使用过程中,手机终端作为运营商基站入网的终端节点,理论上不管它插入几张SIM卡甚至根本没有插入卡,只要手机它能正常发起电话呼叫,蓝牙电话方案都应该能将其分流到局域网SIP坐席中。

在这样的情况下,把手机设备作为SIP坐席的目标节点来进行对接,app中增设了【固定SIP账号密码】的功能,用户使用时可以在app的设置界面中手动录入中继SIP账号密码与局域网SIP服务器地址,或者输入序号或手机号进行账号的拉取。录入完毕后保存即可将中继SIP号码保存到手机中。

在SIP注册和呼叫时,手机app自动会读取这个【固定SIP账号密码】的数据,注册到局域网SIP平台中。这样,不管手机中插入或更换了什么SIM卡,手机号有任何不同,均不影响局域网SIP这一侧的功能和业务。

【固定SIP账号密码】的功能,就是为了这种场景而使用的,不管手机更换了多少张SIM卡,SIP坐席中对这个是不关注的。相反,默认方式是根据手机号来进行局域网中继SIP账号的注册和登录,插入1张SIM卡就注册一个SIP坐席,插入2张SIM卡就注册两个SIP坐席,若中途更换了SIM卡,则SIP会退出旧坐席号登录新手机号,调度得更加灵活。

  • ‌六、切换SIM卡的操作方式

新的【双SIP坐席+双SIM卡的外呼方案】不再需要做切换SIM卡的操作‌,默认两张SIM卡的SIP坐席都同时在线。

针对上章节的“‌单SIM卡的呼叫方案”,手机app仍然保留了切换SIM卡的操作方式。用户在主界面右上角的设置图标点击出现的菜单中,可以点击【切换SIM卡】的菜单项,点击后自动跳转到手机本身的设置应用中,对手机SIM卡的默认拨号卡和默认上网卡进行设置。

SIM卡的默认拨号卡切换后,SIP坐席在【‌单SIM卡的呼叫方案】外呼时,将采用默认拨号卡的方式进行外呼,此部分功能与蓝牙电话方案之前的呼叫方式保持一致。

  • ‌七、局限性和风险点

由上一篇文章《手机实时提取SIM卡打电话的信令声音-双卡手机来电如何获取哪一个卡的来电》中可知,当前这一批双SIM卡呼叫方案的功能,对Android操作系统的版本依赖相当的大‌。目前基本都要求手机安卓系统版本要在Android6.0及以上。

在Android系统中,API Level大于等于23,即Android6.0版本的手机,在大陆乃至全球市场上占据几乎100%的市场份额。因此在手机设备选型上,当前的双SIM卡呼叫方案基本不存在设备选型的问题。

同时,由于通话状态和控制命令仍然依赖蓝牙的AT指令来进行,并且通话的声音仍然需要依赖蓝牙SLC连接建立的sco连接来进行传输,因此手机app仍然需要依赖外置的USB蓝牙模块+手机自带的蓝牙模块来进行。

蓝牙电话方案中针对接通状态、来电接听/拒接操作,均通过蓝牙HFP协议的AT指令来完成。假设蓝牙模块在使用中因故障不能正常工作,或者后续规划的去掉外置蓝牙模块的场景下,手机的多SIM卡呼叫需要针对这块内容进行专项的分析和深入挖掘。

  • 八、总结

从这一期的版本起,智能拨号器的手机app默认自动支持局域网双SIP坐席同时在线的能力。在呼叫和来电时手机app自动可以根据电话的呼叫方的手机号码,自动选择SIM1/SIM2的的手机卡进行外呼和来电的调度。真正的实现了局域网SIP坐席的双卡双待单通的电话呼叫方案。


上一篇:手机实时提取SIM卡打电话的信令声音-双卡手机来电如何获取哪一个卡的来电

下一篇:编写中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/891187.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTML——26.像素单位

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>像素</title></head><body><!--像素&#xff1a;1.指设备屏幕上的一个点&#xff0c;单位px&#xff0c;如led屏上的小灯朱2.当屏幕分辨率固定时&…

【C语言】库函数常见的陷阱与缺陷(三):内存分配函数[4]--free

C语言中的free函数用于释放之前通过malloc、calloc或realloc动态分配的内存。然而,在使用free函数时,开发者可能会遇到一些陷阱和缺陷。 一、功能与用法 free 函数是 C 语言中用于释放动态分配内存的关键函数。在程序使用 malloc、calloc 或 realloc 等函数在堆上分配了内存…

LeetCode:513.找二叉树左下角的

跟着carl学算法&#xff0c;本系列博客仅做个人记录&#xff0c;建议大家都去看carl本人的博客&#xff0c;写的真的很好的&#xff01; 代码随想录 LeetCode&#xff1a;513.找二叉树左下角的 给定一个二叉树的 根节点 root&#xff0c;请找出该二叉树的 最底层 最左边 节点的…

微服务-Sentinel新手入门指南

微服务为什么要使用流控降级组件 为了提高系统运行期间的稳定性和可用性 在微服务环境下&#xff0c;服务之间存在复杂的调用关系&#xff0c;单个服务的故障或过载可能会迅速影响到整个系统&#xff0c;导致服务雪崩效应。流控组件可以限制进入系统的流量&#xff0c;防止系…

如何使用 ChatGPT Prompts 写学术论文?

第 1 部分:学术写作之旅:使用 ChatGPT Prompts 进行学术写作的结构化指南 踏上学术写作过程的结构化旅程,每个 ChatGPT 提示都旨在解决特定方面,确保对您的主题进行全面探索。 制定研究问题: “制定一个关于量子计算的社会影响的研究问题,确保清晰并与您的研究目标保持一…

Mcnemar‘s exact test

与卡方检验的区别 与fisher exact test区别

四大自平衡树对比:AVL树、红黑树、B树与 B+树

AVL树、红黑树、B树和B树的对比与应用场景 树系列相关文章&#xff08;置顶&#xff09; 1、从链表到平衡树&#xff1a;二叉查找树的退化与优化 2、自平衡二叉查找树&#xff1a;如何让二叉查找树始终保持高效 3、AVL树入门&#xff1a;理解自平衡二叉查找树的基础 4、红黑树…

设计模式-创建型-单例模式

1. 单例模式简介 单例模式&#xff08;Singleton Pattern&#xff09;是一种常见的创建型设计模式&#xff0c;它确保一个类只有一个实例&#xff0c;并提供全局访问点。在很多情况下&#xff0c;我们只希望某个类在整个应用程序中有一个唯一的实例&#xff0c;且该实例需要在…

全面Kafka监控方案:从配置到指标

文章目录 1.1.监控配置1.2.监控工具1.3.性能指标系统相关指标GC相关指标JVM相关指标Topic相关指标Broker相关指标 1.4.性能指标说明1.5.重要指标说明 1.1.监控配置 开启JMX服务端口&#xff1a;kafka基本分为broker、producer、consumer三个子项&#xff0c;每一项的启动都需要…

深入解析 Tengine:高性能 Web 服务器与反向代理的企业级应用

Tengine 的目的 Tengine 是由淘宝技术团队&#xff08;现阿里巴巴&#xff09;基于 Nginx 开发的一款高性能 Web 服务器和反向代理服务器。它的主要目的是在 Nginx 的基础上增强性能、扩展功能、提升稳定性&#xff0c;并为大规模、高并发的互联网应用提供更高效的解决方案。 …

网络安全威胁2024年中报告

下载地址&#xff1a; 网络安全威胁2024年中报告-奇安信

Spring Boot 多数据源解决方案:dynamic-datasource-spring-boot-starter 的奥秘(下)

在上一篇博客《Spring Boot 多数据源解决方案&#xff1a;dynamic-datasource-spring-boot-starter 的奥秘》介绍了dynamic-datasource-spring-boot-starter的自动配置类和配置属性类之后&#xff0c;本文继续来剖析多数据源是如何切换的&#xff0c;什么时候切换的。 前文中提…

AI辅助编码提高病案首页主要诊断编码正确率数据优化方法(2025增量优化版附python源代码)

一、引言 1.1 研究背景与意义 在医疗信息化进程中,病案首页作为病历信息的核心浓缩,承载着疾病分类、医疗统计、医保结算等关键任务,其主要诊断编码的准确性至关重要。准确的编码不仅是医疗质量评估、科研数据分析的基石,更是合理分配医疗资源、保障医保精准支付的关键依…

雷电模拟器安装LSPosed

雷电模拟器最新版支持LSPosed。记录一下安装过程 首先到官网下载并安装最新版&#xff0c;我安装的时候最新版是9.1.34.0&#xff0c;64位 然后开启root和系统文件读写 然后下载magisk-delta-6并安装 ,这个是吾爱破解论坛提供的&#xff0c;号称适配安卓7以上所有机型&#x…

模型 10-10-10旁观思维

系列文章 分享 模型&#xff0c;了解更多&#x1f449; 模型_思维模型目录。超脱当下&#xff0c;透视决策长远影响。 1 10-10-10旁观思维的应用 1.1 职业选择决策 背景&#xff1a;小张是一名大学毕业生&#xff0c;面对未来职业的选择感到迷茫。他擅长营销、策略和经济学&a…

ORM框架详解:为什么不直接写SQL?

想象一下&#xff0c;你正在开发一个小型的在线书店应用。你需要存储书籍信息、用户数据和订单记录。作为一个初学者&#xff0c;你可能会想&#xff1a;“我已经学会了SQL&#xff0c;为什么还要使用ORM框架呢&#xff1f;直接写SQL语句不是更简单、更直接吗&#xff1f;” 如…

32位高性能单片机电子烟方案

电子烟单片机方案的核心构成要素涵盖单片机&#xff08;MCU&#xff09;、气动开关&#xff08;咪头&#xff09;、加热元件、电池以及可选的显示屏等。单片机作为电子烟的控制中枢&#xff0c;承担着管理电子烟各项功能的职责。 在电子烟方案中&#xff0c;单片机不仅操控加热…

合合信息亮相CSIG AI可信论坛,全面拆解AI视觉内容安全的“终极防线”

合合信息亮相CSIG AI可信论坛&#xff0c;全面拆解视觉内容安全的“终极防线”&#xff01; &#x1f42f; AI伪造泛滥&#xff0c;我们还能相信“眼见为实”吗&#xff1f; 近期&#xff0c;由中国图象图形学学会主办的CSIG青年科学家会议 AI可信论坛在杭州成功举办。本次论…

不使用 el-popover 组件手动创建一个 div 作为 Popover

不使用 el-popover 组件&#xff0c;而是手动创建一个 div 作为 Popover&#xff1a; <template><el-table :data"tableData"><!-- ...其他列 --><el-table-column label"操作"><template slot-scope"scope"><…

使用 Spring AI Alibaba 框架实现文生图功能详解

一、前期准备 1.注册阿里云账号并获取相关权限 前往阿里云官网(https://www.aliyun.com/)完成注册流程,登录账号后,在阿里云控制台中搜索并开通图像生成服务(例如阿里云通义千问 - 文生图服务)。确保账号已完成实名认证,并且在开通服务过程中了解服务的计费方式、使用限…