V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ety001
V2EX  ›  程序员

出国狗的福音--使用树莓派搭建跨国语音短信设备

  •  
  •   ety001 ·
    ety001 · 2018-02-08 03:05:32 +08:00 · 12760 次点击
    这是一个创建于 2480 天前的主题,其中的信息可能已经有所发展或是发生改变。

    自从开始刷 SteemIt 社区后,很少来 v2ex 了。

    把之前欠社区的一篇 Asterisk 教程补上,

    首发在 https://steemit.com/cn/@ety001/5zehat

    第 1 条附言  ·  2018-02-08 22:46:42 +08:00
    综合楼下各位的评论,我觉得不想折腾的可以考虑买类似 https://item.taobao.com/item.htm?spm=a230r.1.14.34.250350a1rJhohU&id=558112899453&ns=1&abbucket=18 这样的产品。原理都一样。

    不得不感慨,两年前还没有这样的神器,才踏上了自己折腾的路,
    并且感慨自己没有资源可以搞一个这样的集成化的设备卖钱。
    41 条回复    2023-11-04 20:31:17 +08:00
    neoblackcap
        1
    neoblackcap  
       2018-02-08 03:22:08 +08:00   ❤️ 1
    看了一下方案,其实你这个方案是挺取决于你的卡托。而且如果是移动的话,我之前搞过类似的东西,移动连短信都不是走 2G 的,现在都是 4G 的,3G 卡没法收短信。我这里是广州移动。
    最后的解决方案是使用安卓手机,一来信号稳定都比树莓派好,二来整个开发环境都比较友好,资源需要的并不多,只要一台有公网 IP 的服务器 /VPS,你的手机能联网,那么大可通过短信拦截将所有的短信通过服务器中转(小米的云同步)。至于语音的话,的确需要再开发,不过安卓的开发环境怎么样都比较友好吧。而且 API 不好用,直接升级就可以了。
    seafarer
        2
    seafarer  
       2018-02-08 03:30:08 +08:00 via Android
    @ety001 steemit 如何注册? 尝试几次都不成功
    ety001
        3
    ety001  
    OP
       2018-02-08 03:54:53 +08:00
    @neoblackcap 我也因为 Asterisk 的恶心配置参数,一度想要基于 Root 的 Android 开发个 App。我觉得开发个 Android App 才应该是最终的方案。不过你说的移动的短信不走 2G 网络,由于我也不懂这些细节,我觉得还是挺匪夷所思的。


    @seafarer 目前走邮件免费注册,需要等很久才能审批通过。最快的方法是花钱注册,你可以走 cnsteem.com 这个节点,花钱注册。
    dynaguy
        4
    dynaguy  
       2018-02-08 04:16:10 +08:00
    微信时代,有楼主这个需求的人多吗?
    ericFork
        5
    ericFork  
       2018-02-08 05:51:14 +08:00   ❤️ 1
    我去年折腾了一次,一模一样的方式。RasPBX + 华为 E1750。除了语音延时之外,主要还有两个问题:

    1. 走 SIP 协议时,有机率听不到对面的声音,和 NAT 有关,但没有彻底解决,用 IAX2 协议就没有这个问题。目前对这两种协议支持都好的免费、跨平台客户端,我试了几个之后用了 Zoiper。

    2. 打国内自动客服电话时,有些需要输入卡号、身份证等多个数字的场景,即使是 IAX2 也会发生某些数字未被识别的情况,应该主要还是延时的锅。

    另外,你这是才折腾成功几天么?这套方案,3G 网卡的供电需要特别注意一下,最好能用一个有源的 USB HUB,否则整套系统可能运行一周到半个月后死机……

    如果你是 iOS 手机,可能还需要一个支持来电 Push 或者 CallKit 的客户端,免费的话没有现成方案。付费的话,Bria Mobile 是堪用的。

    基于上面的问题,我后来尝试了 GOIP 这个硬件设备,单卡槽的 GOIP-1 价格远比自己搭一套 RasPBX 便宜得多,可以接入 FreePBX、3cx 等 PBX 系统,实现 VoIP ; ROM 自带短信转发邮件,我和厂商( DBL )客服反馈了之后,最近甚至支持了长短信合并等一系列实用的功能。

    再后来,我发现了双享号 Pro,上述两套方案就被我全部弃置了,主要是这货的 App 完成度已经相当高,短信 /通话界面接近原生体验,自带通话录音、勿扰模式(可配置时间区间)、CallKit,设备在国外也可以免短信 /通话的国际漫游费用,设备体积小,价格和 GOIP 也差不多,下次回国打算再来一个。
    yesqu
        6
    yesqu  
       2018-02-08 06:36:50 +08:00
    @ericFork 话说双享号美帝的运营商能用么?
    ericFork
        7
    ericFork  
       2018-02-08 06:38:16 +08:00
    @yesqu #6 是不可以的,他们的原理大致是读取 SIM 卡信息,走网络到国内落地,向基站注册,只支持国内三家运营商。
    nifury
        8
    nifury  
       2018-02-08 08:42:52 +08:00
    本来一直是这个方案,结果电信自行套了一层 NAT,失去了公网 IP,卒……

    @ericFork #5 goip 的 MESSAGE 消息不支持验证,反馈了好多次都没解决,而且不支持注册到 onsip。(原来长短信合并是你反馈的)
    双享号 Pro 经常失联需要手动重启,到后来移动限制终端数量就根本注册不上了

    感觉你折腾的经历跟我怎么一模一样
    jisibencom
        9
    jisibencom  
       2018-02-08 08:56:09 +08:00
    @ericFork 你好,你说的这个 GOIP-1 是直接插 SIM 卡就能用吗?

    如果还需要接入 PBX,那和 LZ 搭建的 PBX 好像不是同一个东西啊
    cjjia
        10
    cjjia  
       2018-02-08 08:58:57 +08:00 via Android
    移动有个 APP 叫 Jego,登录后可以设置把来电和短信通过网络用 app 接听。

    联通也有一个,叫沃什么的,忘了。
    ys0290
        11
    ys0290  
       2018-02-08 09:03:56 +08:00 via iPhone
    用了几个免费的 APP,就 zoiper 能在 ios11 下接到电话,其他都被系统杀了后台,可能是因为我用的 6
    function007
        12
    function007  
       2018-02-08 09:09:41 +08:00
    现在用的 SIM 小二,一个国内卡一个国外卡。国内卡的电话可以走国外卡的网络接到,但短信得手动切过去收了再切回来,也就是语音双待,短信单待
    defunct9
        13
    defunct9  
       2018-02-08 09:36:08 +08:00
    旅信+双享号
    ericFork
        14
    ericFork  
       2018-02-08 09:50:54 +08:00
    @nifury #8 接个虚拟专用网络到 VPS 上转发出去?我家暂时还有公网 IP ……

    双享号 Pro 的话我用的是联通卡,暂时没有问题。


    @jisibencom #9 只为了收短信的话插卡即可,短信可以在 web ui 上直接看,如果需要转发到邮箱,需要填个 SMTP 连接信息。


    @cjjia #10 移动 Jego,联通沃信,基本可以都算作已死了……至少新户是别想了
    Linxing
        15
    Linxing  
       2018-02-08 11:04:09 +08:00
    我怎么记得 orangepi 出了个支持手机卡的 2G 网络
    ety001
        16
    ety001  
    OP
       2018-02-08 15:06:24 +08:00   ❤️ 1
    @ericFork 你说的很对,你遇到的问题就是我遇到的,独立供电 USB HUB 我在文章中提到了。
    不过目前我主要接短信,已经满足需求了且运行超过两年了,就没有再折腾。单卡槽的 VOIP 设备没有见过,之前见过 8 卡槽的,太贵没买。双享号是啥?关于 ios,push 的确是个问题,目前使用 Media5 还好,教程中用 Linphone 主要是为了跟电脑端统一起来,写教程省劲😂。

    @nifury 木有公网 IP 就是蛋疼,据说联通也要这么干了,因为 IP 不够了。
    linooy
        17
    linooy  
       2018-02-08 18:08:41 +08:00
    旅信 双享号 络漫宝 国内有三家在做,比较不理解的是为什么没有手机或者 APP 可以支持这样的功能,家里废弃的二手手机还是蛮多的。
    ety001
        18
    ety001  
    OP
       2018-02-08 22:48:18 +08:00
    @linooy 我觉得可能还是开发过于繁杂。既要开发基于 root 的 Android App 作为服务端,还要再开发支持 ios 和 Android 的客户端,感觉开发压力对于个人开发者来说过大。
    Tink
        19
    Tink  
       2018-02-09 09:35:46 +08:00
    @ety001 @ericFork

    Asterisk 这个支持收到短信或者电话之后,自动执行某个脚本吗?比如 post 到一个 http 地址上或者写入数据库这类的操作
    ety001
        20
    ety001  
    OP
       2018-02-09 09:59:53 +08:00
    @Tink 短信可以,我写过一个脚本,收到短信推送到微信公众号。电话的话,不清楚,目测也是可以的。
    修改短信的话,在 /etc/asterisk/extensions_custom.conf
    gdtv
        21
    gdtv  
       2018-02-10 16:10:13 +08:00
    @ericFork 帮你更正一下,双享号只支持中国联通,不支持移动和电信。双享号因为短信和电话都要经过双享号的服务器,我感觉不太安全。
    gdtv
        22
    gdtv  
       2018-02-10 16:11:25 +08:00
    @linooy 安卓没有官方接口可以访问到通话模块,除非从底层入手开发,这样太麻烦了。
    ericFork
        23
    ericFork  
       2018-02-10 19:24:54 +08:00
    @gdtv #21 电信还没支持吗?移动已知是支持的,但是支持得没联通稳定。
    ety001
        24
    ety001  
    OP
       2018-02-10 20:03:50 +08:00
    @gdtv 双享号这样的服务,只能自己在便利和安全之间做出选择。
    hzjxiiang
        25
    hzjxiiang  
       2018-02-13 02:52:03 +08:00
    @neoblackcap 服务端最好大硬件设备说 淘汰的可 root 的安卓手机
    @ericFork 双享号不够极致, 你有没有想过直接在安卓手机上开发,废物利用而且可以想象的空间还有很大
    hzjxiiang
        26
    hzjxiiang  
       2018-02-13 02:55:21 +08:00
    @gdtv @ety001 安卓如果能开发出来就完美了
    如果两位感兴趣我们可以以前合作,极客项目~ 名字我很早之前就想好了 “云卡槽”
    这个如果能开发完成,一个终端可以 n 张卡,当然一张卡也可以分享给很多人共享。
    ericFork
        27
    ericFork  
       2018-02-13 02:57:35 +08:00
    @hzjxiiang #25 如果你非要提安卓手机,那我买个双卡双待的手机岂不是一次性解决了……而且我也不会安卓开发呀,想自己改造一台安卓设备,实现 VoIP Server,那还不如回退到树莓派解决方案了。

    不同的用户的实际需求,多少会有差别,双享号对我这样的用户来说是适用的

    1. 支持 iOS,不需要使用安卓手机,不需要多维护一台手机设备
    2. 不需要折腾 VoIP 服务端 /客户端,不需要额外的转发成本
    3. 在国外有一台自己可以物理接触的设备且免国际漫游费用
    4. 价格便宜,有厂商支持……
    hzjxiiang
        28
    hzjxiiang  
       2018-02-13 03:25:38 +08:00
    @ericFork 双享号是没有无线通信模块当。你自己都说了“他们的原理大致是读取 SIM 卡信息,走网络到国内落地,向基站注册” ,这种模式背后是运营商当支持。
    如果是运营商做“双享号”,这完全是多此一举。他们完全可以开发一个网络电话 app,在总部机房做一些改动,把语音和信息直接推送给云端。

    如果我想四卡四待是不是要买两个双卡安卓机??
    淘汰当安卓手机很容易获得,一单我们把“云卡槽” app 开发出可用版本,可以想象会有一个很大当装机量。
    参考现在当“共享单车”甚至是“ SteemIt ” 未来当盈利模式,将会有一个很不错当收益。
    ericFork
        29
    ericFork  
       2018-02-13 03:40:43 +08:00
    @hzjxiiang #28 感觉主要的工作量还是安装在淘汰安卓机上的服务端,Asterisk 服务器本身并不是特别容易配置,而且要兼容各种安卓设备和寨厂的不知道被阉割过、魔改过什么的 ROM,另外要能解决客户侧稀奇古怪的网络问题也很蛋疼(山寨 ISP 的流量穿透,当前大量用户端的双层 /多层 NAT )……好处是客户端可以直接用市面上的 VoIP 客户端 App。前面提到的一堆问题,如果能用私有协议 + 中心节点的方式的话,可能反而还容易些?不过这样的话,又要维护多个中心节点,又要维护协议,还要自己实现一遍客户端,整套产品做出来开发和运行成本也不一定低了,当然现实中我更担心的是因为设备兼容和网络问题导致的客服成本。

    不过我非常乐意见到有一套更新、更好的解决方案能面向市场,如果你的产品做出来了,我愿意当小白鼠 :)
    ety001
        30
    ety001  
    OP
       2018-02-14 07:20:22 +08:00   ❤️ 1
    @hzjxiiang
    @ericFork
    看了两位的讨论,我想说开发类似基于 Android 的服务端,肯定是要抛开 Asterisk 自己另起炉灶的。有这样想法的人肯定不是少数,但是至今没有出来产品,我觉得肯定是坑很深,如果很轻松就能搞定的话,这样的产品早就面世了。所以我觉得这是我一直不去尝试的最大原因,因为最终的付出和回报不成正比,并且运营商如果要做的话,真心就是加个 app 就搞定了的样子。
    oIMOo
        31
    oIMOo  
       2018-03-28 23:10:19 +08:00
    @cjjia Jego 收不到验证码了
    16t
        32
    16t  
       2018-09-09 16:35:09 +08:00
    Jego 已经替换成无忧行了,可以用香港的 VOIP 号码,绑国内号没试过。
    sunzen
        33
    sunzen  
       2019-06-08 20:55:05 +08:00
    @ety001 你好 如何把收到的短信推送到微信?
    anranruoxia
        34
    anranruoxia  
       2019-11-23 19:06:10 +08:00
    @ety001 我也想问问您如何把短信推送到比如 telegram 的 bot 或者方糖,想要这个脚本
    ety001
        35
    ety001  
    OP
       2019-11-24 09:46:28 +08:00
    @sunzen
    @anranruoxia
    在 asterisk 的配置文件目录 /etc/asterisk 下有一个配置文件,好像是 extensions.conf,把里面发邮件的那行改为自己写的脚本就可以把短信推送到你想去的地方了。

    发微信的脚本,可以参考我之前写的,https://github.com/ety001/wx_msg
    deyu260
        36
    deyu260  
       2019-12-31 18:40:49 +08:00
    @ety001 淘宝链接失效了 请问设备名字是叫什么?
    ety001
        37
    ety001  
    OP
       2020-01-04 08:46:57 +08:00
    @deyu2601688.com 搜索 E1750,买带语音支持的。
    JingKeWu
        38
    JingKeWu  
       2020-01-06 20:16:18 +08:00
    @ety001 有没有支持电信 4g 的模块
    ety001
        39
    ety001  
    OP
       2020-01-07 04:25:06 +08:00
    @JingKeWu 这个不确定,自己搜索下吧
    JingKeWu
        40
    JingKeWu  
       2020-01-07 10:20:58 +08:00
    @ety001 找了一圈 没有找到
    liufuyi
        41
    liufuyi  
       2023-11-04 20:31:17 +08:00 via iPhone
    这是梯子之外另外一个违 x 项目了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2572 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 04:48 · PVG 12:48 · LAX 20:48 · JFK 23:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.