使用Django向手机发送短信

时间:2009-01-10 04:56:48

标签: django sms mobile-phones mobile-website

我正在构建一个应用程序,我有这个小调查模块,它发送一个简单的短信到我给的电话号码,并且必须收集响应(如果用户触发它)并显示给我。我正在使用django构建我的项目。我尝试过django-sms谷歌代码项目,但我无法将消息从手机发回给我的服务器。我浏览了很多关于短信网关/运营商的教程。但我迷路了。任何人都可以帮我建议一个关于从我的应用程序(django)发送短信到任何手机的教程吗?关于将短信发送到手机,是否会让我付出代价(就像我将短信从一部手机发送到另一部手机一样)?

7 个答案:

答案 0 :(得分:16)

您好,我的名字是Jarod,我在Twilio.com工作,所以我有点偏颇。但话说回来,使用Twilio Rest Api从Python Web应用程序发送SMS非常容易。这是一个简单的例子:

# Download the Python helper library from twilio.com/docs/python/install 
from twilio.rest import TwilioRestClient

# Your Account Sid and Auth Token from twilio.com/user/account
account_sid = "{{ account_sid }}"
auth_token  = "{{ auth_token }}"
client = TwilioRestClient(account_sid, auth_token)

message = client.messages.create(
    body="Jenny please?! I love you <3",
    to="+15558675309",
    from_="+14158141829",
    media_url="http://www.example.com/hearts.png")
print message.sid

答案 1 :(得分:11)

从技术角度来看,使用任何网络应用程序完成短信发送的最简单方法是通过电子邮件。大多数小区提供商通常会向其用户提供电子邮件帐户,并且向该帐户发送邮件的可能性很大,而不是通过短信将邮件重定向到他们的小区。但是,并非所有运营商都这样做,并且有些收费是针对此类服务的。在这种情况下,您可以检查以下Django documentation page

然而,如上所述,这不是一个真正完整的解决方案,因此最简单的方法是使用SMS网关。大多数情况下,它们提供简单的基于REST的API,用于向手机发送文本消息。 API在运营商与运营商之间会有明显不同。如果您正在寻找免费的开源解决方案(假设您要在服务器上安装实际网关),我建议您查看Kannel

无论如何,我会开始试图让它与电子邮件方案一起工作,然后继续使用运营商,如果你真的需要它。希望这有点帮助。

答案 2 :(得分:4)

我在另一篇文章中回答了一个类似的问题,比赛有点晚了。这里有更多信息。希望它有所帮助:

我在这方面苦苦挣扎了一段时间,非常喜欢Twilio选项。但后来我深入挖掘并发现有一个名为pygooglevoice的Google Voice API可以运行。干净,简单......没有承运人查询...例如,设置virtualenv并使用pip安装:

pip install pygooglevoice

然后使用这样的东西:

from googlevoice import Voice
from googlevoice.util import input

def send(number, message):
    user = 'user@gmail.com'
    password = 'password'

    voice = Voice()
    voice.login(user, password)

    #number = input('Number to send message to: ') # use these for command method
    #message = input('Message text: ')

    voice.send_sms(number, message)

请注意我已经对此进行了有限的测试,所以我不确定所有的优点和缺点。很可能还有我尚未发现的限制。但是在我玩这个游戏的时候,我很高兴。

答案 3 :(得分:3)

看看django-sms

答案 4 :(得分:0)

结帐twilio.com。它们提供易于使用的API(Python中的几行代码)以及在用户响应时接收SMS消息并在应用程序中触发回调的可能性。

答案 5 :(得分:0)

http://bitbucket.org/vgavro/django-smsgate显然是您正在寻找的,但您必须为您的短信网关编写自定义后端。

答案 6 :(得分:0)

我还找到了TextMagic。它虽然对我所居住的国家来说有点贵,但它看起来很有前途。它可能对你感兴趣的国家有竞争力的价格,所以请在收费前检查价格。

用法似乎很容易:

通过pip快速安装:

pip install textmagic

发送短信似乎微不足道如下:

from textmagic.rest import TextmagicRestClient

username = "your_textmagic_username"
token = "your_apiv2_key"
client = TextmagicRestClient(username, token)

message = client.messages.create(phones="9990001001", text="Hello TextMagic")