Chilkat Online Tools

Foxpro / Zoom API / Get meeting quality scores

Back to Collection Items

LOCAL loHttp
LOCAL lnSuccess
LOCAL loQueryParams
LOCAL loResp
LOCAL loSbResponseBody
LOCAL loJResp
LOCAL lnRespStatusCode
LOCAL lnGood
LOCAL lnFair
LOCAL lnPoor
LOCAL lnBad
LOCAL lnVideoGood
LOCAL lnVideoFair
LOCAL lnVideoPoor
LOCAL lnVideoBad
LOCAL lnScreen_shareGood
LOCAL lnScreen_shareFair
LOCAL lnScreen_sharePoor
LOCAL lnScreen_shareBad
LOCAL lcFrom
LOCAL lcV_to
LOCAL i
LOCAL lnCount_i

* This example assumes the Chilkat API to have been previously unlocked.
* See Global Unlock Sample for sample code.

loHttp = CreateObject('Chilkat_9_5_0.Http')

loQueryParams = CreateObject('Chilkat_9_5_0.JsonObject')
loQueryParams.UpdateString("from","1989-05-07")
loQueryParams.UpdateString("to","1989-05-07")
loQueryParams.UpdateString("type","meeting")

* Adds the "Authorization: Bearer <access_token>" header.
loHttp.AuthToken = "<access_token>"

loResp = loHttp.QuickRequestParams("GET","https://api.zoom.us/v2/metrics/quality",loQueryParams)
IF (loHttp.LastMethodSuccess = 0) THEN
    ? loHttp.LastErrorText
    RELEASE loHttp
    RELEASE loQueryParams
    CANCEL
ENDIF

loSbResponseBody = CreateObject('Chilkat_9_5_0.StringBuilder')
loResp.GetBodySb(loSbResponseBody)

loJResp = CreateObject('Chilkat_9_5_0.JsonObject')
loJResp.LoadSb(loSbResponseBody)
loJResp.EmitCompact = 0

? "Response Body:"
? loJResp.Emit()

lnRespStatusCode = loResp.StatusCode
? "Response Status Code = " + STR(lnRespStatusCode)
IF (lnRespStatusCode >= 400) THEN
    ? "Response Header:"
    ? loResp.Header
    ? "Failed."
    RELEASE loResp
    RELEASE loHttp
    RELEASE loQueryParams
    RELEASE loSbResponseBody
    RELEASE loJResp
    CANCEL
ENDIF

RELEASE loResp

* Sample JSON response:
* (Sample code for parsing the JSON response is shown below)

* {
*   "from": "2019-02-28",
*   "to": "2019-03-28",
*   "quality": [
*     {
*       "audio": {
*         "good": 13,
*         "fair": 2,
*         "poor": 1,
*         "bad": 0
*       },
*       "video": {
*         "good": 16,
*         "fair": 0,
*         "poor": 0,
*         "bad": 0
*       },
*       "screen_share": {
*         "good": 6,
*         "fair": 4,
*         "poor": 3,
*         "bad": 3
*       }
*     }
*   ]
* }

* Sample code for parsing the JSON response...
* Use this online tool to generate parsing code from sample JSON: Generate JSON Parsing Code

lcFrom = loJResp.StringOf("from")
lcV_to = loJResp.StringOf("to")
i = 0
lnCount_i = loJResp.SizeOfArray("quality")
DO WHILE i < lnCount_i
    loJResp.I = i
    lnGood = loJResp.IntOf("quality[i].audio.good")
    lnFair = loJResp.IntOf("quality[i].audio.fair")
    lnPoor = loJResp.IntOf("quality[i].audio.poor")
    lnBad = loJResp.IntOf("quality[i].audio.bad")
    lnVideoGood = loJResp.IntOf("quality[i].video.good")
    lnVideoFair = loJResp.IntOf("quality[i].video.fair")
    lnVideoPoor = loJResp.IntOf("quality[i].video.poor")
    lnVideoBad = loJResp.IntOf("quality[i].video.bad")
    lnScreen_shareGood = loJResp.IntOf("quality[i].screen_share.good")
    lnScreen_shareFair = loJResp.IntOf("quality[i].screen_share.fair")
    lnScreen_sharePoor = loJResp.IntOf("quality[i].screen_share.poor")
    lnScreen_shareBad = loJResp.IntOf("quality[i].screen_share.bad")
    i = i + 1
