为啥我在与 Twilio 交互的 SMS 应用程序中收到错误 AttributeError: 'module' object has no attribute 'Response'?

Posted

技术标签:

【中文标题】为啥我在与 Twilio 交互的 SMS 应用程序中收到错误 AttributeError: \'module\' object has no attribute \'Response\'?【英文标题】:Why do I get the error AttributeError: 'module' object has no attribute 'Response' in my SMS app that interfaces with Twilio?为什么我在与 Twilio 交互的 SMS 应用程序中收到错误 AttributeError: 'module' object has no attribute 'Response'? 【发布时间】:2017-12-12 08:50:50 【问题描述】:

同样在 ngrok 中,尝试使用 twilio 发出发布请求时出现内部服务器错误 500。

这是我觉得有问题的代码部分:

from flask import Flask, request
from twilio import twiml
import wolframalpha
import wikipedia

app = Flask(__name__)

wolf = wolframalpha.Client(wolfram_app_id)


@app.route('/', methods=['POST'])
def sms():

    message_body = request.form['Body']
    resp = twiml.Response()

    replyText = getReply(message_body) 
    resp.message('Hi\n\n' + replyText )
    return str(resp)

我已经更新了所有最新版本的 ngrok、python、twilio 和 Flask。 我还按照所有步骤激活了 virtualenv。

【问题讨论】:

你能试试运行which python吗?您关注的Make: project 表示您使用的Python 版本无关紧要,但我感觉根据Twilio documentation,它需要是2.7。 (我相信twiml.Response()在Python3中可能不支持,而且你似乎说你的Python是最新版本,所以这可能是冲突)。 这次我实际上使用python 2.7版重新运行了程序,但我仍然得到同样的错误。我知道我使用的是 2.7,因为它显示在终端上。此外,我尝试使用一个简单的 python 程序向我的手机发送文本,并且它通过 twilio 工作。但是,包含更多代码行的 pyhton 文件:wikipedia 和 wolfram 会收到一条消息并将其发回似乎无法正常工作。 您能否上传有效的代码(向您的手机发送短信)?问题代码中调用 Response 的方式可能存在问题。 这是一个简单的代码,当我像这样运行 python 程序时,它只会向我的手机发送一条消息:python filename.py。我不需要使用 2 个终端或将 url 复制到 twilio。 from twilio.rest import Client # 在twilio.com/user/account 找到这些值 account_sid = "ACXXXXXXXXXXXXXXXXXX" auth_token = "YYYYYYYYYYYYYYYYYY" client = Client(account_sid, auth_token) message = client.api.account.messages.create(to="+12316851234" , from_="+15555555555", body="你好!") 【参考方案1】:

这里是 Twilio 开发者宣传员。

如果您使用的是最新版本的Twilio Python module,则没有Response 方法。相反,由于您正在回复消息,因此您需要改用 MessagingResponse

尝试以下方法:

from flask import Flask, request
from twilio.twiml.messaging_response import Message, MessagingResponse
import wolframalpha
import wikipedia

app = Flask(__name__)

wolf = wolframalpha.Client(wolfram_app_id)


@app.route('/', methods=['POST'])
def sms():

    message_body = request.form['Body']
    resp = MessagingResponse()

    replyText = getReply(message_body) 
    resp.message('Hi\n\n' + replyText )
    return str(resp)

【讨论】:

没问题!祝您应用的其他部分好运。【参考方案2】:

此代码一直在使用 Flask 发送消息

安装使用:

* pip install flask
* pip install twilio

from flask import Flask, request
from twilio.twiml.messaging_response import MessagingResponse

app = Flask(__name__)

@app.route("/sms", methods =['POST'])
def sms():
    number = request.form['From']
    message_body = request.form['Body']

    resp = MessagingResponse()
    response_message = 'Hello , You said:'.format(number, message_body)
    resp.message(response_message)

    return str(resp)

if __name__ == "__main__":
    app.run(debug=True)

【讨论】:

以上是关于为啥我在与 Twilio 交互的 SMS 应用程序中收到错误 AttributeError: 'module' object has no attribute 'Response'?的主要内容,如果未能解决你的问题,请参考以下文章

Twilio 的 SMS 验证 gradle 依赖项是啥?

使用 twilio 来自 asp.net 的异步 SMS

Twilio 使用 Node.js 接收和回复 SMS

创建到 Twilio 函数的 HTTP POST(发送 SMS)

获取 Particle Photon 和 Twilio 之间的 webhook

Twilio SMS 物理电话集成