Twilio python flask 尝试获取状态回调事件,但它 returns "none"

Twilio python flask try to get status call back event but it returns "none"

我是 twilio python 和 Flask 的新手。我尝试按照 twilio 示例跟踪短信状态,但正如我提到的那样,我得到 none 作为此语句 status=request.values.get('callstatus', None).

的 return

我想跟踪通话进度状态并查看其不同状态。我遵循所有文档,但我被阻止了。感谢您的帮助。

   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)

我知道这是一个相对较旧的 post 并且您现在可能已经找到了解决方案,但我仍然 post 正在回答我的问题,以便其他用户受益谁将来可能会遇到同样的问题。

我在上面的代码 post 中看到了 2 个问题:

  1. 函数 voice() 内部

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

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

  1. outbound()函数内部

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

状态=request.values.get('CallStatus',None)

您可以参考this link查看所有通话资源