Python 配置Twilio webhook时始终接收400:错误请求
我想维护单独的twilio电话退订者列表,这可以在通过twilio控制台配置webhook以接收传入消息时完成。当有人输入“STOP”时,我只解析这些消息。我已成功配置webhook 现在从我的手机上,当我在我的twilio号码上键入“停止”时,我总是收到错误的请求。我的代码如下所示Python 配置Twilio webhook时始终接收400:错误请求,python,flask,twilio,twilio-programmable-chat,twilio-python,Python,Flask,Twilio,Twilio Programmable Chat,Twilio Python,我想维护单独的twilio电话退订者列表,这可以在通过twilio控制台配置webhook以接收传入消息时完成。当有人输入“STOP”时,我只解析这些消息。我已成功配置webhook 现在从我的手机上,当我在我的twilio号码上键入“停止”时,我总是收到错误的请求。我的代码如下所示 @app.route('/twilio/unsubscribes_incremental', methods=['POST', 'GET']) def phone_unsubscribes_incremental
@app.route('/twilio/unsubscribes_incremental', methods=['POST', 'GET'])
def phone_unsubscribes_incremental():
print("start")
print("The arguments are ", request.args)
payload = request.get_json(force=True)
print("The payload is ", payload)
#resp = MessagingResponse()
if payload.get('Body') in twilio_unsubscribe_list:
stream_data_to_bq(payload)
#resp.message("")
#return str(resp)
return jsonify({"status":"ok"})
我的python控制台显示如下
我的ngrok控制台显示如下
我的twilio控制台日志如下所示
由于某些原因,我无法解析发送到我的webhook的请求对象。这个帐户是免费试用的。有人能给我指出解析传入消息的正确文档吗。webhook是
application/x-www-form-urlencoded
对于入站文本消息,Twilio将向发送HTTP POST请求
您的服务器的主体使用
application/x-www-form-urlencoded编码。查看
在该请求中发送的参数
webhook是
application/x-www-form-urlencoded
对于入站文本消息,Twilio将向发送HTTP POST请求
您的服务器的主体使用
application/x-www-form-urlencoded编码。查看
在该请求中发送的参数
这里是Twilio开发者福音传道者 正如Alan指出的,Twilio webhook请求以
应用程序/x-www-form-urlencoded
的格式发送数据,与web表单发布数据的格式相同。它不是JSON。Twilio还希望应用程序的响应是application/xml
因此,您应该从request.form
读取数据,并且,由于您似乎不希望告诉Twilio对请求做任何进一步的处理,因此返回一个空的
像这样的方法应该会奏效:
@app.route('/twilio/unsubscribes\u incremental',方法=['POST','GET']
def phone_取消订阅_增量():
打印(“开始”)
打印(“参数为”,request.args)
有效载荷=request.form
打印(“有效负载为”,有效负载)
如果twilio取消订阅列表中的payload.get('Body'):
将数据流传送至负载(有效负载)
resp=消息响应()
返回str(resp),{'Content-Type':'application/xml'}
这里是Twilio开发者福音传道者
正如Alan指出的,Twilio webhook请求以应用程序/x-www-form-urlencoded
的格式发送数据,与web表单发布数据的格式相同。它不是JSON。Twilio还希望应用程序的响应是application/xml
因此,您应该从request.form
读取数据,并且,由于您似乎不希望告诉Twilio对请求做任何进一步的处理,因此返回一个空的
像这样的方法应该会奏效:
@app.route('/twilio/unsubscribes\u incremental',方法=['POST','GET']
def phone_取消订阅_增量():
打印(“开始”)
打印(“参数为”,request.args)
有效载荷=request.form
打印(“有效负载为”,有效负载)
如果twilio取消订阅列表中的payload.get('Body'):
将数据流传送至负载(有效负载)
resp=消息响应()
返回str(resp),{'Content-Type':'application/xml'}
谢谢你的代码。它的工作原理是告诉你代码。在这里,它的工作是一个改进,用于从Python脚本中以编程方式启动和控制ngrok
。在这里,作为一个改进,用于从Python脚本中以编程方式启动和控制ngrok
。