DIY自己的电话呼叫转移

2023-03-05 18:33:33 3点赞 37收藏 7评论

购买理由

由于最近工作生活的地区联通信号极差,移动信号却还尚可,但笔者主力卡又是联通,所以需要转发联通卡的通话和短信到移动的手机。搜索发现,之前的方案均需要安装在手机上,且都只能转发短信,对通话还是无法实现。为了解决上述的这些问题,本文笔者基于树莓派和EC20和东拼西凑的软件,实现了基于其他即时通讯软件的短信转发,并通过SIP客户端从互联网呼出和接听电话。

其他方案

GOIP设备

笔者在调研的时候发现很多推荐GOIP设备的,但再继续搜索之后发现能买到的价格实在太贵,而且好像这个设备因为一些特殊原因正在被下架

GSM Dongle

还有一些基于2g的通话网络的usb dongle也能实现通话的呼叫转移,但现在已经2023年了,5G都已经很完善了,似乎2G貌似在逐渐退网,现阶段VoLTE还是有必要的所以这个方案也被放弃了。

三方SIM托管服务

在搜索过程中发现早些年运营商自己和一些三方服务提供商都有这类的服务,但也是由于种种原因现在已经不对外提供服务了,所以这条路也就断了

选择方案介绍

首先是价格要便宜,能够旧物利用就最好,笔者最后选用了落灰已久的树莓派3b加Quectel EC20(移远出品的一款4G卡,支持LTE Cat4,使用Snapdragon X5 LTE Modem,这个卡有很多个版本,有部分版本只带上网功能,不能接打电话和发短信。如果需要收发短信和打电话,请尽量购买最高级的EC20CEFAG-512-SGNS,买mini-pcie接口的 ,移远的淘宝店买大概200一片,闲鱼购买大约50-60一片)的方案。

树莓派安装FreePBX+Asterisk,配置SIP服务进行网络通话的实现。

实现过程

关闭SIM卡的PIN,插入卡座,把EC20接上天线并通电,此时应该可以在/dev里看到若干个ttyUSB端口:

ttyUSB0
ttyUSB1 PCM语音,GPS信号
ttyUSB2 控制命令
ttyUSB3

使用minicom打开ttyUSB2端口

minicom -D /dev/ttyUSB2


# 输入ATI看一下EC20的版本号:
ATI
Quectel
EC20F
Revision: EC20CEFAGR06A15M4G

如果一切正常的话,可以先重置一遍EC20,以防上一个用户在卡内设置了错误的配置(但不要经常重置EC20,重置操作对dongle的闪存有损耗)。

重置模块 at+qprtpara=3
重启 AT+CFUN=1,1

重置并重启完后,可以通过以下命令检查一下SIM卡是否已经注册成功了(下面的例子是联通的,其他运营商同理):

AT+COPS?
+COPS: 0,0,"CHN-UNICOM",7
AT+QNWINFO
+QNWINFO: "FDD LTE","46001","LTE BAND 3",1825
AT+QENG="servingcell"
+QENG: "servingcell","NOCONN","LTE","FDD",460,01,XXXXXXXXXX

开启VoLTE

打开ims AT+QCFG="ims",1

查看dongle内的mbn文件 AT+QMBNCFG="List"
+QMBNCFG: "List",0,1,1,"ROW_Generic_3GPP",0x05010824,201806201
+QMBNCFG: "List",1,0,0,"OpenMkt-Commercial-CU",0x05011510,201911151
+QMBNCFG: "List",2,0,0,"OpenMkt-Commercial-CT",0x0501131C,201911141
+QMBNCFG: "List",3,0,0,"Volte_OpenMkt-Commercial-CMCC",0x05012011,201904261

# 尽管这里列出了移动联通电信的VoLTE配置文件,但使用默认的自动选择CU/CT/CMCC并不能注册VoLTE,在摸索很久之后,笔者发现需要强制选择ROW_Generic_3GPP才能成功注册VoLTE。

关闭自动选择mbn文件 AT+QMBNCFG="AutoSel",0
反激活当前的mbn at+qmbncfg="deactivate"

强制选择3gpp AT+QMBNCFG="select","ROW_Generic_3GPP"
重启 AT+CFUN=1,1

