如何解决BadRequestKeyErrorkeyfor Flask + Twilio文字回复
我正在尝试运行响应通过twilio发送的文本消息并使用ngrok的代码。该代码可以响应,但是由于它暂停了程序,因此我试图使其与其他事物一起循环运行。当前错误是
"Traceback (most recent call last):
File "/home/pi/JustTheMessagePost.py",line 32,in <module>
sms()
File "/home/pi/JustTheMessagePost.py",line 17,in sms
number = request.form['From']
File "/usr/lib/python3/dist-packages/werkzeug/datastructures.py",line 431,in __getitem__
raise exceptions.BadRequestKeyError(key)
werkzeug.exceptions.HTTPException.wrap.<locals>.newcls: 400 Bad Request: The browser (or proxy) sent a request that this server could not understand."
与此相关的代码:
#Setup
import time
from twilio.rest import Client
from flask import Flask,request,current_app
from twilio.twiml.messaging_response import Message,MessagingResponse
# Example value given by sensors
temperature = 5
#def inbound_sms():
app = Flask(__name__)
@app.route("/twilio",methods=['POST'])
def sms():
global CPUTemp
number = request.form['From']
message_body = request.form['Body']
resp = MessagingResponse()
response_message = 'This is the general Reply text'
resp.message(response_message)
if message_body == 'Tester':
resp.message(temperature)
else:
print('No text')
return str(resp)
#Loop
while True:
print("Test Text")
with app.test_request_context():
sms()
time.sleep(5)
我对使用flask和webhooks还是很陌生,因此可以提供任何帮助
解决方法
这里是Twilio开发人员的传播者。
我认为您不需要循环运行应用程序,这很可能会引起问题。相反,您需要启动Flask服务器,并使其等待传入连接。
有一个很棒的post on the Twilio blog about how to run a Flask application,建议您阅读。
首先,我认为您应将while
循环替换为以下内容:
if __name__ == "__main__":
app.run()
这将运行Flask应用程序,并显示正在监听的端口号。然后,您可以将该端口号与ngrok一起使用,以创建通往应用程序的隧道,并将ngrok URL设置为您的Webhook URL。有关receiving and responding to SMS message webhooks from Twilio with Flask,check out this blog post as well的更多信息。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。