当前位置: 首页 > news >正文

Android应用app实现AI电话机器人接打电话

Android应用app实现AI电话机器人接打电话

--安卓AI电话机器人

  • 一、前言

【Dialer3.0智能拨号器】Android版手机app,由于采用蓝牙电话的方式来调用手机SIM卡发起呼叫、接听来电,并接收和处理通话的声音,通常我们以“蓝牙电话方案”来称呼它。

蓝牙电话使用的链路呼叫方式类似于“蓝牙耳机、汽车车机”通过手机拨打电话的方式,并在此基础之上扩充了“双卡同时在线,自由选择任意SIM卡呼出”、“手机app识别对方按下的DTMF按键”等辅助功能。

原有规划和产品演进中,蓝牙电话方案主要有两个演进方向:

  1. 手机app中操控通话行为并提取电话通话的语音,进行扩展功能和处理。常见的应用如来电IVR语音引导、来电AI接听并按业务常见应答,以及电话外呼时插入一段语音开场白+人工接听、AI外呼进行无效号码过滤等。此部分手机业务通常不涉及坐席的强插/强拆/监听等多用户协同操作方式。【AI电话机器人】就是此演进方向的一种具体应用。
  2. 对接呼叫中心或CRM,将SIM卡电话转换为中继线路或落地线路,接入局域网的SIP平台,电话呼叫操作不再通过实体手机的方式做外呼,而是利用呼叫中心原有的功能做多用户协同的对外呼叫。此部分操作通常采用SIP协议来进行线路的对接和融合。

功能拓扑图上,大致为下述图示的结构:

前期中,由于具体付费用户的需求,蓝牙电话方案投入了大量的精力和维护工作量在SIP中继和坐席的方向,即前述的第二类演进方向。对呼叫的稳定性、呼叫中心/CRM等SIP平台的适配等功能扩展提供了很大力度的支持,也取得了不错的商用成果(主要是并发量大,容易上量^V^)。

从这篇文章内容开始,本篇以及后续的功能开拓,将从已成熟稳定的SIP对接中脱身,专注于手机IVR语音引导和AI电话机器人领域的演进。通过提供通话底层SDK的方式,把针对手机本身的“号码清洗”“AI外呼”等功能给细化和完善起来。

本篇章主要从【智能拨号器SDK】的角度,梳理一下手机app的架构,看看如何赋能更多的个性化服务的用户app,使其不用局限于某一个品牌甚至型号的手机,就能实现比“小爱通话”等AI电话专有的应用更灵活更强大的实现基础。

  • 二、手机AI电话机器人通常有哪些需求

AI接电话、语音留言等功能基本算是伪需求,NND,钱在哪里?应用做得再好,会有人愿意为你这个功能付费?

从正常使用的角度,AI电话机器人想要获取足够的收益,就应该一开始就寻找到足够刚需的场景,而且是商用场景,才能有足够多的样例数据对后续的发展提供正向反馈。

由于SIM卡通话的费用相较于小号、固话等线路要贵。目前在语音通信领域,手机中做AI机器人,要么就面对大批量的小规模用户,提供AI外呼、AI接听等增值业务。要么就利用SIM卡分散入网的特性,用来做有效号码过滤等号码清洗的功能。

手机上的AI电话机器人要做的不是完全替代掉原来使用人力来拨打的方式(这样搞,步子迈的太大容易扯蛋),而应该是用来辅助现有的人,减少他的工作量,在他日常的使用基础上,提供细微又刚需的改动,使得他使用和工作的更加便捷。

比如原先客服或者推销人员拨打电话出去,会使用音箱来播出一些引导问候语,在通话过程中可以插入一些祝福语等等,这种类似于“半自动化AI”的方式,在吸收和转化率比较高的场景也会经常用到,而且能够大幅提高呼出人员的工作效率。

当然,把手机引到SIP平台坐席,做手机异地呼叫或跨地区拨打这种功能也有,但会在别的篇章中论述,本篇章不再赘述。

  • 三、AI电话机器人对接和扩展方式

【Dialer3.0智能拨号器】Android版app为手机用户专门定制了内置的SDK,上层App开发者可以参照SDK-Demo的代码逻辑,将电话语音的提取能力轻松整合到应用当中。

在使用时,只要应用开启了【悬浮窗】的权限,无论手机用户使用何种方式来操作手机上的电话通话,通话时的语音都会拦截后,转到内置的SDK和上层App进行处理。

用户可以自由的选择使用手机按键拨打、别的App下发电话任务自动拨打、使用电脑adb连接手机触发拨打等等任意操作,只要手机拨通了SIM卡电话,蓝牙电话方案都会自动拦截通话的声音,并通过应用App的事件回调或本机网络端口,将通话语音数据进行传递和加工。

这样不管上层应用做IVR语音导航,或是进行AI识别和TTS语音应答,都可以在一个应用APP中完整的实现。而且,这个接入对接方式,完全不会干扰和影响到手机用户原有的使用方式。

SDK-Demo的功能界面如下图所示,仅供参考。需要实现“长按电源键3秒即唤醒AI电话机器人”等功能的,可以自行在这个基础上做扩展。

  • 四、拨号器SDK对本机IVR引导和AI提供哪些支持

如前述内容所描述的样子,【Dialer3.0智能拨号器】Android版提供的“拨号器SDK”提供拦截电话通话事件和通话的语音数据的能力,并且提供了“双卡同时在线,自由选择任意SIM卡呼出”、“手机app识别对方按下的DTMF按键”等辅助功能。

在示例Demo中,我们展示了

来电自动接听

接通后自动播放IVR引导提示语

播放完毕转手机接听

等示例的功能,并且提供了一大批的辅助接口供上层App的开发人员来调用,可以参考着在这个基础之上自由的定制和开发。

AI功能可以在接收电话通话的上行语音基础上,挂载ASR语音识别和相关的NLP语义及大模型等支持,搭配TTS语音生成做下行通话数据注入即可。

IVR语音的播放和电话注入可以参考下述界面的接口来进行数据构造和注入,仅供参考:

  • 五、IVR语音导航+人工同时接听

在一个手机当中,我们无法做到“又拦截电话通话语音、又使用手机的听筒/扬声器来播放声音”。(真的试过了,Android声音调度策略确实不允许)

在使用过程中,若存在需要又对语音进行处理、又需要人工实时关注介入的“多路声音处理”的场景,需要另外引入电脑坐席或者另一个其它手机。使用局域网或互联网坐席的方式,进行播放和通话介入。

拨号器SDK针对这样的场景,提供了配对和坐席绑定的支持。用户可以使用专用的App来做为远程声音播放设备,来跟目标电话的用户进行实时的语音沟通。

  • 六、总结

我们在手机厂商的AI通话的功能之外,拓展了一种不受手机厂商和定制安卓限制的方式,为社会上公共的开发人员提供了一种基于普通Android应用app级别的AI电话机器人的应用能力。

上层app可以使用底层内置SDK,很容易的就可以对手机电话外呼和来电过程的通话声音进行提取和加工处理。上层app在这个基础之上可以自由的定制更多的电话的IVR语音导航和AI通话的相关功能,自由的接入DeepSeek等各种AI和大模型平台,为最终服务的用户,提供更加精细的个性化的能力。


上一篇:手机打电话时如何识别对方按下的DTMF按键的字符-安卓AI电话机器人

下一篇:编写中。

相关文章:

Android应用app实现AI电话机器人接打电话

Android应用app实现AI电话机器人接打电话 --安卓AI电话机器人 一、前言 【Dialer3.0智能拨号器】Android版手机app,由于采用蓝牙电话的方式来调用手机SIM卡发起呼叫、接听来电,并接收和处理通话的声音,通常我们以“蓝牙电话方案”来称呼它。 …...

