2016-11-21 32 views
0

我已經嘗試了大部分解決方案,但無法弄清楚爲什麼我的調用未到達另一側。雖然Twilio說傳入和傳出都成功完成。Twilio調用返回「出現應用程序錯誤」

這裏是我的代碼的必要組成部分

from flask import Flask 
from flask import request, Response 

@app.route('/makeACall', methods=['POST']) 
def exchange_voice(): 
    account_sid = "XXXX" 
    auth_token = "XXXX" 
    client = TwilioRestClient(account_sid, auth_token) 
    call = client.calls.create(
    to="+1857XXX", 
    from_="+1510XXX", 
    url="cloudserver.com/answerWithXML", 
    method='POST' 
) 
    print(call.sid) 

@app.route("/answerWithXML", methods=['GET', 'POST']) 
def sendBackXML(): 
    resp = twilio.twiml.Response(); 
    resp.say("Welcome!"); 

//Was originally sending str(resp) as in docs 

    return Response(resp, content_type="application/xml") 

使用調試器

  • 「11200 - HTTP檢索失敗」,爲返回的響應
  • 「12100 - 文檔解析失敗」 時str(resp)已退回
+0

當您在瀏覽器中向您的'answerWithXML'路由發出GET請求時會發生什麼?你是否也正確地導入了'twilio'庫(我只看到Flask的進口)? – philnash

+0

@philnash是的,twilio進口已正確添加。我錯過了這裏。當我返回str(resp)時,GET請求顯示「Welcome!」。即使那樣,通話也沒有完成。但是,消息傳遞完美無缺。 –

+0

我想知道我們是否可以通過試用帳戶撥打電話。由於我正在嘗試API,因此我沒有升級到完整帳戶。 –

回答

0

Twilio開發者福音傳播者在這裏。

我不完全確定這裏發生了什麼。你的第一個版本應該有工作,也就是用下面的代碼:

@app.route("/answerWithXML", methods=['GET', 'POST']) 
def sendBackXML(): 
    resp = twilio.twiml.Response(); 
    resp.say("Welcome!"); 
    return str(resp); 

你能再試一次,並確保當你犯了一個POST請求的代碼的本地版本,您返回XML回那看起來像:

<Response> 
    <Say>Welcome!</Say> 
</Response> 

如果你明白,然後再次嘗試從Twilio調用。如果不是,那麼請更新所報告的錯誤,然後再嘗試幫助。

+0

感謝您的回答。我嘗試在sendBackXML()函數中打印響應。在我的日誌中,我第一次得到**'查看功能沒有返回響應'**,並且通過消息**'發生了應用程序錯誤**'來切斷呼叫。在通話結束後的50秒內,XML完全按照上述打印。我需要在'exchange_voice'函數中返回任何值嗎? –

+0

然後我嘗試使用Twilio的voice.xml文件。 'call = client.calls.create(url =「http://demo.twilio.com/docs/voice.xml」, to =「+ 185xx」, from _ =「+ 151xx」)'這也給了同樣的錯誤。 –

+0

好的,奇怪的是,你似乎在Twilio URL中有一個零寬度的空白字符。當我複製並粘貼到瀏覽器時,我得到了'https:// demo.twilio.com/docs/voice.x%E2%80%8C%E2%80%8Bml'。所以請嘗試:https://demo.twilio.com/docs/voice.xml – philnash

相關問題