Tcl
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
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