可以再确认一下mbn的选择状态,如果ROW_Generic_3GPP的第二位和第三位都是1的话,说明dongle目前选择了这个配置 AT+QMBNCFG="List"
+QMBNCFG: "List",0,1,1,"ROW_Generic_3GPP",0x05010824,201806201
+QMBNCFG: "List",1,0,0,"OpenMkt-Commercial-CU",0x05011510,201911151
+QMBNCFG: "List",2,0,0,"OpenMkt-Commercial-CT",0x0501131C,201911141
+QMBNCFG: "List",3,0,0,"Volte_OpenMkt-Commercial-CMCC",0x05012011,201904261

重启完后检查ims的状态 AT+QCFG="ims"

如果返回的是 +QCFG: "ims",1,1 即为激活,如果是+QCFG: "ims",1,0 说明没有激活

安装依赖

apt update

apt install vim minicom adb git autoconf automake libsqlite3-dev build-essential libasound2-dev alsa-utils

安装驱动

apt-get install raspberrypi-kernel-headers

git clone bacnh85/Quectel_Linux_USB_Driver.git

cd Quectel_Linux_USB_Driver/

make

make install

asterisk-chan-quectel

git clone IchthysMaranatha/asterisk-chan-quectel

cd asterisk-chan-quectel

./bootstrap

./configure --with-astversion=16

make
make install

随后把uac/quectel.conf复制到/etc/asterisk里。并通过systemctl restart asterisk重启asterisk。

输入asterisk -rvvv进入asterisk的cli界面并输入quectel show devices即可看到识别到的dongle了,也能看到dongle的imei和SIM卡的imsi:

asterisk -rvvv

Asterisk 16.21.1, Copyright (C) 1999 - 2021, Sangoma Technologies Corporation and others.

Created by Mark Spencer <markster@digium.com>

Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.

This is free software, with components licensed under the GNU General Public

License version 2 and other licenses; you are welcome to redistribute it under

certain conditions. Type 'core show license' for details.

=========================================================================

Connected to Asterisk 16.21.1 currently running on raspbx (pid = 3900)

-- Remote UNIX connection

raspbx*CLI> quectel show devices

ID Group State RSSI Mode Submode Provider Name Model Firmware IMEI IMSI Number

quectel0 0 Free 20 0 0 CHN-UNICOM EC20F EC20CEFAGR06A17M4 86XXXX XXX +861XXXXXX

配置dailplan

直接参考驱动作者写的文章,下载文章里的sipext压缩包,解压后修改一下extensions.conf(请不要直接照抄!根据自己的实际情况和驱动作者的文章修改)然后粘贴到/etc/asterisk/extensions.conf 最后面:

全部修改完重启一次系统

在FreePBX网页上添加分机号

在 Applications-Extensions 里,点击add extension- SIP [pjsip_chan] extension,加一个200的extension(号码随意,只要不和asterisk虚拟机里的号码撞上了就行)

添加分机号添加分机号

添加Trunk

添加之前,先按照本文前面的说明,修改/etc/asterisk/sip_custom.conf,把最底下70分机的host=192.168.x.x改成树莓派的IP,重启。

在FreePBX的Connectivity-Trunks里添加一个(pj)SIP Trunk,配置如下,其他默认:

GeneralGeneral

pjsip settingspjsip settings

Connectivity-Outbound Routes

outboundoutbound

Connectivity-Inbound Routes

inboundinbound

测试通话

载一个免费版的zoiper,添加账户的时候用户名输入分机号@freepbx的IP,密码即上面设置的密码(注意不要输错了,freepbx默认有打开fail2ban,输错SIP密码也会触发fail2ban,还需要手动去删除iptables规则)。

确认注册上了之后可以尝试通过zoiper呼出到10010或者是自己的电话,测试一下语音和按键的DTMF音有被识别到。如果是外部呼入dongle里的号码的电话,呼入到freepbx之后会被直接转移给分机,此时zeoiper会有提示,直接点接听即可。

使用感受

在不打开SIP客户端时,打到dongle上的电话会提示用户忙,Zoiper付费版是支持push notification服务的,可以实现来电推送通知,用户点击通知进入Zoiper注册分机并接听,减少因为长时间待机的大量电池消耗。

总结

整体配置下来花了不到100元的成本基本满足了通话呼叫转移的目的,使用体验还可以继续完善,这里先挖个坑,后面慢慢填。

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

展开 收起

月桂卡 2年19元月租(185G通用流量+流量可续约)激活送20元E卡

月桂卡 2年19元月租(185G通用流量+流量可续约)激活送20元E卡

0.1元起

中国电信 逐日卡 首年19元月租(135G全国流量+100分钟通话+首月免费用+长期可续)激活赠20元E卡

