news 2026/4/15 7:51:09

蓝牙电话与FreeSwitch服务器和UA坐席的通话

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
蓝牙电话与FreeSwitch服务器和UA坐席的通话

蓝牙电话与FreeSwitch服务器和UA坐席的通话

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

    下一篇:手机转SIP-手机做中继网关-落地线路对接软交换呼叫中心


  • 一、前

由于前面文章中,有读者反馈说,蓝牙电话这个app不知道怎么用。前面的篇章只讲述了SDK对接时如何获取电话通话语音、并将自己预先录制的声音传进去,但体验效果不直观。

本文采用开源的B2B-UA当中经典的FreeSWITCH,力图使用最简洁的步骤和方式,在局域网中搭建一个“云平台”,使电脑上的“软电话”能正常使用蓝牙电话的方案正常呼叫出去。

本文中预设的依赖条件如下:

序号

描述

01

蓝牙电话手机app或windows的PC应用

02

蓝牙电话手机app的登录账号,没有账号的自己注册,PC应用不需要账号

03

FreeSwitch安装包

04

eyeBeam和X-Lite安装包

05

Python脚本的运行环境和http服务器的防火墙端口

06

拨号器管理app,这个是蓝牙电话手机app的管理端

此处由于简化步骤,已将表格中所有涉及到的软件的下载地址放入百度云盘,需要的读者可以直接下载来使用。

蓝牙电话手机app:http://120.78.211.195:8060/Dialer.apk

蓝牙电话windows应用:http://120.78.211.195:8060/_uploads_soft_20220701_DialerCloud22_Fx4.zip

FreeSwitch安装包:见下面章节的下载地址。

eyeBeam1.5安装包:https://pan.baidu.com/s/1WoWrc1wlhDAMcYTMtf4JiQ 提取码:96ta

X-Lite安装包:https://pan.baidu.com/s/1AfTbslNqMKQrn46TZj3E0A 提取码:savy

拨号器管理app:http://120.78.211.195:8060/DialerManager.apk

  • 二、安装包下载

windows下载:Index of /windows/installer/x64

Linux下载:Index of /freeswitch-releases

学习资料:《FreeSwitch权威指南 PDF电子书.pdf 杜金房》https://pan.baidu.com/s/1oPV0fikMqP0vsAUw0M6ZQA 提取码:siag

当前示例版本选用的是【FreeSWITCH-1.10.11-Release】版本,它的Windows下载路径为(仅供参考):https://files.freeswitch.org/windows/installer/x64/FreeSWITCH-1.10.11-Release-x64.msi

安装包下载后,直接安装到默认路径即可,安装完毕后运行FreeSWITCH进程。此处为了最大限度的精简步骤,快速出成果,以windows10的笔记本电脑的安装和配置的截图做为示例,其它操作系统基本上也差不多。(本文电脑的安装路径为C:\Program Files\FreeSWITCH\)

  • 三、初始配置

文件位置:C:\Program Files\FreeSWITCH\conf\sip_profiles\internal.xml

屏蔽296行和297行,避免呼叫接通后挂断,但fs服务器并未结束会话的问题。

<paramname="ext-rtp-ip"value="$${external_rtp_ip}"/>

<paramname="ext-sip-ip"value="$${external_sip_ip}"/>

修改后文件内容如下:

详情可参考:《解决xlite和freeswitch通话没有语音的问题》https://blog.csdn.net/daitu3201/article/details/80096630

  • 四、拨号计划

文件位置:C:\Program Files\FreeSWITCH\conf\dialplan\default.xml

在拨号计划的<contextname="default">后面,直接加上这一段内容,即可实现外呼和来电的策略。

<!--来电转坐席-->

<extensionname="call incoming phone">

<conditionfield="caller_id_number"expression="^sim(\d+)$"/>

<conditionfield="destination_number"expression="^(\d+)$">

<actionapplication="bridge"data="{origination_caller_id_name=${destination_number},origination_caller_id_number=${destination_number}}user/${caller_id_number:3}@${domain_name}"/>

</condition>

</extension>

<!--坐席外呼-->

<extensionname="call transfer phone">

<conditionfield="destination_number"expression="^(\d+)$">

