OK可能的noob问题:在学习Django时,我认为用Twilio探索电话可能会很酷。我的直接目标是创建一个带有按钮的页面,当单击该按钮时,会将“Hello World”短信发送到我的手机。在排序之后,我有一些更酷的东西的想法。
到目前为止,我已经完成了几个Django教程,并制作了一些简单视图的小应用程序。但是我所学到的并没有特别说明如何做这样的事情。我还研究过(并安装了)Django-Twilio应用程序和Twilio Python Helper库,但这些文档都没有显示如何发送“hello world”SMS。
有人能指出可能会显示如何执行此操作的资源吗?或者,如果它很简单,只需发布一些示例代码?
编辑以回应Kevin Burke:
谢谢你回复我,凯文。 修改我的urls.py后包括:
urlpatterns = patterns('',
# ...
url(r'^sms/$', 'django_twilio.views.sms', {
'message': 'Hello world',
'to': '+12223334444',
'sender': '+18882223333',
'status_callback': '/sms/completed/',
}, name = 'send_message'),
# ...
)
并将浏览器指向
http://127.0.0.1:8000/sms/
出现以下错误:
Exception Type: TwimlException at /sms/
Exception Value: Invalid method parameter, must be 'GET' or 'POST'
也许这是因为我未能对视图进行适当的修改。但是我没有很好的方法从教程中的最小例子中弄清楚我做错了什么。 /编辑
答案 0 :(得分:3)
twilio员工在这里。
这里的问题是django_twilio
的内置视图会进行一系列验证检查,以确保它们从twilio.com和twilio.com接收内容。这是内置于django-twilio
的安全措施。
您可以做两件事:
确保您的Django设置中的settings.DEBUG = True
,这将关闭验证。然后,您可以在本地计算机上发送cURL
请求,同时在终端中运行如下:
$ curl http://localhost:8000/sms/
这应该返回一些TWiML,如下所示:
<Response><Sms>Hello world</Sms></Response>
当您在线运行此功能并希望对此进行测试时,请将twilio number设置为指向http://mywebsite.com/sms/
并为该号码添加文字。确保settings.DEBUG = False
并且您应该收到消息。
如果您有任何问题,请告诉我。
答案 1 :(得分:0)
以下是官方文档:django-twilio official docs。更具体地说,请阅读有关发送短信的这一部分:Sending sms messages
答案 2 :(得分:0)
这是一个简单的解决方案:
django startproject projectname
<强> urls.py 强>
from django.conf.urls import url, include
from django.contrib import admin
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^', include('message_api.urls')),
]
<强> settings.py 强>
TWILIO_ACCOUNT_SID = TWILIO_ACCOUNT_SID
TWILIO_AUTH_TOKEN = TWILIO_AUTH_TOKEN
DJANGO_TWILIO_FORGERY_PROTECTION = False
DJANGO_TWILIO_BLACKLIST_CHECK = True
开始新的应用
python manage.py startapp appname
在app文件夹中:`
<强> urls.py 强>
from django.conf.urls import url
import django_twilio
from . import views
urlpatterns = [
url(r'^api/$', views.home),
url(r'^send/', views.sms),
]
<强> views.py 强>
from django.shortcuts import render
from twilio.rest import Client
from twilio_api import settings
def home(request):
return render(request, 'index.html', {})
def sms(request):
client = Client(settings.TWILIO_ACCOUNT_SID, settings.TWILIO_AUTH_TOKEN)
message = client.messages.create(to='TO NUMBER', from_='YOUR TWILIO NUMBER', body='This message is sent through twilio api using django framework by akshat.')
print(message.sid)
return render(request, 'thankyou.html')
在app文件夹中创建模板目录
<强>的index.html 强>
<body>
<a href="/send/"><button class="btn btn-outline-primary">Send Message</button></a>
</body>
<强> thankyou.html 强>
<body>
<h1>Success</h1>
</body>
`