我正在将 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 发出请求。
从那时起,它看起来与来自 Web 浏览器的请求完全相同。
这个问题将帮助您了解 Django Capturing url 参数在 request.GET 中的细节
发件人应该有您需要的所有参数。
我刚刚在GitHub 上使用 Twilio 和 Django 编写了一个示例应用程序,但这是您正在寻找的具体答案。
对于这个例子,我在我的服务器上使用“/reply/”URL(并告诉 Twilio 这是 POST 到的地方)
在 urls.py 中,您只需进行标准映射: url(r'^reply', 'twilio_sms.views.sms_reply'),
这是对用户的一个非常基本的响应,响应 Twilio 服务器的期望。def sms_reply(request): if request.method == 'POST': params = 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 响应的,我通常建议这样做,但是对于代码示例来说,它的信息太多了。