Mobaxterm服务器常用命令(持续更新)

切换文件夹 cd path # for example, cd /gpu03/deeplearning/进入不同GPU ssh mgmt ssh gpu01 ssh gpu03寻找文件位置 find /path -name file_name #for example, find / -name lib #在根目录下搜寻名为lib文件 #for example, find /home/deeplearning -name "lib"…...

Android14窗口管理自适应投屏分辨率

环境 console:/ # cat /proc/version Linux version 6.1.57 (机密信息) (Android (10087095, pgo, bolt, lto, -mlgo, based on r487747c) clang version 17.0.2 (https://android.googlesource.com/toolchain/llvm-project d9f89f4d16663d5012e5c09495f3b30ece3d2362), LLD 17…...

Shot Studio for macOS 发布 1.0.2

Shot Studio 是一个 macOS 的 app,专门为开发者设计,主要用于各大 app 应用商店的预览图设计。 提供了非常多的模板,也预设了很多尺寸。可以直接一键使用 在 1.0.2 这个版本中新增了: 文本渐变 图层:边框、颜色、圆…...

《深度学习实战》第4集:Transformer 架构与自然语言处理(NLP)

《深度学习实战》第4集:Transformer 架构与自然语言处理(NLP) 在自然语言处理(NLP)领域,Transformer 架构的出现彻底改变了传统的序列建模方法。它不仅成为现代 NLP 的核心,还推动了诸如 BERT、…...

Starrocks入门(二)

1、背景:考虑到Starrocks入门这篇文章,安装的是3.0.1版本的SR,参考:Starrocks入门-CSDN博客 但是官网的文档,没有对应3.0.x版本的资料,却有3.2或者3.3或者3.4或者3.1或者2.5版本的资料,不要用较…...

银河麒麟高级服务器操作系统在线调整/pro/{PID}/limits文件中nofile的软限制和硬限制参数值操作方法

银河麒麟高级服务器操作系统在线调整/pro/{PID}/limits文件中nofile的软限制和硬限制参数值操作方法 一 系统环境二 使用场景三 操作步骤 一 系统环境 [rootlocalhost ~]# nkvers ############## Kylin Linux Version ################# Release: Kylin Linux Advanced Server…...

html css js网页制作成品——HTML+CSS甜品店网页设计(5页)附源码

目录 一、👨‍🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML 六、🥇 如何让学习不再盲目 七、🎁更多干货 一、👨‍&#x1f…...

Open WebUI项目源码学习记录(从0开始基于纯CPU环境部署一个网页Chat服务)

感谢您点开这篇文章:D,鼠鼠我是一个代码小白,下文是学习开源项目Open WebUI过程中的一点笔记记录,希望能帮助到你~ 本人菜鸟,持续成长,能力不足有疏漏的地方欢迎一起探讨指正,比心心&#xff5e…...

【Python 入门基础】—— 人工智能“超级引擎”,AI界的“瑞士军刀”,

欢迎来到ZyyOvO的博客✨,一个关于探索技术的角落,记录学习的点滴📖,分享实用的技巧🛠️,偶尔还有一些奇思妙想💡 本文由ZyyOvO原创✍️,感谢支持❤️!请尊重原创&#x1…...

蓝桥杯练习代码

一、最长公共前缀 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ""。 示例 1: 输入:strs ["flower","flow","flight"] 输出:"fl"示例…...

Imagination通过最新的D系列GPU IP将效率提升至新高度

Imagination DXTP GPU IP在加速移动设备和其他电力受限设备上的图形和计算工作负载时,能够延长电池续航时间。 英国伦敦 – 2025年2月25日 – 今日,Imagination Technologies(“Imagination”)宣布推出其最新的GPU IP——Imagina…...

C高级——shell(3)

