【发布时间】:2011-07-27 23:33:23
【问题描述】:
我正在将 Twilio 和 Django 用于 SMS 应用程序(我昨天开始学习 Python,请温柔一点)。
以下是我需要帮助的内容: 当 Twilio 将传入的 SMS 消息发送到我的 URL 时,我希望我的应用程序自动将传入的电话号码、日期/时间和传入的消息添加到某些列表中。我该怎么做?
谢谢!
【问题讨论】:
我正在将 Twilio 和 Django 用于 SMS 应用程序(我昨天开始学习 Python,请温柔一点)。
以下是我需要帮助的内容: 当 Twilio 将传入的 SMS 消息发送到我的 URL 时,我希望我的应用程序自动将传入的电话号码、日期/时间和传入的消息添加到某些列表中。我该怎么做?
谢谢!
【问题讨论】:
Twilio 在请求您的 URL 时将其作为“发件人”参数发送。文档位于:http://www.twilio.com/docs/api/twiml/sms/message
这将类似于此代码,我在 webapp 中使用 python(不是 Django)编写了此代码。
class MainHandler(webapp.RequestHandler):
def get(self):
model = Storage()
from = self.request.get("From")
if from is not '':
model.sms_from = self.request.get("From")
model.sms_body = self.request.get("Body")
model.put()
models = Storage.all()
for i in models:
self.response.out.write(i.sms_from + ' ' + i.sms_body +'<br>')
更新:
当我拿到手机并向 xxx-xxx-xxxx 发送文本时,twilio 将收到该文本,然后向我配置的 URL 发出请求。
从那时起,它看起来与来自网络浏览器的请求完全相同。
这个问题将帮助您了解 Django 的细节 Capturing url parameters in request.GET
发件人应该有你需要的所有参数。
【讨论】:
我刚刚在GitHub 上使用 Twilio 和 Django 编写了一个示例应用程序,但这是您正在寻找的具体答案。
对于这个例子,我在我的服务器上使用“/reply/” URL(并告诉 Twilio 这是 POST 到的地方)
在 urls.py 中,您只需要进行标准映射: url(r'^reply', 'twilio_sms.views.sms_reply'),
这是对用户的一个非常基本的响应,响应 Twilio 服务器的期望。 def sms_reply(请求): 如果 request.method == 'POST': 参数 = request.POST phone = re.sub('+1','',params['From'])
response_message = '<?xml version="1.0" encoding="UTF-8">'
response_message += '<Response><Sms>Thanks for your text!</Sms></Response>'
return HttpResponse(response_message)
在我的代码中,我实际上是使用一个库来构建 XML 响应,我通常建议这样做,但对于代码示例来说,它的信息太多了。
【讨论】: