2017-06-22 90 views
0

我正在構建一個語音郵件應用程序,通過Twilio接收電話,接收消息,然後將信息記錄在Airtable數據庫中。我有一切工作正常,但它是很多重複的代碼,所以我想鞏固它,但我在調用函數時遇到錯誤。調用python函數時出現應用程序錯誤

這是我現在有...

@app.route("/call", methods=['GET', 'POST']) 
def caller(): 

    phone = request.values.get('From', None) 
    campaign = request.values.get('To') 

    if campaign == brand_1.phone: 
     brand = brand_1 
     resp = VoiceResponse() 
     resp.play(brand.recording) 
     resp.record(maxLength="30") 
     recording_url = request.values.get("RecordingUrl", None) 
     brand.at.create('Leads', data = {'Phone':phone,'Campaign':campaign, 'Voicemail':recording_url}) 
     return str(resp) 
    elif campaign == brand_2.phone: 
     brand = brand_2 
     resp = VoiceResponse() 
     resp.play(brand.recording) 
     resp.record(maxLength="30") 
     recording_url = request.values.get("RecordingUrl", None) 
     brand.at.create('Leads', data = {'Phone':phone,'Campaign':campaign, 'Voicemail':recording_url}) 
     return str(resp) 
    elif campaign == brand_3.phone: 
     brand = brand_3 
     resp = VoiceResponse() 
     resp.play(brand.recording) 
     resp.record(maxLength="30") 
     recording_url = request.values.get("RecordingUrl", None) 
     brand.at.create('Leads', data = {'Phone':phone,'Campaign':campaign, 'Voicemail':recording_url}) 
     return str(resp) 
    return "Success!" 

正如你所看到的,我重複相同的代碼三次。它的工作原理,但它的醜陋和佔用空間,所以我想創建一個單獨的功能,看起來像這樣...

def voicemail(brand, phone, campaign): 
    resp = VoiceResponse() 
    resp.play(brand.recording) 
    resp.record(maxLength="30") 
    recording_url = request.values.get("RecordingUrl", None) 
    brand.at.create('Leads', data = {'Phone':phone,'Campaign':campaign, 'Voicemail':recording_url}) 
    return str(resp) 

所以我想有這個樣子......

@app.route("/call", methods=['GET', 'POST']) 
def caller(): 

    phone = request.values.get('From', None) 
    campaign = request.values.get('To') 

    if campaign == brand_1.phone: 
     brand = brand_1 
     voicemail(brand, phone, campaign) 
    elif campaign == brand_2.phone: 
     brand = brand_2 
     voicemail(brand, phone, campaign) 
    elif campaign == brand_3.phone: 
     brand = brand_3 
     voicemail(brand, phone, campaign) 
    return "Success!" 

這似乎應該工作,但事實並非如此。 Twilio只是說「發生了應用程序錯誤」

我在這裏錯過什麼傢伙?

回答

1

第二種模式使功能caller()只返回最後的「成功」。 您應該嘗試:

return voicemail(brand, phone, campaign) 
+0

這樣做了。非常感謝! – freefly0313

相關問題