我正在尝试使用twilio自动为我打几个电话,但是我在使它正常工作时遇到了一些麻烦。我正在使用像这样的twilio打电话:
conn.calls.create(
to = event.student.phone_number,
from_ = event.message.teacher.twilio_number,
url = '%stwilio_calls/%d/' % (BASE_URL, event.id))
我很确定这部分代码正在运行,因为我正在接收对我的单元的调用作为测试。但是,当我接到电话时,它告诉我存在应用程序错误。在Twilio调试面板中,我看到了:
看起来twilio没有得到我网站的回复。奇怪的是,我可以导航到URL(http://166.78.13.45:8000/twilio_calls/19/
)并接收正确格式化的twiml。不知道为什么twilio无法捡起来。创建此页面的视图如下所示:
@csrf_exempt
def twilio_call(request, event_id):
event = Event.objects.get(pk=event_id)
t = template.Template(event.message.text)
c = template.Context({'student': event.student})
call_text = t.render(c)
# TODO if student not found ?
# TODO if student.objects.call_notification_ind if false?
r = twiml.Response()
r.say(call_text)
return HttpResponse(str(r))
我需要做些什么才能让twilio阅读此页面?
答案 0 :(得分:2)
通过测试URL,看起来如果您在POST正文中放置任何数据,则响应正文为空。
$ curl -iXPOST http://166.78.13.45:8000/twilio_calls/19/
HTTP/1.1 200 OK
Server: nginx/1.2.6
Date: Fri, 04 Jan 2013 00:20:45 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
<?xml version="1.0" encoding="UTF-8"?><Response><Say>Hi Dan,
This is a very long test message for you to try out. Let's see what you think of it. Give it a shot!!!
Call me back if you have any questions</Say></Response>
但是,在请求中添加了CallSid参数:
$ curl -iXPOST http://166.78.13.45:8000/twilio_calls/19/ -d 'foo'
HTTP/1.1 200 OK
Server: nginx/1.2.6
Date: Fri, 04 Jan 2013 00:20:58 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
没有身体。
答案 1 :(得分:0)
这真的很奇怪,我仍然不确定是什么导致了我的问题,但我确实有一个解决方案。在我的views.py文件中添加行print request
似乎为此和我正在使用它的另一个区域修复了它。我只能想象我在这里做了别的错事,如果有人能帮助我弄清楚为什么会这样做以及如何在将来避免它,我会很高兴。