【问题标题】:<Twilio/Python> jsonify call logs<Twilio/Python> jsonify 调用日志
【发布时间】:2017-12-15 08:13:03
【问题描述】:

我正在按照 Twilio 教程设置 iOS 项目。因为它需要一个后端,所以我选择了 Python(我是一名 iOS 开发人员,对 Python 的知识“零”)所以这个问题可能是一个愚蠢的问题,但我没有找到正确的语法。

目标: 获取所有通话记录和会议记录并将它们作为 JSON 响应返回。

我的代码:

@app.route('/getRecordings', methods=['GET'])
def getRecordings():
    client = Client(ACCOUNT_SID, ACCOUNT_AUTH_TOKEN)
    recordings = []
    for record in client.calls.list():
        recordings.append(record.sid)
    conferences = []
    for conf in client.conferences.list():
        conferences.append(conf.sid)
    return jsonify(calls=recordings, conferences=conferences)

回应: 我得到了正确的响应,因为我只附加了每个调用的 SID 属性。

{
  "calls": [
    "CAxxx",
    "CAxxx",
  ],
  "conferences": [
    "CFxxx",
    "CFxxx",
  ]
}

但我想从 Twilio 获取此示例的输出选项卡中显示的每条记录的完整详细信息(参考:https://www.twilio.com/docs/api/voice/conference) 当我尝试 JSONify 记录时,它说它无法 JSONify 这种类型的对象。

我知道我应该将对象转换为模型并附加它,但我该怎么做呢?非常感谢任何有助于排序的链接或线索。

【问题讨论】:

    标签: python api twilio twilio-api


    【解决方案1】:

    您需要创建一个包含所需值的字典列表。像这样的:

    for record in client.calls.list():
        call = {"account_sid": record.account_sid, "api_version": record.api_version, "date_created": record.date_created, "etc": record.etc}
        recordings.append(call)
    

    这应该会给你如下回应:

    {
      "calls": [
        {
          "accound_sid": "1234", 
          "api_version": "2010-04-01", 
          "date_created": "Wed, 18 Aug 2010 20:20:06 +0000", 
          "etc": "etc", 
        },
        {
          "accound_sid": "4321", 
          "api_version": "2010-04-01", 
          "date_created": "Wed, 18 Aug 2010 20:20:06 +0000", 
          "etc": "etc", 
        }
      ]
    }
    

    【讨论】:

    • 感谢您的帮助!!我想知道Twilio/Python 中是否会直接给出 JSON 响应。比如,创建一个Model 对象并将响应传递给它,它将处理JSONifying。无论如何,我想我至少现在应该选择这个。 (y)
    【解决方案2】:

    这里是 Twilio 开发者宣传员。

    如果您希望将完整的 JSON 响应代理到您的应用程序,那么您可能会发现更容易避免使用 Twilio 库,而只需向 JSON API 端点发出请求并直接发送响应。

    例如,要使用 Python 的 Requests library 获取 list of calls,您可以执行以下操作:

    @app.route('/getCalls', methods=['GET'])
    def getCalls():
      url = 'https://api.twilio.com/2010-04-01/Accounts/YOUR_ACCOUNT_SID/Calls/.json'
      request = requests.get(url, auth=(YOUR_ACCOUNT_SID, YOUR_AUTH_TOKEN)
    
      resp = Response(response=request.text,
                      status=200,
                      mimetype="application/json")
      return resp
    

    让我知道这是否有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多