通过http网关发送django通用短信
项目描述
轻松通过django网关发送短信消息。
此代码相当稳定,已使用约2年,每周发送数千条消息,通过各种网关,到多个不同的国家。
安装
将包安装到项目的虚拟环境中
pip install django-sms-gateway
将sms添加到项目的settings.INSTALLED_APPS中。
运行./manage.py migrate或./manage.py syncdb
配置
有三个django模型:sms.Message、sms.Gateway和sms.Reply。
在您能够发送任何消息之前,您需要配置至少一个网关。有一些网关提供商的示例数据。您可以为您的目的调整其中之一。
用法
创建一个待发送的消息
msg = Message.objects.create( recipient_number="123456789", content="Test message", sender=user, billee=user )
请注意,您必须提供至少这些字段。 recipient_number必须包含国际区号(或您的网关必须配置为添加它)。 content应该是ASCII,某些网关拒绝Unicode。 sender必须是auth.User,但billee可以是任何对象。
这不会发送消息
>>> msg <Message: [Unsent] Sent to 123456789 by matt at None [1]>
要发送它,您需要提供一个网关
msg.send(gateway)
状态/回复回调
如果您的网关支持,您可以在任何消息的状态更新时让它在您的服务器上触发。您可以在您的urlpatterns中使用包含的视图。
urlpatterns = patterns('', (r'^sms/', include('sms.urls')), )
这意味着您需要在您的网关设置中输入类似以下内容:
http://example.com/sms/status_postback/
在您的网关设置中。
状态可以更新,并且可以提供状态信息。这一切都是通过解析发送到服务器的状态更新请求的内容以及状态映射数据来完成的。
同样,对于回复也适用,如果你有一个双向网关,但使用 /sms/reply_postback/ 而不是。
计费
由于短信通常通过网关计费,因此需要提供债务人,并且每条消息都有一个计费标志。这允许你在事后计费。如果你想只允许发送给有余额的人的消息,那么在尝试发送之前你需要验证这一点。
由于一条消息可能比一个片段长,sms.Message 有一个辅助属性 .length,它计算需要多少个片段。
未来
目前,所有发送都在进程内完成。有一个初步的 celery 任务,但尚未进行广泛测试。
项目详情
django-sms-gateway-1.2.1.tar.gz 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 77863bf5042104543c4653ea7e501032010a67662f081b97a5989488d57b67ba |
|
MD5 | bcedf441925ab6b7d454de6a095d784f |
|
BLAKE2b-256 | b94950676bc87f9f62b72933b0d371f2b680a30d5ea1416281990d15b21e544a |