蓝牙电话与FreeSwitch服务器和UA坐席的通话
- 前言
由于前面文章中,有读者反馈说,蓝牙电话这个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进程。此处为了最大限度的精简步骤,快速出成果,以windows10的笔记本电脑的安装和配置的截图做为示例,其它操作系统基本上也差不多。(本文电脑的安装路径为C:\Program Files\FreeSWITCH\)
- 初始配置
文件位置:C:\Program Files\FreeSWITCH\conf\sip_profiles\internal.xml
屏蔽296行和297行,避免呼叫接通后挂断,但fs服务器并未结束会话的问题。
<param name="ext-rtp-ip" value="$${external_rtp_ip}"/>
<param name="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
在拨号计划的<context name="default">后面,直接加上这一段内容,即可实现外呼和来电的策略。
<!-- 来电转坐席 -->
<extension name="call incoming phone">
<condition field="caller_id_number" expression="^sim(\d+)$" />
<condition field="destination_number" expression="^(\d+)$">
<action application="bridge" data="{origination_caller_id_name=${destination_number},origination_caller_id_number=${destination_number}}user/${caller_id_number:3}@${domain_name}"/>
</condition>
</extension>
<!-- 坐席外呼 -->
<extension name="call transfer phone">
<condition field="destination_number" expression="^(\d+)$">
<action application="bridge" data="{origination_caller_id_name=${destination_number},origination_caller_id_number=${destination_number}}user/sim${caller_id_number}@${domain_name}"/>
</condition>
</extension>
修改后文件内容如下:
- 添加用户
- 文件位置:C:\Program Files\FreeSWITCH\conf\directory\default.xml
在51行<user id="1000" type="pointer"/>前面,根据自己的手机号
(示例手机卡的号码是18873216143)
增加
<user id="18873216143" type="pointer"/>
<user id="sim18873216143" type="pointer"/>
两行,增加后的文件如下图所示:
(后面手机app会自动获取手机SIM卡的手机号,调用预设的接口,拉取sim18873216143的账号密码后注册到这个FreeSwitch)
- 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配置即可。
- 账号测试方式
电脑上分别安装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的云平台接入的整合方式分为下述两种办法:
- app登录账号的类型为“代理商”的,可以自己在设置界面中手动开启【固定SIP账号密码】。
如下图所示,自己手动将上述sim18873216143的账号密码服务器等数据填写进去保存,即可正常连接。
- 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是默认支持的,由于本文篇章有限,此处不再赘述,有兴趣的读者可以自己去配置。
最后特意声明:此文章及文章内阐述的方法,仅为局域网内搭建蓝牙电话的云平台而使用。依照《中华人民共和国反电信诈骗法》等法律法规的要求,任何单位和个人不得非法制造、买卖、提供或者使用“具有改变主叫号码,虚拟拨号,互联网电话违规接入公用电话网络等功能的设备、软件”。请各位读者和朋友不要将其接入互联网进行使用,请勿触碰法律的红线,谢谢。