0

我正在尝试使用 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 调试面板中,我看到了这个:

http://i.stack.imgur.com/O3oJZ.png

看起来 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 阅读此页面?

4

2 回答 2

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

没有身体。

于 2013-01-04T00:22:33.640 回答
0

这真的很奇怪,我仍然不确定是什么导致了我的问题,但我确实有一个解决方案。在我的 views.py 文件中添加该行print request似乎可以解决这个问题以及我正在使用的另一个区域。我只能想象我在这里做错了什么,如果有人可以帮助我弄清楚为什么会这样以及将来如何避免它,我会很高兴。

于 2013-01-28T23:16:26.297 回答