Sample code for 30+ languages & platforms
SQL Server

Twilio List Log Messages

See more Twilio Examples

Fetch the log containing information about SMS messages previously sent (or failed to be sent).

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
    -- Important: Do not use nvarchar(max).  See the warning about using nvarchar(max).
    DECLARE @sTmp0 nvarchar(4000)
    DECLARE @success int
    SELECT @success = 0

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

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

    -- Implements the following CURL command:

    -- curl -X GET 'https://api.twilio.com/2010-04-01/Accounts/TWILIO_ACCOUNT_SID/Messages.json?PageSize=20' \
    -- -u TWILIO_ACCOUNT_SID:TWILIO_AUTH_TOKEN

    -- Use the following online tool to generate HTTP code from a CURL command
    -- Convert a cURL Command to HTTP Source Code

    EXEC sp_OASetProperty @http, 'Login', 'TWILIO_ACCOUNT_SID'
    EXEC sp_OASetProperty @http, 'Password', 'TWILIO_AUTH_TOKEN'

    DECLARE @sbResponseBody int
    EXEC @hr = sp_OACreate 'Chilkat.StringBuilder', @sbResponseBody OUT

    EXEC sp_OAMethod @http, 'QuickGetSb', @success OUT, 'https://api.twilio.com/2010-04-01/Accounts/TWILIO_ACCOUNT_SID/Messages.json?PageSize=20', @sbResponseBody
    IF @success = 0
      BEGIN
        EXEC sp_OAGetProperty @http, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
        EXEC @hr = sp_OADestroy @http
        EXEC @hr = sp_OADestroy @sbResponseBody
        RETURN
      END

    DECLARE @json int
    EXEC @hr = sp_OACreate 'Chilkat.JsonObject', @json OUT

    EXEC sp_OAMethod @json, 'LoadSb', @success OUT, @sbResponseBody
    EXEC sp_OASetProperty @json, 'EmitCompact', 0


    PRINT 'Response Body:'
    EXEC sp_OAMethod @json, 'Emit', @sTmp0 OUT
    PRINT @sTmp0

    DECLARE @respStatusCode int
    EXEC sp_OAGetProperty @http, 'LastStatus', @respStatusCode OUT

    PRINT 'Response Status Code = ' + @respStatusCode
    IF @respStatusCode >= 400
      BEGIN

        PRINT 'Response Header:'
        EXEC sp_OAGetProperty @http, 'LastHeader', @sTmp0 OUT
        PRINT @sTmp0

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

    -- Sample JSON response:
    -- (Sample code for parsing the JSON response is shown below)

    -- {
    --   "end": 1,
    --   "first_page_uri": "/2010-04-01/Accounts/ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Messages.json?To=%2B123456789&From=%2B987654321&DateSent%3E=2008-01-02&PageSize=2&Page=0",
    --   "next_page_uri": "/2010-04-01/Accounts/ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Messages.json?To=%2B123456789&From=%2B987654321&DateSent%3E=2008-01-02&PageSize=2&Page=1&PageToken=PAMMc26223853f8c46b4ab7dfaa6abba0a26",
    --   "page": 0,
    --   "page_size": 2,
    --   "previous_page_uri": "/2010-04-01/Accounts/ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Messages.json?To=%2B123456789&From=%2B987654321&DateSent%3E=2008-01-02&PageSize=2&Page=0",
    --   "messages": [
    --     {
    --       "account_sid": "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
    --       "api_version": "2010-04-01",
    --       "body": "testing",
    --       "date_created": "Fri, 24 May 2019 17:44:46 +0000",
    --       "date_sent": "Fri, 24 May 2019 17:44:50 +0000",
    --       "date_updated": "Fri, 24 May 2019 17:44:50 +0000",
    --       "direction": "outbound-api",
    --       "error_code": null,
    --       "error_message": null,
    --       "from": "+12019235161",
    --       "messaging_service_sid": null,
    --       "num_media": "0",
    --       "num_segments": "1",
    --       "price": "-0.00750",
    --       "price_unit": "USD",
    --       "sid": "SMded05904ccb347238880ca9264e8fe1c",
    --       "status": "sent",
    --       "subresource_uris": {
    --         "media": "/2010-04-01/Accounts/ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Messages/SMded05904ccb347238880ca9264e8fe1c/Media.json",
    --         "feedback": "/2010-04-01/Accounts/ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Messages/SMded05904ccb347238880ca9264e8fe1c/Feedback.json"
    --       },
    --       "to": "+18182008801",
    --       "uri": "/2010-04-01/Accounts/ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Messages/SMded05904ccb347238880ca9264e8fe1c.json"
    --     },
    --     {
    --       "account_sid": "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
    --       "api_version": "2010-04-01",
    --       "body": "look mom I have media!",
    --       "date_created": "Fri, 24 May 2019 17:44:46 +0000",
    --       "date_sent": "Fri, 24 May 2019 17:44:49 +0000",
    --       "date_updated": "Fri, 24 May 2019 17:44:49 +0000",
    --       "direction": "inbound",
    --       "error_code": 30004,
    --       "error_message": "Message blocked",
    --       "from": "+12019235161",
    --       "messaging_service_sid": null,
    --       "num_media": "3",
    --       "num_segments": "1",
    --       "price": "-0.00750",
    --       "price_unit": "USD",
    --       "sid": "MMc26223853f8c46b4ab7dfaa6abba0a26",
    --       "status": "received",
    --       "subresource_uris": {
    --         "media": "/2010-04-01/Accounts/ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Messages/MMc26223853f8c46b4ab7dfaa6abba0a26/Media.json",
    --         "feedback": "/2010-04-01/Accounts/ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Messages/MMc26223853f8c46b4ab7dfaa6abba0a26/Feedback.json"
    --       },
    --       "to": "+18182008801",
    --       "uri": "/2010-04-01/Accounts/ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Messages/MMc26223853f8c46b4ab7dfaa6abba0a26.json"
    --     }
    --   ],
    --   "start": 0,
    --   "uri": "/2010-04-01/Accounts/ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Messages.json?To=%2B123456789&From=%2B987654321&DateSent%3E=2008-01-02&PageSize=2&Page=0"
    -- }

    -- Sample code for parsing the JSON response...
    -- Use the following online tool to generate parsing code from sample JSON:
    -- Generate Parsing Code from JSON

    DECLARE @account_sid nvarchar(4000)

    DECLARE @api_version nvarchar(4000)

    DECLARE @body nvarchar(4000)

    DECLARE @date_created nvarchar(4000)

    DECLARE @date_sent nvarchar(4000)

    DECLARE @date_updated nvarchar(4000)

    DECLARE @direction nvarchar(4000)

    DECLARE @error_code nvarchar(4000)

    DECLARE @error_message nvarchar(4000)

    DECLARE @from nvarchar(4000)

    DECLARE @messaging_service_sid nvarchar(4000)

    DECLARE @num_media nvarchar(4000)

    DECLARE @num_segments nvarchar(4000)

    DECLARE @price nvarchar(4000)

    DECLARE @price_unit nvarchar(4000)

    DECLARE @sid nvarchar(4000)

    DECLARE @status nvarchar(4000)

    DECLARE @subresource_urisMedia nvarchar(4000)

    DECLARE @subresource_urisFeedback nvarchar(4000)

    DECLARE @v_to nvarchar(4000)

    DECLARE @end int
    EXEC sp_OAMethod @json, 'IntOf', @end OUT, 'end'
    DECLARE @first_page_uri nvarchar(4000)
    EXEC sp_OAMethod @json, 'StringOf', @first_page_uri OUT, 'first_page_uri'
    DECLARE @next_page_uri nvarchar(4000)
    EXEC sp_OAMethod @json, 'StringOf', @next_page_uri OUT, 'next_page_uri'
    DECLARE @page int
    EXEC sp_OAMethod @json, 'IntOf', @page OUT, 'page'
    DECLARE @page_size int
    EXEC sp_OAMethod @json, 'IntOf', @page_size OUT, 'page_size'
    DECLARE @previous_page_uri nvarchar(4000)
    EXEC sp_OAMethod @json, 'StringOf', @previous_page_uri OUT, 'previous_page_uri'
    DECLARE @start int
    EXEC sp_OAMethod @json, 'IntOf', @start OUT, 'start'
    DECLARE @uri nvarchar(4000)
    EXEC sp_OAMethod @json, 'StringOf', @uri OUT, 'uri'
    DECLARE @i int
    SELECT @i = 0
    DECLARE @count_i int
    EXEC sp_OAMethod @json, 'SizeOfArray', @count_i OUT, 'messages'
    WHILE @i < @count_i
      BEGIN
        EXEC sp_OASetProperty @json, 'I', @i
        EXEC sp_OAMethod @json, 'StringOf', @account_sid OUT, 'messages[i].account_sid'
        EXEC sp_OAMethod @json, 'StringOf', @api_version OUT, 'messages[i].api_version'
        EXEC sp_OAMethod @json, 'StringOf', @body OUT, 'messages[i].body'
        EXEC sp_OAMethod @json, 'StringOf', @date_created OUT, 'messages[i].date_created'
        EXEC sp_OAMethod @json, 'StringOf', @date_sent OUT, 'messages[i].date_sent'
        EXEC sp_OAMethod @json, 'StringOf', @date_updated OUT, 'messages[i].date_updated'
        EXEC sp_OAMethod @json, 'StringOf', @direction OUT, 'messages[i].direction'
        EXEC sp_OAMethod @json, 'StringOf', @error_code OUT, 'messages[i].error_code'
        EXEC sp_OAMethod @json, 'StringOf', @error_message OUT, 'messages[i].error_message'
        EXEC sp_OAMethod @json, 'StringOf', @from OUT, 'messages[i].from'
        EXEC sp_OAMethod @json, 'StringOf', @messaging_service_sid OUT, 'messages[i].messaging_service_sid'
        EXEC sp_OAMethod @json, 'StringOf', @num_media OUT, 'messages[i].num_media'
        EXEC sp_OAMethod @json, 'StringOf', @num_segments OUT, 'messages[i].num_segments'
        EXEC sp_OAMethod @json, 'StringOf', @price OUT, 'messages[i].price'
        EXEC sp_OAMethod @json, 'StringOf', @price_unit OUT, 'messages[i].price_unit'
        EXEC sp_OAMethod @json, 'StringOf', @sid OUT, 'messages[i].sid'
        EXEC sp_OAMethod @json, 'StringOf', @status OUT, 'messages[i].status'
        EXEC sp_OAMethod @json, 'StringOf', @subresource_urisMedia OUT, 'messages[i].subresource_uris.media'
        EXEC sp_OAMethod @json, 'StringOf', @subresource_urisFeedback OUT, 'messages[i].subresource_uris.feedback'
        EXEC sp_OAMethod @json, 'StringOf', @v_to OUT, 'messages[i].to'
        EXEC sp_OAMethod @json, 'StringOf', @uri OUT, 'messages[i].uri'
        SELECT @i = @i + 1
      END

    EXEC @hr = sp_OADestroy @http
    EXEC @hr = sp_OADestroy @sbResponseBody
    EXEC @hr = sp_OADestroy @json


END
GO