<actionapplication="bridge"data="{origination_caller_id_name=${destination_number},origination_caller_id_number=${destination_number}}user/sim${caller_id_number}@${domain_name}"/>

</condition>

</extension>

修改后文件内容如下:

  • 五、添加用户
  1. 文件位置:C:\Program Files\FreeSWITCH\conf\directory\default.xml

在51行<userid="1000"type="pointer"/>前面,根据自己的手机号

(示例手机卡的号码是18873216143)

增加

<user id="18873216143" type="pointer"/>

<user id="sim18873216143" type="pointer"/>

两行,增加后的文件如下图所示:

(后面手机app会自动获取手机SIM卡的手机号,调用预设的接口,拉取sim18873216143的账号密码后注册到这个FreeSwitch)

  1. C:\Program Files\FreeSWITCH\conf\directory\default目录中复制1000.xml两份,分别重命名为《18873216143.xml》和《sim18873216143.xml》。

依次打开这两个文件,将内容中所有的1000字符串,替换为18873216143和sim18873216143,保存后即可。文件内容如下:

文件位置:C:\Program Files\FreeSWITCH\conf\directory\default\18873216143.xml

文件位置:C:\Program Files\FreeSWITCH\conf\directory\default\sim18873216143.xml

后面每添加一个新用户,都按此章节加入对应节点和复制修改文件即可。修改完毕后,记得重启FreeSWITCH进程或在FreeSWITCH进程中输入reloadxml后Enter回车重新加载xml配置即可。

  • 六、在线用户设置OPTIONS心跳检测

文件位置:C:\Program Files\FreeSWITCH\conf\sip_profiles\internal.xml

取消屏蔽189行到195行,增加对所有的在线用户开启每隔30s发送一次OPTIONS心跳的设置。由于SIP客户端基本工作在无线网络上,需要SIP服务器或SIP客户端主动发送心跳并接收心跳应答来使双方都能够感知到对方的存活状态。若对方已失效则应由SIP客户端重发REGISTER信令进行重新注册,以实现不间断的voip事件和通话服务。

<paramname="unregister-on-options-fail"value="true"/>

<!--Send an OPTIONS packet to all registered endpoints-->

<paramname="all-reg-options-ping"value="true"/>

<!--Send an OPTIONS packet to NATed registered endpoints. Can be 'true' or 'udp-only'.-->

<paramname="nat-options-ping"value="true"/>

<paramname="registration-thread-frequency"value="30"/>

<paramname="ping-mean-interval"value="30"/>

<paramname="ping-thread-frequency"value="1"/>

<paramname="sip-options-respond-503-on-busy"value="true"/>

<paramname="sip-messages-respond-200-ok"value="true"/>

<paramname="sip-subscribe-respond-200-ok"value="true"/>

修改后文件内容如下:

详情可参考:《介绍几种OPTIONS检测的方法》https://blog.csdn.net/qiuzhendezhen/article/details/131561364

  • 七、账号测试方式

电脑上分别安装eyeBeam和X-Lite。

将上述在FreeSwitch中配置的账号/密码和FreeSwitch本机IP和端口填写进去,保存。(我本机IP是172.16.80.141 默认端口是5060)

eyeBeam或X-Lite软电话会自动注册到FreeSwitch服务器中,这样,双方就可以直接随便输入一个号码(如10086),点击呼叫,这样该呼叫就会直接转呼到另外一个软电话上。

如下图所示:

在坐席18873216143中呼叫10086,则坐席sim18873216143将收到来电,显示对方号码是10086。

此时,FreeSwitch拨号计划中走的是【C:\Program Files\FreeSWITCH\conf\dialplan\default.xml】文件的【call transfer phone】坐席外呼的策略。

用户在软电话中点击【Answer】或点击界面中数字盘上方的【AA】按钮即可正常接听。接听/拒接/接通挂断等操作均与正常软电话的操作一致,语音音质也应该无异常。

  • 八、蓝牙电话的整合方式

蓝牙电话app的云平台接入的整合方式分为下述两种办法:

  1. app登录账号的类型为“代理商”的,可以自己在设置界面中手动开启【固定SIP账号密码】。

