配置 Twilio webhook 时总是收到 400:Bad 请求
Always receiving 400:Bad request when Twilio webhook is configured
我想维护单独的 twilio phone 取消订阅者列表,这可以在通过 twilio 控制台配置 webhook 以接收传入消息时完成。当有人输入“STOP”时,我只会解析那些消息。我已成功配置 webhook
现在,当我在我的 twilio 号码中输入“STOP”时,我的 phone 总是收到错误的请求。我的代码如下所示
@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 的请求对象。此帐户正在免费试用中。谁能给我指出正确的文档来解析传入的消息。
网络钩子是 application/x-www-form-urlencoded
For inbound text messages, Twilio will send an HTTP POST request to
your server with a body that uses the
application/x-www-form-urlencoded encoding. View the list of
parameters sent in that request.
这里是 Twilio 开发人员布道者。
正如 Alan 指出的那样,Twilio webhook 请求以 application/x-www-form-urlencoded
格式发送数据,与 Web 表单 post 数据的格式相同。它不是 JSON。 Twilio 还期望您的应用程序的响应为 application/xml
.
因此,您应该从 request.form
读取数据,并且由于看起来您并不期望告诉 Twilio 对请求做任何进一步的事情,return 一个空的 <Response>
TwiML element.
像这样的东西应该可以工作:
@app.route('/twilio/unsubscribes_incremental', methods=['POST', 'GET'])
def phone_unsubscribes_incremental():
print("start")
print("The arguments are ", request.args)
payload = request.form
print("The payload is ", payload)
if payload.get('Body') in twilio_unsubscribe_list:
stream_data_to_bq(payload)
resp = MessagingResponse()
return str(resp), { 'Content-Type': 'application/xml' }
我想维护单独的 twilio phone 取消订阅者列表,这可以在通过 twilio 控制台配置 webhook 以接收传入消息时完成。当有人输入“STOP”时,我只会解析那些消息。我已成功配置 webhook
现在,当我在我的 twilio 号码中输入“STOP”时,我的 phone 总是收到错误的请求。我的代码如下所示
@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 的请求对象。此帐户正在免费试用中。谁能给我指出正确的文档来解析传入的消息。
网络钩子是 application/x-www-form-urlencoded
For inbound text messages, Twilio will send an HTTP POST request to your server with a body that uses the application/x-www-form-urlencoded encoding. View the list of parameters sent in that request.
这里是 Twilio 开发人员布道者。
正如 Alan 指出的那样,Twilio webhook 请求以 application/x-www-form-urlencoded
格式发送数据,与 Web 表单 post 数据的格式相同。它不是 JSON。 Twilio 还期望您的应用程序的响应为 application/xml
.
因此,您应该从 request.form
读取数据,并且由于看起来您并不期望告诉 Twilio 对请求做任何进一步的事情,return 一个空的 <Response>
TwiML element.
像这样的东西应该可以工作:
@app.route('/twilio/unsubscribes_incremental', methods=['POST', 'GET'])
def phone_unsubscribes_incremental():
print("start")
print("The arguments are ", request.args)
payload = request.form
print("The payload is ", payload)
if payload.get('Body') in twilio_unsubscribe_list:
stream_data_to_bq(payload)
resp = MessagingResponse()
return str(resp), { 'Content-Type': 'application/xml' }