【问题标题】:Django-Twilio sending SMS on button clickDjango-Twilio 在按钮单击时发送短信
【发布时间】:2013-09-20 01:36:07
【问题描述】:

这里有可能的菜鸟问题:在学习 Django 时,我认为使用 Twilio 探索电话可能很酷。我的直接目标是创建一个带有按钮的页面,当单击该按钮时,会向我的手机发送“Hello World”短信。整理好之后,我对更酷的东西有了一些想法。

到目前为止,我已经完成了几个 Django 教程,并制作了一些带有简单视图的小应用程序。但我所学到的任何东西都没有特别说明如何做这样的事情。我还调查(并安装)了 Django-Twilio 应用程序和 Twilio Python Helper Library,但它们的文档都没有显示如何发送“hello world”短信。

谁能指出一个可能展示如何做到这一点的资源?或者,如果它非常简单,只需发布​​一些示例代码?

编辑以回应 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'

这可能是因为我没有对视图进行适当的修改。但是我没有很好的方法从教程中的最小示例中找出我做错了什么。 /编辑

【问题讨论】:

  • 在不了解您的情况的情况下提供帮助有点棘手。绝对可以使用 twilio-python 帮助程序库发送“Hello World”,例如twilio.com/docs/python/install,但在不知道您遇到什么问题的情况下提供更多反馈是很棘手的。

标签: python django twilio


【解决方案1】:

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,您应该会收到一条消息。

如果您还有问题,请告诉我。

【讨论】:

    【解决方案2】:

    这是官方文档:django-twilio official docs。更具体地说,阅读有关发送短信的部分:Sending sms messages

    【讨论】:

      【解决方案3】:

      这是一个简单的解决方案:

      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
      

      在应用文件夹内:`

      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')
      

      在您的应用文件夹中创建一个模板目录

      index.html

      <body>
      <a href="/send/"><button class="btn btn-outline-primary">Send Message</button></a>
      </body>
      

      thankyou.html

      <body>
      <h1>Success</h1>
      </body>
      

      `

      【讨论】:

      • 消息发送操作完成的位置。它在 print(message.sid) 中吗??
      猜你喜欢
      • 2014-02-04
      • 2012-05-23
      • 1970-01-01
      • 1970-01-01
      • 2021-07-25
      • 2017-12-15
      • 1970-01-01
      • 2017-10-31
      • 1970-01-01
      相关资源
      最近更新 更多