如下图所示,自己手动将上述sim18873216143的账号密码服务器等数据填写进去保存,即可正常连接。

  1. app登录账号的类型为“个人”或“企业”的,需自己实现一个http或https的接口,使用GET传入手机号码,返回json格式的对应SIP账号密码等信息。

(具体的写法和格式描述,可查看下一篇章《蓝牙电话-通过Rest接口关联FreeSwitch中继SIP账号》)

示例如下:

https://api.33e9cloud.com/terminal/bluetooth/register/server/18873216143

返回结果:

{"sipRealm":"xxx.com","dateCreated":"2024/01/31 14:10:08","ipPort":"172.16.80.141:5060","sipPhone":"sim18873216143","pwd":"1234","statusCode":"0","notReversal":"0"}

若前面章节中未在SIP服务器添加sim18873216143这个账号,则GET查询的返回结果为:

{"dateCreated":"2024/01/31 14:13:49","statusCode":"920100","represent":"手机号不合法"}

实现这个http接口后,使用【拨号器管理】app,使用同样的app登录账号和密码登录进去后,点击左侧菜单栏的【平台自定义管理】。

在新界面的“用户列表”中点击“我自己”,在平台属性的【SIP平台接口:】中,粘贴上述的http接口URL即可。如下图所示:

  • 九、总结

文章阐述了一种办法,使用最简洁的方式,让蓝牙电话的用户,能第一时间的将所谓的“云平台”给部署出来,并能实现正常的电话呼叫。至于正常通话的话单和录音,理论上FreeSWITCH是默认支持的,由于本文篇章有限,此处不再赘述,有兴趣的读者可以自己去配置。

最后特意声明:此文章及文章内阐述的方法,仅为局域网内搭建蓝牙电话的云平台而使用。依照《中华人民共和国反电信诈骗法》等法律法规的要求,任何单位和个人不得非法制造、买卖、提供或者使用“具有改变主叫号码,虚拟拨号,互联网电话违规接入公用电话网络等功能的设备、软件”。请各位读者和朋友不要将其接入互联网进行使用,请勿触碰法律的红线,谢谢。


上一篇:蓝牙电话方案-纯手机app方案和PC+手机方案在价格和用户使用习惯上的差异

手机转SIP-手机做中继网关-落地线路对接软交换呼叫中心

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/15 7:50:12

Astron Agent 工作流编排实战:10个高效节点使用技巧

Astron Agent 工作流编排实战&#xff1a;10个高效节点使用技巧 【免费下载链接】astron-agent Enterprise-grade, commercial-friendly agentic workflow platform for building next-generation SuperAgents. 项目地址: https://gitcode.com/gh_mirrors/as/astron-agent …

作者头像 李华
网站建设 2026/4/15 7:43:21

Pixel Script Temple 数据库课程设计实战:AI辅助生成SQL与ER图脚本

Pixel Script Temple 数据库课程设计实战&#xff1a;AI辅助生成SQL与ER图脚本 1. 课程设计的痛点与解决方案 对于高校学生来说&#xff0c;数据库课程设计往往是一个既期待又头疼的环节。期待是因为终于可以把理论知识付诸实践&#xff0c;头疼则是因为从概念到实现的过程中…

作者头像 李华
网站建设 2026/4/15 7:37:10

彻底掌控Dell G15散热性能:开源神器TCC-G15完全指南

彻底掌控Dell G15散热性能&#xff1a;开源神器TCC-G15完全指南 【免费下载链接】tcc-g15 Thermal Control Center for Dell G15 - open source alternative to AWCC 项目地址: https://gitcode.com/gh_mirrors/tc/tcc-g15 还在为Dell G15游戏本散热问题烦恼吗&#xff…

作者头像 李华
网站建设 2026/4/15 7:36:02

悬架铣右端小端面(说明书+CAD图纸+工序卡+过程卡)

悬架铣右端小端面是机械加工中常见的关键工序&#xff0c;直接影响零件的装配精度与运行稳定性。该工序的核心作用在于通过精准铣削&#xff0c;确保右端小端面的平面度、垂直度等形位公差符合设计要求&#xff0c;为后续的定位、连接或配合提供可靠基准。例如&#xff0c;在汽…

作者头像 李华