Sample code for 30+ languages & platforms
DataFlex

VoiceBase -- Upload a Media File with a JSON Configuration

See more VoiceBase Examples

This example uploads a media file and also provides a configuration file.

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    String sAccessToken
    Handle hoHttp
    Variant vReq
    Handle hoReq
    Handle hoSbAuth
    Handle hoJson
    Variant vJConfig
    Handle hoJConfig
    Variant vJKeywords
    Handle hoJKeywords
    Variant vJGroups
    Handle hoJGroups
    Variant vResp
    Handle hoResp
    String sTemp1
    Integer iTemp1

    Move False To iSuccess

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

    // Insert your Bearer token here:
    Move "VOICEBASE_TOKEN" To sAccessToken

    Get Create (RefClass(cComChilkatHttp)) To hoHttp
    If (Not(IsComObjectCreated(hoHttp))) Begin
        Send CreateComObject of hoHttp
    End

    Get Create (RefClass(cComChilkatHttpRequest)) To hoReq
    If (Not(IsComObjectCreated(hoReq))) Begin
        Send CreateComObject of hoReq
    End
    Set ComHttpVerb Of hoReq To "POST"
    Set ComPath Of hoReq To "/v2-beta/media"
    Set ComContentType Of hoReq To "multipart/form-data"

    // Add the access (bearer) token to the request, which is a header
    // having the following format:
    // Authorization: Bearer <userAccessToken>
    Get Create (RefClass(cComChilkatStringBuilder)) To hoSbAuth
    If (Not(IsComObjectCreated(hoSbAuth))) Begin
        Send CreateComObject of hoSbAuth
    End
    Get ComAppend Of hoSbAuth "Bearer " To iSuccess
    Get ComAppend Of hoSbAuth sAccessToken To iSuccess
    Get ComGetAsString Of hoSbAuth To sTemp1
    Send ComAddHeader To hoReq "Authorization" sTemp1

    Get ComAddFileForUpload2 Of hoReq "media" "qa_data/wav/msg_123_abc.wav" "audio/x-wav" To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoReq To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // 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.
    Get Create (RefClass(cComChilkatJsonObject)) To hoJson
    If (Not(IsComObjectCreated(hoJson))) Begin
        Send CreateComObject of hoJson
    End
    Get ComUpdateString Of hoJson "configuration.publish.callbacks[0].url" "https://www.chilkatsoft.com/dss/update_vm_transcription.asp" To iSuccess
    Get ComUpdateString Of hoJson "configuration.publish.callbacks[0].method" "POST" To iSuccess
    Get ComUpdateString Of hoJson "configuration.publish.callbacks[0].include[0]" "transcripts" To iSuccess
    Get ComUpdateString Of hoJson "configuration.publish.callbacks[0].include[1]" "keywords" To iSuccess
    Get ComUpdateString Of hoJson "configuration.publish.callbacks[0].include[2]" "topics" To iSuccess
    Get ComUpdateString Of hoJson "configuration.publish.callbacks[0].include[3]" "metadata" To iSuccess

    Get Create (RefClass(cComChilkatJsonObject)) To hoJConfig
    If (Not(IsComObjectCreated(hoJConfig))) Begin
        Send CreateComObject of hoJConfig
    End
    Get pvComObject of hoJConfig to vJConfig
    Get ComObjectOf2 Of hoJson "configuration" vJConfig To iSuccess

    Get Create (RefClass(cComChilkatJsonObject)) To hoJKeywords
    If (Not(IsComObjectCreated(hoJKeywords))) Begin
        Send CreateComObject of hoJKeywords
    End
    Get pvComObject of hoJKeywords to vJKeywords
    Get ComAppendObject2 Of hoJConfig "keywords" vJKeywords To iSuccess

    Get Create (RefClass(cComChilkatJsonArray)) To hoJGroups
    If (Not(IsComObjectCreated(hoJGroups))) Begin
        Send CreateComObject of hoJGroups
    End
    Get pvComObject of hoJGroups to vJGroups
    Get ComAppendArray2 Of hoJKeywords "groups" vJGroups To iSuccess

    // Add the configuration JSON to the upload.
    Get ComEmit Of hoJson To sTemp1
    Send ComAddParam To hoReq "configuration" sTemp1

    // Do the upload..
    Get Create (RefClass(cComChilkatHttpResponse)) To hoResp
    If (Not(IsComObjectCreated(hoResp))) Begin
        Send CreateComObject of hoResp
    End
    Get pvComObject of hoReq to vReq
    Get pvComObject of hoResp to vResp
    Get ComHttpSReq Of hoHttp "apis.voicebase.com" 443 True vReq vResp To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoHttp To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // Examine the response status code and body.
    Get ComStatusCode Of hoResp To iTemp1
    Showln "Response status code = " iTemp1

    // The response should be JSON, even if an error.
    Get ComBodyStr Of hoResp To sTemp1
    Get ComLoad Of hoJson sTemp1 To iSuccess
    Set ComEmitCompact Of hoJson To False

    Get ComEmit Of hoJson To sTemp1
    Showln sTemp1

    // A successful response will have a status code = 200
    Get ComStatusCode Of hoResp To iTemp1
    If (iTemp1 <> 200) Begin
        Showln "Failed."
    End
    Else Begin
        Get ComStringOf Of hoJson "mediaId" To sTemp1
        Showln "mediaId: " sTemp1
        Get ComStringOf Of hoJson "_links.self.href" To sTemp1
        Showln "href: " sTemp1
        Get ComStringOf Of hoJson "status" To sTemp1
        Showln "status: " sTemp1
        Showln "Success."
    End

    // 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": {}
    // 	


End_Procedure