调用python函数时出现应用程序错误

时间:2017-06-22 17:53:10

标签: python twilio airtable

我正在构建一个语音邮件应用程序,通过Twilio接收电话,接收消息,然后将信息记录在Airtable数据库中。我有一切正常,但它是很多重复的代码,所以我想巩固它,但我在调用函数时遇到错误。

这就是我现在拥有的......

@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 个答案:

答案 0 :(得分:1)

第二种模式使函数caller()仅返回最终的"成功"。 你应该试试:

return voicemail(brand, phone, campaign)