中国电信 逐日卡 首年19元月租(135G全国流量+100分钟通话+首月免费用+长期可续)激活赠20元E卡

暂无报价

中国移动 白嫖卡 半年9元(本地号码+188G全国流量)激活送50元红包

中国移动 白嫖卡 半年9元(本地号码+188G全国流量)激活送50元红包

0.1元起

中国电信 长期爆卡 首年19元月租(280G全国流量+首月不花钱)激活送20元E卡

中国电信 长期爆卡 首年19元月租(280G全国流量+首月不花钱)激活送20元E卡

0.1元起

中国移动 超值卡 2年19元月租(185G通用流量+流量可续约+充100元送480元)激活送20元E卡

中国移动 超值卡 2年19元月租(185G通用流量+流量可续约+充100元送480元)激活送20元E卡

0.1元起

UNICOM 中国联通 惠牛卡 19元月租(95G通用流量+60G定向流量+100分钟全国通话)

UNICOM 中国联通 惠牛卡 19元月租(95G通用流量+60G定向流量+100分钟全国通话)

0.01元起

中国联通 惠兔卡 2年19元月租(95G通用流量+60G定向流量+3个亲情号)

中国联通 惠兔卡 2年19元月租(95G通用流量+60G定向流量+3个亲情号)

0.01元起

中国电信 选号卡

中国电信 选号卡

0.1元起

中国电信 确幸卡 半年9元月租(可选号+135G全国流量+100分钟)激活送20元E卡~

中国电信 确幸卡 半年9元月租(可选号+135G全国流量+100分钟)激活送20元E卡~

0.1元起

CHINA TELECOM 中国电信 流量上网卡 5G通用流量+30定向流量+100分钟

CHINA TELECOM 中国电信 流量上网卡 5G通用流量+30定向流量+100分钟

0.01元起

中国电信 暖风卡 2年19元月租(180G全国流量+支持5G) 激活送10元红包

中国电信 暖风卡 2年19元月租(180G全国流量+支持5G) 激活送10元红包

0.01元起

中国电信;CHINA TELECOM 中国电信 新封神卡 20年29元月租(135G全国流量+100分钟通话+自主激活)激活送10元红包

中国电信;CHINA TELECOM 中国电信 新封神卡 20年29元月租(135G全国流量+100分钟通话+自主激活)激活送10元红包

0.01元起

中国电信 长期爆卡 首年19元(280G全国流量+首月免月租)激活赠20元E卡

中国电信 长期爆卡 首年19元(280G全国流量+首月免月租)激活赠20元E卡

0.1元起

中国电信 广东电话卡 19元月租(225G全国流量+100分钟通话+首月免租)广东用户专享

中国电信 广东电话卡 19元月租(225G全国流量+100分钟通话+首月免租)广东用户专享

0.01元起

中国联通 长期小龙卡 29元月租(149G通用流量+100分钟通话+可选号)

中国联通 长期小龙卡 29元月租(149G通用流量+100分钟通话+可选号)

暂无报价

中国移动 小春卡 19元月租(188G全国流量+收货地为归属地)激活送20元红包

中国移动 小春卡 19元月租(188G全国流量+收货地为归属地)激活送20元红包

0.01元起
7评论

  • 精彩
  • 最新
  • 携号转网

    校验提示文案

    提交
    就在这个通过审核的当天,我终于通网了……

    校验提示文案

    提交
    收起所有回复
  • 有pstn的ata推荐吗?

    校验提示文案

    提交
  • @值友4742943423 技术文,看不懂,要是有通过电脑可以较低成本拨打国外座机和手机的内容就更好了!
    大哥您的要求,似乎可以这样:
    1. 携号转网。
    2. 买移动卡和相应的支持移动卡的手机(或者看看电信的卡和手机)。
    3. 搬家吧!(这什么地方啊,信号这么差?买移动卡或移动手机会很不方便?要是那样,就搬家吧,不信大哥您比我这个穷屌丝还混的惨,不信!)

    校验提示文案

    提交
  • 要我估计就短信转发器+来电转接了
    除了打电话没办法,收发短信还是可以的

    校验提示文案

    提交
  • 您好 有联系方式么 请教一些技术问题

    校验提示文案

    提交
  • 你好请问有ec20的安卓驱动文件吗?谢谢

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关好价推荐
查看更多好价

相关文章推荐

更多精彩文章
更多精彩文章

值友4742943423

Ta还没有介绍自己

关注 打赏
相关好价
最新文章 热门文章
37
扫一下,分享更方便,购买更轻松