python - 使用 Python 设置状态回调 URL - Flask
问题描述
我正在尝试使用 Python - Flask 在 Twilio 中测试 StatusCallback,但是,我没有得到任何结果,不确定我缺少什么。我也在使用 ngrok。
这是代码:
from flask import Flask, request, abort
import logging
logging.basicConfig(level=logging.INFO)
app = Flask(__name__)
@app.route('/webhook', methods =['POST', 'GET'])
def webhook():
status=request.values.get(['CallSid', 'From', 'To', 'Direction'])
logging.info('Status: {}'.format(status))
return ('', 204)
if __name__ == '__main__':
app.run(debug=True)
当我打电话时,从我附上的图片中,你会注意到我没有得到任何结果。你能告诉我我可能会错过什么吗?谢谢。
解决方案
Twilio 开发人员布道者在这里。
当您使用 ngrok 创建隧道时,会设置一个类似于 的 URL https://RANDOMSUBDOMAIN.ngrok.io
,请确保您使用的是整个 URL,包括子域。
当 ngrok 运行时,还有一个仪表板,您可以检查以确保正在向您的 ngrok URL 发出请求。您可以通过 访问此仪表板http://localhost:4040
。您还可以使用它来检查正在发送的请求参数。
request.values.get
最后,您可能在传递和传递一组键时遇到问题。的get
方法request.values
只需要一个键,而不是一个数组。
正如您在评论中指出的那样,您可以使用request.form.to_dict(flat=False)
来获取参数字典。如果您想在一行中将其进一步解构为单独的变量,您可以使用itemgetter
operator module,如下所示:
from operator import itemgetter
@app.route('/webhook', methods =['POST', 'GET'])
def webhook():
parameters=request.form.to_dict(flat=False)
CallSid, From, To, Direction = itemgetter('CallSid', 'From', 'To', 'Direction')(parameters)
logging.info('CallSid: {}'.format(CallSid))
return ('', 204)
推荐阅读
- python - Download dependencies using serverless-python-requirements plugin on GitHub Actions throws "cannot find Python 3.7"
- javascript - 将子数组连接到父数组
- jquery - 使用 bootstrap4-toggle 和 localStorage 为深色模式切换 CSS
- javascript - 如果 Javascript 中的键相同,如何比较两个不同的对象键并更新它的值?
- jquery - 在 iframe 中获取 Visio SharePoint WebPart 的 css
- python - Python:如何按小时和天对熊猫数据框进行分组?
- python - Seaborn 内核密度估计,但带有值
- nginx - Poste.io 的 Nginx 反向代理
- javascript - innerHTML 模板添加的功能自动触发
- python - 在熊猫中计算具有多个条件的行