一、shell的选择结构 1.回顾:C语言的选择结构:if , if else if ,if else,switch (switch的执行速度最快) 2.shell的选择结构: 单分支if 双分支 if else 多分支if elif case..in 1.1 shell的选择结构的格式 --------C语言的格式--…...

【C语言】第八期——指针、二维数组与字符串

目录 1 初始指针 2 获取变量的地址 3 定义指针变量、取地址、取值 3.1 定义指针变量 3.2 取地址、取值 4 对指针变量进行读写操作 5 指针变量作为函数参数 6 数组与指针 6.1 指针元素指向数组 6.2 指针加减运算(了解) 6.2.1 指针加减具体数字…...

docker 运行claude 的computer use

需要注意的是:这里claude操纵的是docker的虚拟服务器,不能访问本地url,需要进行端口转发 export ANTHROPIC_API_KEY%your_api_key% docker run \-e ANTHROPIC_API_KEY$ANTHROPIC_API_KEY \-v $HOME/.anthropic:/home/computeruse/.anthropi…...

JAVA面试_进阶部分_23种设计模式总结

1. 单例模式:确保某一个类只有一个实例,而且自行实例化并向整个系统提供这 个实例。 (1)懒汉式 public class Singleton { /* 持有私有静态实例,防止被引用,此处赋值为null,目的是实现延迟加载…...

边缘计算收益低的三大指标

边缘计算收益低的三大指标主要包括以下方面: 1. 资源贡献不足: 边缘计算的收益通常基于所提供的带宽、存储和计算资源来计算。如果设备的网络带宽有限、在线时间短或提供的存储容量较小,可能无法满足平台设定的最低贡献标准,从而导…...

Linux网络之传输层协议(UDP,TCP协议)

目录 重新认识端口号 端口号划分 netstat pidof UDP协议 UDP的特点 面向数据报 UDP的缓冲区 全双工和半双工 TCP协议 TCP的特点 TCP报头分析 源端口,目标端口,数据偏移(报文首部长度) 序号 确认号 窗口 6个标志位 ACK SYN …...

傅里叶分析

傅里叶分析之掐死教程(完整版)更新于2014.06.06 要让读者在不看任何数学公式的情况下理解傅里叶分析。 傅里叶分析不仅仅是一个数学工具,更是一种可以彻底颠覆一个人以前世界观的思维模式。但不幸的是,傅里叶分析的公式看起来太复…...

【前端基础】Day 3 CSS-2

目录 1. Emmet语法 1.1 快速生成HTML结构语法 1.2 快速生成CSS样式语法 2. CSS的复合选择器 2.1 后代选择器 2.2 子选择器 2.3 并集选择器 2.4 伪类选择器 2.4.1 链接伪类选择器 2.4.2 focus伪类选择器 2.5 复合选择器总结 3. CSS的元素显示模式 3.1 什么是元素显示…...

React 第五十五节 Router 中 useAsyncError的使用详解

前言 useAsyncError 是 React Router v6.4 引入的一个钩子,用于处理异步操作(如数据加载)中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误:捕获在 loader 或 action 中发生的异步错误替…...

Python爬虫实战:研究feedparser库相关技术

1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...

大语言模型如何处理长文本?常用文本分割技术详解

为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...

python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

12.找到字符串中所有字母异位词

🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)

参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...

Python ROS2【机器人中间件框架】 简介

销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...

Java编程之桥接模式

定义 桥接模式(Bridge Pattern)属于结构型设计模式,它的核心意图是将抽象部分与实现部分分离,使它们可以独立地变化。这种模式通过组合关系来替代继承关系,从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...

【笔记】WSL 中 Rust 安装与测试完整记录

#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统:Ubuntu 24.04 LTS (WSL2)架构:x86_64 (GNU/Linux)Rust 版本:rustc 1.87.0 (2025-05-09)Cargo 版本:cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...

android13 app的触摸问题定位分析流程

一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...