ENDDO

RELEASE loHttp
RELEASE loQueryParams
RELEASE loSbResponseBody
RELEASE loJResp

Curl Command

curl -G -d "from=1989-05-07"
	-d "to=1989-05-07"
	-d "type=meeting"
	-H "Authorization: Bearer <access_token>"
https://api.zoom.us/v2/metrics/quality

Postman Collection Item JSON

{
  "name": "Get meeting quality scores",
  "request": {
    "auth": {
      "type": "oauth2"
    },
    "method": "GET",
    "header": [
    ],
    "url": {
      "raw": "{{baseUrl}}/metrics/quality?from=1989-05-07&to=1989-05-07&type=meeting",
      "host": [
        "{{baseUrl}}"
      ],
      "path": [
        "metrics",
        "quality"
      ],
      "query": [
        {
          "key": "from",
          "value": "1989-05-07",
          "description": "(Required) Start date in 'yyyy-mm-dd' format. The date range defined by the \"from\" and \"to\" parameters should only be one month as the report includes only one month worth of data at once."
        },
        {
          "key": "to",
          "value": "1989-05-07",
          "description": "(Required) End date."
        },
        {
          "key": "type",
          "value": "meeting",
          "description": "The type of meeting quality score to query: \n* `meeting` — Query by meetings. \n* `participants` — Query by meeting participants."
        }
      ]
    },
    "description": "Use this API to return [meeting quality score](https://support.zoom.us/hc/en-us/articles/360061244651-Meeting-quality-scores-and-network-alerts-on-Dashboard) information. Meeting quality scores are based on the mean opinion score (MOS). The MOS measures a meeting's quality on a scale of \"Good\" (5-4), \"Fair\" (4-3), \"Poor\" (3-2), or \"Bad\" (2-1). \n\n**Scopes:** `dashboard_home:read:admin` <br> **[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Heavy` \n\n**Prerequisites:** \n* A Business or a higher plan."
  },
  "response": [
    {
      "name": "**HTTP Status Code:** `200`<br>\nMeeting quality returned",
      "originalRequest": {
        "method": "GET",
        "header": [
          {
            "description": "Added as a part of security scheme: oauth2",
            "key": "Authorization",
            "value": "<token>"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/metrics/quality?from=1989-05-07&to=1989-05-07&type=meeting",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "metrics",
            "quality"
          ],
          "query": [
            {
              "key": "from",
              "value": "1989-05-07"
            },
            {
              "key": "to",
              "value": "1989-05-07"
            },
            {
              "key": "type",
              "value": "meeting"
            }
          ]
        }
      },
      "status": "OK",
      "code": 200,
      "_postman_previewlanguage": "json",
      "header": [
        {
          "key": "Content-Type",
          "value": "application/json"
        }
      ],
      "cookie": [
      ],
      "body": "{\n \"from\": \"2019-02-28\",\n \"to\": \"2019-03-28\",\n \"quality\": [\n  {\n   \"audio\": {\n    \"good\": 13,\n    \"fair\": 2,\n    \"poor\": 1,\n    \"bad\": 0\n   },\n   \"video\": {\n    \"good\": 16,\n    \"fair\": 0,\n    \"poor\": 0,\n    \"bad\": 0\n   },\n   \"screen_share\": {\n    \"good\": 6,\n    \"fair\": 4,\n    \"poor\": 3,\n    \"bad\": 3\n   }\n  }\n ]\n}"
    }
  ]
}