Django-Twilio点击按钮发送短信

时间:2013-09-20 01:36:07

标签: python django twilio

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'

也许这是因为我未能对视图进行适当的修改。但是我没有很好的方法从教程中的最小例子中弄清楚我做错了什么。 /编辑

3 个答案:

答案 0 :(得分:3)

twilio员工在这里。 这里的问题是django_twilio的内置视图会进行一系列验证检查,以确保它们从twilio.com和twilio.com接收内容。这是内置于django-twilio的安全措施。

您可以做两件事:

  1. 确保您的Django设置中的settings.DEBUG = True,这将关闭验证。然后,您可以在本地计算机上发送cURL请求,同时在终端中运行如下:

    $ curl http://localhost:8000/sms/
    

    这应该返回一些TWiML,如下所示:

    <Response><Sms>Hello world</Sms></Response>
    
  2. 当您在线运行此功能并希望对此进行测试时,请将twilio number设置为指向http://mywebsite.com/sms/并为该号码添加文字。确保settings.DEBUG = False并且您应该收到消息。

  3. 如果您有任何问题,请告诉我。

答案 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>

`