短信语音网关的一些记录

Just For Fun. 这些事情就是乐趣本身,有人从看剧中获得满足感,有人从游戏中获得满足感,而我的乐趣来源更多是折腾这些东西,这些也都是我的小玩具。

事情要回到年初:换了iPhone之后,由于没有双卡,不得不随身带2个手机,作为热点以及小号。

期间有尝试过找一些解决方案,比如使用SIM800的扩展板接到NanoPi上实现自动接收转发短信,但是扩展板就成本来讲还是略高,暂时搁置。

直到前几天看到可以使用“上网卡”来实现发短信以及语音电话功能,瞬间选择就多了不少。3G时代的各种品牌的上网卡在闲鱼上淘淘,20块包邮就可以到手,成色非常新,原盒包装都还在。

作了一番调研,选择主要有两大品牌:华为和中兴ZTE。这类设备的英文名称一般是叫做:USB 3G Modem Dongle,如果是搜索英文资料可以基于这个关键词搜索。

抱着试试看的态度先买了一个中兴的MF190,是一款WCMDA的联通3G上网卡,默认开启短信功能,没有提供语音电话功能(插上卡之后拨打该号码会提示正在通话中),接到电脑可以正确识别出,虽然是联通定制款上网卡,但是插入移动的SIM卡也是可以正常收发短信,只不过需要一点点设置,该上网卡默认首选的网络制式是3G的WCMDA,这种制式移动SIM卡不支持,需要将网络制式调整为GPRS,这样就可以了,具体操作如下:

1、eject /dev/sr0 (设备名称根据实际情况确定),弹出网卡的cdrom之后,网卡就会切换为modem运行模式;
2、连接到设备串口,波特率是9600,执行执指令:
      AT+ZOPRT=5(保持在线)
      AT+ZCDRUN=8(禁用CD自动运行)
      AT+ZSNT=1,0,0(切换为GPRS网络)
      AT+COPS?(执行该命令可以查询当前连接的移动网络名称,如正常则会返回China Mobile相关字样)
3、执行完上述指令之后可能需要根据实际情况重新插拔上网卡才会生效;
4、语音电话功能网上找了很多资料都没有找到如何开启,也罢,单纯作为短信使用。

操作成功之后又在咸鱼淘了3台MF190,有点冲动了。

说完了中兴,现在说说华为。
华为相关的案例以及资料比中兴更多,看来通信类的产品还是首选华为,因为用的人多,遇到问题更容易解决。

选择了一台E261的联通3G上网卡,可以解锁实现语音通话功能,昨天刚到手还没有时间去折腾,周末再补充。

插曲:关于USB Hub的选择,一下子买了这么多USB上网卡,NanoPi只有一个USB,完全不够用,势必要买个USB Hub,作了一番调研,主要选择如下,按照网上的评价排名:

1、西普莱,之前也没听过,在SMZDM看评论有人提到说做工很好,搜索了一下,不少人买这个牌子的Hub做群控,看来品质还可以;
2、Anker,国人做的牌子,主要面向海外市场,做工以及口碑不错,但是国内只能淘宝或者咸鱼淘淘了;
3、Orico,据说是给Anker代工的,京东有一款京造的USB Hub好像也是Orico做的,但是口碑上不太好,据说容易坏,但是他们的Hub用的是威盛的USB Hub芯片,所以打算选择他们家的产品;
4、绿联,之前买过不少他家的线材,也买过一个USB 3.0的一拖四的Hub,轻度使用下来倒也正常,没出过什么问题,接的都是低功率设备,对电源没什么要求;

3G上网卡通信峰值电流要求可能高达1A,所以Hub务必需要带独立辅助电源,电源功率上来看,绿联有24W的,Orico 有36W的,Anker有高的60W的产品,综合下来比较倾向于Orico的36W产品,继续咸鱼淘淘。

最终选择了西普莱10口的Hub。


短信服务软件的选择:
1、kannel,最先研究的方案,细节的配置较多比较繁琐,暂时不考虑
2、smstools,第二研究的方案,已经配置好能够收发短信了,但是嫌麻烦:短信需要转码处理
3、gammu,第三研究的方案,自带数据库存储接口,短信接收到之后可以配置直接存入数据库,很方便

配置记录:
1、后端服务使用gammu,配置存储为:MySQL SQLITE
2、在gammu的RunOnReceive配置项设置触发脚本,在接收到短信的时候执行,可以在脚本里处理长短信合并,以及调用WebHook等等,更多功能就发挥自己想象力了

最终我们是要将操作系统接收到的短信让我们自己的手机可以看到,那么方式无外乎以下几种:
1、直接转发,这个最简单,但是如果是没有短信套餐的话,转发短信是需要额外付费的,我希望成本最小化,1毛钱都不想多付
2、通过邮件发送,这种可能会被邮件服务商拦截为垃圾邮件,邮件的及时性也是一个问题,作为可选方案
3、通过微信推送,这个需要申请公众号才能操作推送服务,虽然有ServerChan已经提供了这类功能,但是短信内容隐私性比较强,还是选择自己搭建服务比较可靠,暂不考虑
4、集成第三方的推送服务比如有人使用PushOver来实现,PushOver也是需要付费,暂不考虑
5、提供Web网页访问接口,需要的时候访问网页即可获得短信内容,手机上只需要保存一个网页的快捷方式即可,目前定下这个方案。

处理流程:
1、创建一张新表,比如叫做pushsms(ID, PhoneID, SenderNumber, Message, CreateAt)
2、接收到短信之后触发脚本,存储到pushsms表,如是长短信,还需要进行短信合并
3、新建一个脚本从pushsms读取短信提供Web访问

处理好短信之后接下来就是搭建一个VoIP网关,转发通话至手机,基本思路:
1、先构建VoIP网络,外线呼入使用USB Modem接入,可以设置通话路由规则,很灵活
2、手机安装VoIP客户端,配置接入自己搭建的VoIP网关,分配内网分机号,当小号手机有电话呼入的时候VoIP网关转发通话至手机的分机号,实现通话功能
3、待续,周末继续折腾





 

one

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注