Sample code for 30+ languages & platforms
SQL Server

VoiceBase -- Hello World (Get the Media Collection Listing)

See more VoiceBase Examples

This example serves to both verify that your Bearer Token is valid by retrieving JSON that contains information about your media collection.

Chilkat SQL Server Downloads

SQL Server
-- Important: See this note about string length limitations for strings returned by sp_OAMethod calls.
--
CREATE PROCEDURE ChilkatSample
AS
BEGIN
    DECLARE @hr int
    DECLARE @iTmp0 int
    DECLARE @iTmp1 int
    DECLARE @iTmp2 int
    DECLARE @iTmp3 int
    -- Important: Do not use nvarchar(max).  See the warning about using nvarchar(max).
    DECLARE @sTmp0 nvarchar(4000)
    -- This example assumes the Chilkat HTTP API to have been previously unlocked.
    -- See Global Unlock Sample for sample code.

    -- Insert your Bearer token here:
    DECLARE @accessToken nvarchar(4000)
    SELECT @accessToken = 'VOICEBASE_TOKEN'

    DECLARE @http int
    EXEC @hr = sp_OACreate 'Chilkat.Http', @http OUT
    IF @hr <> 0
    BEGIN
        PRINT 'Failed to create ActiveX component'
        RETURN
    END

    -- Add the access (bearer) token to the request, which is a header
    -- having the following format:
    -- Authorization: Bearer <userAccessToken>
    DECLARE @sbAuth int
    EXEC @hr = sp_OACreate 'Chilkat.StringBuilder', @sbAuth OUT

    DECLARE @success int
    EXEC sp_OAMethod @sbAuth, 'Append', @success OUT, 'Bearer '
    EXEC sp_OAMethod @sbAuth, 'Append', @success OUT, @accessToken
    EXEC sp_OAMethod @sbAuth, 'GetAsString', @sTmp0 OUT
    EXEC sp_OAMethod @http, 'SetRequestHeader', NULL, 'Authorization', @sTmp0

    DECLARE @strJson nvarchar(4000)
    EXEC sp_OAMethod @http, 'QuickGetStr', @strJson OUT, 'https://apis.voicebase.com/v2-beta/media'
    EXEC sp_OAGetProperty @http, 'LastMethodSuccess', @iTmp0 OUT
    IF @iTmp0 = 0
      BEGIN
        EXEC sp_OAGetProperty @http, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
        EXEC @hr = sp_OADestroy @http
        EXEC @hr = sp_OADestroy @sbAuth
        RETURN
      END

    -- The response should be JSON, even if an error.
    DECLARE @json int
    EXEC @hr = sp_OACreate 'Chilkat.JsonObject', @json OUT

    EXEC sp_OAMethod @json, 'Load', @success OUT, @strJson
    EXEC sp_OASetProperty @json, 'EmitCompact', 0


    EXEC sp_OAGetProperty @http, 'LastStatus', @iTmp0 OUT
    PRINT 'Response status code = ' + @iTmp0

    EXEC sp_OAGetProperty @http, 'LastStatus', @iTmp0 OUT
    IF @iTmp0 <> 200
      BEGIN
        EXEC sp_OAMethod @json, 'Emit', @sTmp0 OUT
        PRINT @sTmp0

        PRINT 'Failed'
        EXEC @hr = sp_OADestroy @http
        EXEC @hr = sp_OADestroy @sbAuth
        EXEC @hr = sp_OADestroy @json
        RETURN
      END

    -- See the sample JSON response below..

    -- Iterate over the JSON like this:
    DECLARE @dt int
    EXEC @hr = sp_OACreate 'Chilkat.CkDateTime', @dt OUT

    DECLARE @dtObj int
    EXEC @hr = sp_OACreate 'Chilkat.DtObj', @dtObj OUT

    DECLARE @mediaCount int
    EXEC sp_OAMethod @json, 'SizeOfArray', @mediaCount OUT, 'media'
    DECLARE @i int
    SELECT @i = 0
    WHILE @i < @mediaCount
      BEGIN
        EXEC sp_OASetProperty @json, 'I', @i



        PRINT '-- ' + @i + ' --'

        EXEC sp_OAMethod @json, 'StringOf', @sTmp0 OUT, 'media[i].mediaId'
        PRINT '  mediaId: ' + @sTmp0

        EXEC sp_OAMethod @json, 'StringOf', @sTmp0 OUT, 'media[i].status'
        PRINT '  status: ' + @sTmp0

        EXEC sp_OAMethod @json, 'StringOf', @sTmp0 OUT, 'media[i].metadata.contentType'
        PRINT '  contentType: ' + @sTmp0

        EXEC sp_OAMethod @json, 'StringOf', @sTmp0 OUT, 'media[i].metadata.length.milliseconds'
        PRINT '  milliseconds: ' + @sTmp0

        EXEC sp_OAMethod @json, 'StringOf', @sTmp0 OUT, 'media[i].metadata.length.descriptive'
        PRINT '  descriptive: ' + @sTmp0
        DECLARE @dateCreated nvarchar(4000)
        EXEC sp_OAMethod @json, 'StringOf', @dateCreated OUT, 'media[i].dateCreated'
        EXEC sp_OAMethod @dt, 'SetFromTimestamp', @success OUT, @dateCreated

        DECLARE @localTime int
        SELECT @localTime = 1
        EXEC sp_OAMethod @dt, 'ToDtObj', NULL, @localTime, @dtObj


        EXEC sp_OAGetProperty @dtObj, 'Month', @iTmp0 OUT

        EXEC sp_OAGetProperty @dtObj, 'Day', @iTmp1 OUT

        EXEC sp_OAGetProperty @dtObj, 'Hour', @iTmp2 OUT

        EXEC sp_OAGetProperty @dtObj, 'Minute', @iTmp3 OUT
        PRINT '  ' + @iTmp0 + '/' + @iTmp1 + '  ' + @iTmp2 + ':' + @iTmp3

        SELECT @i = @i + 1
      END

    PRINT '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"
    --     }
    --   ]
    -- }

    EXEC @hr = sp_OADestroy @http
    EXEC @hr = sp_OADestroy @sbAuth
    EXEC @hr = sp_OADestroy @json
    EXEC @hr = sp_OADestroy @dt
    EXEC @hr = sp_OADestroy @dtObj


END
GO