Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(PureBasic) VoiceBase -- Upload a Media File with a JSON ConfigurationThis example uploads a media file and also provides a configuration file.
IncludeFile "CkJsonObject.pb" IncludeFile "CkHttp.pb" IncludeFile "CkJsonArray.pb" IncludeFile "CkHttpRequest.pb" IncludeFile "CkHttpResponse.pb" IncludeFile "CkStringBuilder.pb" Procedure ChilkatExample() ; This example assumes the Chilkat HTTP API to have been previously unlocked. ; See Global Unlock Sample for sample code. ; Insert your Bearer token here: accessToken.s = "VOICEBASE_TOKEN" http.i = CkHttp::ckCreate() If http.i = 0 Debug "Failed to create object." ProcedureReturn EndIf req.i = CkHttpRequest::ckCreate() If req.i = 0 Debug "Failed to create object." ProcedureReturn EndIf CkHttpRequest::setCkHttpVerb(req, "POST") CkHttpRequest::setCkPath(req, "/v2-beta/media") CkHttpRequest::setCkContentType(req, "multipart/form-data") ; Add the access (bearer) token to the request, which is a header ; having the following format: ; Authorization: Bearer <userAccessToken> sbAuth.i = CkStringBuilder::ckCreate() If sbAuth.i = 0 Debug "Failed to create object." ProcedureReturn EndIf CkStringBuilder::ckAppend(sbAuth,"Bearer ") CkStringBuilder::ckAppend(sbAuth,accessToken) CkHttpRequest::ckAddHeader(req,"Authorization",CkStringBuilder::ckGetAsString(sbAuth)) success.i = CkHttpRequest::ckAddFileForUpload2(req,"media","qa_data/wav/msg_123_abc.wav","audio/x-wav") If success <> 1 Debug CkHttpRequest::ckLastErrorText(req) CkHttp::ckDispose(http) CkHttpRequest::ckDispose(req) CkStringBuilder::ckDispose(sbAuth) ProcedureReturn EndIf ; This is the JSON of the configuration to be added as a parameter to the upload: ; (Obviously, if you want a callback, you would use a URL that goes to your own web server..) ; { ; "configuration":{ ; "publish":{ ; "callbacks":[ ; { ; "url":"https://www.chilkatsoft.com/dss/update_vm_transcription.asp", ; "method":"POST", ; "include":[ ; "transcripts", ; "keywords", ; "topics", ; "metadata" ; ] ; } ; ] ; }, ; "keywords":{ ; "groups":[] ; } ; } ; } ; This code produces the above JSON. json.i = CkJsonObject::ckCreate() If json.i = 0 Debug "Failed to create object." ProcedureReturn EndIf CkJsonObject::ckUpdateString(json,"configuration.publish.callbacks[0].url","https://www.chilkatsoft.com/dss/update_vm_transcription.asp") CkJsonObject::ckUpdateString(json,"configuration.publish.callbacks[0].method","POST") CkJsonObject::ckUpdateString(json,"configuration.publish.callbacks[0].include[0]","transcripts") CkJsonObject::ckUpdateString(json,"configuration.publish.callbacks[0].include[1]","keywords") CkJsonObject::ckUpdateString(json,"configuration.publish.callbacks[0].include[2]","topics") CkJsonObject::ckUpdateString(json,"configuration.publish.callbacks[0].include[3]","metadata") jConfig.i = CkJsonObject::ckObjectOf(json,"configuration") jKeywords.i = CkJsonObject::ckAppendObject(jConfig,"keywords") jGroups.i = CkJsonObject::ckAppendArray(jKeywords,"groups") CkJsonArray::ckDispose(jGroups) CkJsonObject::ckDispose(jKeywords) CkJsonObject::ckDispose(jConfig) ; Add the configuration JSON to the upload. CkHttpRequest::ckAddParam(req,"configuration",CkJsonObject::ckEmit(json)) ; Do the upload.. resp.i = CkHttp::ckSynchronousRequest(http,"apis.voicebase.com",443,1,req) If CkHttp::ckLastMethodSuccess(http) <> 1 Debug CkHttp::ckLastErrorText(http) CkHttp::ckDispose(http) CkHttpRequest::ckDispose(req) CkStringBuilder::ckDispose(sbAuth) CkJsonObject::ckDispose(json) ProcedureReturn EndIf ; Examine the response status code and body. Debug "Response status code = " + Str(CkHttpResponse::ckStatusCode(resp)) ; The response should be JSON, even if an error. CkJsonObject::ckLoad(json,CkHttpResponse::ckBodyStr(resp)) CkJsonObject::setCkEmitCompact(json, 0) Debug CkJsonObject::ckEmit(json) ; A successful response will have a status code = 200 If CkHttpResponse::ckStatusCode(resp) <> 200 Debug "Failed." Else Debug "mediaId: " + CkJsonObject::ckStringOf(json,"mediaId") Debug "href: " + CkJsonObject::ckStringOf(json,"_links.self.href") Debug "status: " + CkJsonObject::ckStringOf(json,"status") Debug "Success." EndIf CkHttpResponse::ckDispose(resp) ; Here is an example of a successful response: ; { ; "_links": { ; "self": { ; "href": "/v2-beta/media/856a1e85-c847-4c3c-b7a4-6cf15cd51db4" ; } ; }, ; "mediaId": "856a1e85-c847-4c3c-b7a4-6cf15cd51db4", ; "status": "accepted", ; "metadata": {} ; CkHttp::ckDispose(http) CkHttpRequest::ckDispose(req) CkStringBuilder::ckDispose(sbAuth) CkJsonObject::ckDispose(json) ProcedureReturn EndProcedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.