为啥我在与 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 函数的 HTTP POST(发送 SMS)