首页 > 解决方案 > 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)

标签: pythonflasktwiliostatus

解决方案


我知道这是一篇相对较旧的帖子,到目前为止您可能已经找到了解决方案,但我仍然发布我的答案,以便将来可能面临同样问题的其他用户受益。

我可以在上面发布的代码中看到 2 个问题:

  1. 在函数 voice() 内部

当您使用 API twilioClient.calls.create() 向 twilio 服务器发出请求时,您将使用单个字符串提供 status_callback_event 参数。

您必须传递一个字符串列表,而不是传递单个字符串,例如: ['initiate', 'answered', 'ringing', 'completed']

  1. 在函数 outbound() 内部

twilio 发送到回调 url 的参数是 CallStatus 而不是 callstatus。它们区分大小写。

status=request.values.get('CallStatus', None)

您可以参考此链接查看所有通话资源


推荐阅读