43

我们运行一个远程系统,并希望服务器能够通过 SMS 提醒我们它们的状态。是否可以设置我们自己的 SMS 网关(或我们自己的 GSM 网络),这样我们就不必为 SMS 提供商付费?

这可能吗?如果是这样,请让我们知道所需的硬件是什么以及我们如何开始..

我确信这是可能的,因为当运营商 A 想向运营商 B 发送短信时,它不会向运营商 B 支付任何费用。此外,还有大量的在线服务,例如:Atompark.com、clickatell、 ...ETC

请注意:我们知道如何使用 Linux 系统、调制解调器 GSM 和有效的 SIM 卡构建短信网关,但我们正在寻找一种无需为发送短信支付任何费用的方法......

4

4 回答 4

38

这是它的工作原理

>>>转发聚合器>>>短信聚合器>>>移动运营商>>>移动公司>>>您的客户

3个主要参与方参与整个过程:

1. 移动运营商:他们管理 SMSC(短消息服务中心)。AT&T、Sprint/NEXTEL、T-Mobile USA、USCellular 和 Verizon Wireless 是全球少数主要的移动运营商。他们与所有主要的手机公司都有深厚的联系。他们中的大多数人拥有 800 到 950 家电信/移动公司。您的所有消息都通过 SMS 聚合器发送给他们,他们将它们转发给接收者的移动公司,最终将其发送给接收者。

成为移动运营商的成本:十亿美元的业务,如果不是万亿的话。

2. SMS 聚合器: mBlox、air2web 和 motricity 是其中少数。他们与移动运营商有着深厚的联系。

成为 SMS 聚合器的成本:百万

3. 转发聚合器/SMS 网关: Clickatell、Twilio 和 esendex 以及其他少数提供 SMS 网关 API 的开发人员正在使用 Clickatell 将其 SMS API 与他们的应用程序集成。他们对不同的国家收取不同的费率(所有国家/地区都没有固定费率)。100,000 条消息(国际)大约需要 600 至 700 美元。

成为转发聚合器的成本:可能以百万计

底线: 我正在研究一个免费的解决方案,但直到今天,全世界还没有免费可靠的解决方案可以在国际上免费发送大量消息。所以不要再浪费时间寻找免费的解决方案了。您必须提出一项新技术才能实现这一目标。

虽然有很多选项可以在您的国家/地区免费或花很少的钱发送批量消息,但如果您打算在国际上发送消息,您根本无法实现这一点。

于 2014-04-19T21:26:21.560 回答
7

除了任何运营商提供的电子邮件到短信系统之外,没有“免费”的方式可以做到这一点。

A想给运营商B发短信,不给运营商B一分钱

这与 B 不会为发送到另一个方向的消息支付 A 的事实相平衡。在国际上,他们经常支付 SMS 互连费用。

...设置我们自己的短信网关

是的,但您需要访问 GSM 网络上的 SMSC 才能直接或通过带有 SIM 卡的设备发送消息,这就是您支付的费用。

或我们自己的 GSM 网络

实际上不,不。

于 2012-09-20T11:05:26.503 回答
7

您可以使用带有加密狗的树莓派或橙色派。然后我们可以使用 AT 命令。

我们可以使用此命令连接加密狗并检查它是否以正确的模式连接。

sudo lsusb 

然后我们可以使用python代码执行AT命令..

发送短信我们可以使用这个代码

def sendsms(number,text):
    ser.flushInput()
    ser.flushOutput()
    ser.write('AT+CMGF=1\r\n')
    sleep(1)
    ser.write('AT+CMGS="%s"\r\n' % number)
    sleep(1)
    ser.write('%s' % text)
    sleep(1)
    ser.write(ascii.ctrl('z'))
    sleep(1)
    ser.flushInput()
    ser.flushOutput()
    print "Text: %s  \nhas been sent to: %s" %(text,number)

阅读未读短信

def read_unread_sms():
ser.write('AT+CMGF=1\r\n')
sleep(2)
ser.write('AT+CMGL="ALL"\r\n')
sleep(5)
a = ser.readlines()
z=[]
y=[]
for x in a:
    if x.startswith('+CMGL:'):
        r=a.index(x)
        t=r+1
        z.append(r)
        z.append(t)
for x in z:
    y.append(a[x])
##Following line changed modem back to PDU mode
ser.write('AT+CMGF=0\r\n')
return y 

如果你想为短信网关创建一个记录器文件,我们可以使用“logger”。如果你想将未读消息发送到 api,我们可以使用“request”模块。

于 2017-10-06T09:04:24.800 回答
4

虽然没有免费的方式来发送正确的文本消息,但您最好为服务器购买一个 GSM 模块(机架中的 USB 并不理想,但应该有适当的硬件扩展总线)。您将查询模块本身,而不是依赖第 3 方中间服务器来发送这些消息,从而节省了大量资金。

虽然我本身并没有意识到这一点,但我创建了这个计划来为我的服务发送短信。这是迄今为止最便宜的选择。

于 2012-09-25T06:46:30.623 回答