Sample code for 30+ languages & platforms
SQL Server

VoiceBase -- Retrieve JSON Transcript

See more VoiceBase Examples

Retrieves a JSON transcript for a media file.

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
    -- 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 @sbUrl int
    EXEC @hr = sp_OACreate 'Chilkat.StringBuilder', @sbUrl OUT

    EXEC sp_OAMethod @sbUrl, 'Append', @success OUT, 'https://apis.voicebase.com/v2-beta/media/$MEDIA_ID/transcripts/latest'
    DECLARE @replaceCount int
    EXEC sp_OAMethod @sbUrl, 'Replace', @replaceCount OUT, '$MEDIA_ID', 'f9b9bb88-d52c-4960-bcef-d516a9f85594'

    DECLARE @strJson nvarchar(4000)
    EXEC sp_OAMethod @sbUrl, 'GetAsString', @sTmp0 OUT
    EXEC sp_OAMethod @http, 'QuickGetStr', @strJson OUT, @sTmp0
    EXEC sp_OAGetProperty @http, 'LastMethodSuccess', @iTmp0 OUT
    IF @iTmp0 <> 1
      BEGIN
        EXEC sp_OAGetProperty @http, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
        EXEC @hr = sp_OADestroy @http
        EXEC @hr = sp_OADestroy @sbAuth
        EXEC @hr = sp_OADestroy @sbUrl
        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 @sbUrl
        EXEC @hr = sp_OADestroy @json
        RETURN
      END

    -- See the sample JSON response below..

    -- Iterate over the words..
    DECLARE @numWords int
    EXEC sp_OAMethod @json, 'SizeOfArray', @numWords OUT, 'transcripts.latest.words'
    DECLARE @i int
    SELECT @i = 0
    WHILE @i < @numWords
      BEGIN
        EXEC sp_OASetProperty @json, 'I', @i
        EXEC sp_OAMethod @json, 'StringOf', @sTmp0 OUT, 'transcripts.latest.words[i].w'
        PRINT @sTmp0
        SELECT @i = @i + 1
      END

    PRINT 'Success.'

    -- A sample JSON response:

    -- { 
    --   "_links": { 
    --     "self": { 
    --       "href": "/v2-beta/media/f9b9bb88-d52c-4960-bcef-d516a9f85594/transcripts/latest"
    --     }
    --   },
    --   "transcripts": { 
    --     "latest": { 
    --       "revision": "b25e81dc-ae3e-4f9d-8008-1d56a283c17f",
    --       "engine": "standard",
    --       "confidence": 2.196210728898151,
    --       "words": [
    --         { 
    --           "p": 0,
    --           "s": 830,
    --           "c": 0.14,
    --           "e": 870,
    --           "w": "You"
    --         },
    --         { 
    --           "p": 1,
    --           "s": 1860,
    --           "c": 0.432,
    --           "e": 1920,
    --           "w": "know"
    --         },
    --         { 
    --           "p": 2,
    --           "s": 1930,
    --           "c": 0.288,
    --           "e": 2250,
    --           "w": "that's"
    --         },
    --         { 
    --           "p": 3,
    --           "s": 2250,
    --           "c": 0.923,
    --           "e": 2300,
    --           "w": "a"
    --         },
    -- ...

    EXEC @hr = sp_OADestroy @http
    EXEC @hr = sp_OADestroy @sbAuth
    EXEC @hr = sp_OADestroy @sbUrl
    EXEC @hr = sp_OADestroy @json


END
GO