python - Twilio python烧瓶尝试获取状态回调事件,但它返回“无”
问题描述
我是 twilio python 和烧瓶的新手。我试图按照 twilio 示例来跟踪短信状态,但正如我所提到的,我得到none
了这个语句的返回status=request.values.get('callstatus', None)
。
我想跟踪通话进度状态并查看其不同的状态。我遵循所有文档,但我被阻止了。谢谢你的帮助。
from flask import Flask,request
from twilio.rest import Client
from twilio.twiml.voice_response import Dial, VoiceResponse
from pprint import pprint
import logging
logging.basicConfig(level=logging.INFO)
app = Flask(__name__)
twilioClient = Client('*******************', '*****************************')
@app.route("/voice")
def voice():
call=twilioClient.calls.create(
method='GET',
status_callback='http://*****.ngrok.io/response',
status_callback_event='initiated ringing answered completed',
status_callback_method='POST',
from_='+**********',
to='+*********',
url='http://demo.twilio.com/docs/voice.xml''
)
return call.sid
@app.route('/response', methods=['POST'])
def outbound():
status=request.values.get('callstatus', None)
logging.info('Status: {}'.format(status))
return ('', 204)
if __name__ == "__main__":
app.run(debug=true)
解决方案
我知道这是一篇相对较旧的帖子,到目前为止您可能已经找到了解决方案,但我仍然发布我的答案,以便将来可能面临同样问题的其他用户受益。
我可以在上面发布的代码中看到 2 个问题:
- 在函数 voice() 内部
当您使用 API twilioClient.calls.create() 向 twilio 服务器发出请求时,您将使用单个字符串提供 status_callback_event 参数。
您必须传递一个字符串列表,而不是传递单个字符串,例如: ['initiate', 'answered', 'ringing', 'completed']
- 在函数 outbound() 内部
twilio 发送到回调 url 的参数是 CallStatus 而不是 callstatus。它们区分大小写。
status=request.values.get('CallStatus', None)
您可以参考此链接查看所有通话资源
推荐阅读
- nginx - 好像 nginx 代理服务器不起作用
- typescript - 类型检查在 React HOC 的包装组件上失败
- javascript - javascript - 滑块中的对数刻度
- algorithm - 受约束的 N-Rook 解数
- amazon-web-services - Aurelia、Docker、Nginx、AWS Elastic Beanstalk 显示 502 错误网关
- c++ - QT如何查找未翻译的字符串
- awk - awk 搜索文件可能包含多个 id 条目
- reactjs - 如何将 Next.js 应用于使用 create-react-app 创建的 React 项目?
- performance - 在 kubernetes 上查找和设置应用程序资源限制/请求的最佳方法
- c# - 有没有办法反序列化异常对象?