好吧,还有其他选项,具体取决于您需要来回传输到服务器的数据量。
而不是短信,对于少量数据,您可以尝试实现Asterisk PBX,让您的手机呼叫您的服务器,然后发送其他 DTMF 数字作为您的数据,这将由您的 Asterisk PBX 解释(如交互式电话音频菜单来自你的有线电视公司)。Asterisk 是 GPL 开源的。
另一种选择(昂贵且工作繁重)是生成一个用您的数据内容编码的音频信号,然后拨打与服务器上附加的传真/调制解调器 pci 板相关联的电话号码,发送该音频就像称呼。不需要长时间通话,因为您可以在短时间的音频流中容纳大量数据。
您的服务器可以通过访问接收端的内容来检查该数据。只需从附加的传真/调制解调器 pci 板记录呼叫,或者您可以使用本地计算机上的 Asterisk PBX 服务器来保存音频文件,然后由您的服务器软件处理。
无论如何,您需要创建一个新的协议和数据编码类型,就像您提到的“机器可读编码”一样。
因此,对于数据类型,您可以在手机上保存大量短音频文件并将它们作为数据类型播放,但使用上面已经提到的 DTMF 会更容易。或者您可以这样编码:通过语音呼叫(宽带/窄带)获取允许使用的声谱,然后将其除以所需的单个字符或块的数量(看看如何在base64中编码,以获得一些想法)。然后创建一个函数,将您的数据编码为短音频流(如果您想进一步复杂化(但加快速度),请阅读有关PCM 编码并阅读有关快速傅里叶变换的更多信息。
创建一个像这样的简单协议:第一个音频数据包是一系列音调,它发出请求、验证并等待来自服务器的确认响应(这可能只是在那之后 1 秒不放弃呼叫)。第 2 个音频包是第一帧数据的大小,然后 3d 音频包以后是数据本身,具有前面所示的大小。等等。为简单起见,请查看 ftp 协议描述。然后您需要对其进行改进,以使上述每个数据包的时间最短,同时保持可信任性。
为了节省语音通话的成本,您还可以探索电话号码选项,例如 Google Voice、Skype 或任何 Voip 服务。