Sample code for 30+ languages & platforms
Tcl

VoiceBase -- Compound Expression Search

See more VoiceBase Examples

Demonstrates how to do a VoiceBase compound expression search. See VoiceBase Search for more details about Search.

Chilkat Tcl Downloads

Tcl

load ./chilkat.dll

set success 0

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

# Insert your Bearer token here:
set accessToken "VOICEBASE_TOKEN"

set http [new_CkHttp]

set req [new_CkHttpRequest]

CkHttpRequest_put_HttpVerb $req "GET"
CkHttpRequest_put_Path $req "/v2-beta/media"

# Add the access (bearer) token to the request, which is a header
# having the following format:
# Authorization: Bearer <userAccessToken>
set sbAuth [new_CkStringBuilder]

CkStringBuilder_Append $sbAuth "Bearer "
CkStringBuilder_Append $sbAuth $accessToken
CkHttpRequest_AddHeader $req "Authorization" [CkStringBuilder_getAsString $sbAuth]

# Search for media containing the terms any of the terms "test", "number", or "three"
CkHttpRequest_AddParam $req "query" "\"test\" OR \"number\" OR \"three\""

set resp [new_CkHttpResponse]

set success [CkHttp_HttpSReq $http "apis.voicebase.com" 443 1 $req $resp]
if {$success == 0} then {
    puts [CkHttp_lastErrorText $http]
    delete_CkHttp $http
    delete_CkHttpRequest $req
    delete_CkStringBuilder $sbAuth
    delete_CkHttpResponse $resp
    exit
}

# Examine the response status code and body.
puts "Response status code = [CkHttpResponse_get_StatusCode $resp]"

# The response should be JSON, even if an error.
set json [new_CkJsonObject]

CkJsonObject_Load $json [CkHttpResponse_bodyStr $resp]
CkJsonObject_put_EmitCompact $json 0

# A successful response will have a status code = 200
if {[CkHttpResponse_get_StatusCode $resp] != 200} then {
    puts "Failed."
} else {
    puts "mediaId: [CkJsonObject_stringOf $json mediaId]"
    puts "href: [CkJsonObject_stringOf $json _links.self.href]"
    puts "status: [CkJsonObject_stringOf $json status]"
    puts "Success."
}

# See the sample JSON response below..

# Iterate over the JSON like this:
set dt [new_CkDateTime]

set dtObj [new_CkDtObj]

set mediaCount [CkJsonObject_SizeOfArray $json "media"]
set i 0
while {$i < $mediaCount} {
    CkJsonObject_put_I $json $i

    puts "-- $i --"
    puts "  mediaId: [CkJsonObject_stringOf $json {media[i].mediaId}]"
    puts "  status: [CkJsonObject_stringOf $json {media[i].status}]"
    puts "  contentType: [CkJsonObject_stringOf $json {media[i].metadata.contentType}]"
    puts "  milliseconds: [CkJsonObject_stringOf $json {media[i].metadata.length.milliseconds}]"
    puts "  descriptive: [CkJsonObject_stringOf $json {media[i].metadata.length.descriptive}]"
    set dateCreated [CkJsonObject_stringOf $json "media[i].dateCreated"]
    CkDateTime_SetFromTimestamp $dt $dateCreated

    set localTime 1
    CkDateTime_ToDtObj $dt $localTime $dtObj

    puts "  [CkDtObj_get_Month $dtObj]/[CkDtObj_get_Day $dtObj]  [CkDtObj_get_Hour $dtObj]:[CkDtObj_get_Minute $dtObj]"

    set i [expr $i + 1]
}
puts "Finished."

# A sample JSON response:

# { 
#   "_links": { 
#     "self": { 
#       "href": "/v2-beta/media"
#     }
#   },
#   "media": [
#     { 
#       "mediaId": "26063536-FFFF-4020-93ba-0878112d834b",
#       "status": "finished",
#       "metadata": { 
#         "contentType": "audio/x-wav",
#         "length": { 
#           "milliseconds": 85141,
#           "descriptive": "85.0 sec"
#         }
#       },
#       "dateCreated": "2017-01-19T16:49:32.000Z"
#     },
#     { 
#       "mediaId": "8163fbbc-FFFF-4794-aa95-045420bb321d",
#       "status": "finished",
#       "metadata": { 
#         "contentType": "audio/x-wav",
#         "length": { 
#           "milliseconds": 65342,
#           "descriptive": "65.0 sec"
#         }
#       },
#       "dateCreated": "2017-01-19T20:08:49.000Z"
#     },
# ...
# ...
#     { 
#       "mediaId": "b01e27be-FFFF-4b62-8802-6dc66a75c4d3",
#       "status": "finished",
#       "metadata": { 
#         "contentType": "audio/x-wav",
#         "length": { 
#           "milliseconds": 11581,
#           "descriptive": "11.0 sec"
#         }
#       },
#       "dateCreated": "2017-02-06T20:55:43.000Z"
#     }
#   ]
# }

delete_CkHttp $http
delete_CkHttpRequest $req
delete_CkStringBuilder $sbAuth
delete_CkHttpResponse $resp
delete_CkJsonObject $json
delete_CkDateTime $dt
delete_CkDtObj $dtObj