Skip to main content
The First Step
March 9, 2020
Question

Paging with Call Log

I'm trying to work with the call log API and ensure I retrieve all the possible data. According to the docs, the result has a paging object that MAY return totalPages or totalElements. In all of my calls to the call log, I never see these values. Given that, how do I know when to stop fetching data?

To test I tried to paginate 2 items at a time. My call log has 4 items in it so I figured this would let me test fetching two pages. On the first request, the paging result has pageStart of 0, which means the first record is index 0. I then fetch my next page, the same. My code then fetches a third page, which is wrong of course, and I see pageStart now has a value of 2, which doesn't make sense as it should be an array of 2 values.

So *in theory*, I could say if pageStart > what my page max should be (well using 0 based indexes) then it means to stop, but is that right?


    2 replies

    PhongVu
    Community Manager
    Community Manager
    March 9, 2020

    Just a quick answer, I recommend you to use the navigation object to navigate thru reading your call log.

    The First Step
    March 10, 2020

    This was meant to be a comment on the last user's response, but comments have a max set of chars.

    I tried that, but in my testing the URLs didn't make sense. Consider - this is the result I get after fetching my second page, which is the last:


    navigation {
      nextPage: {
        uri: 'https://platform.devtest.ringcentral.com/restapi/v1.0/account/272299004/extension/272299004/call-log?view=Detailed&direction=Inbound&showBlocked=true&withRecording=false&dateFrom=2020-01-01T00:00:00.000Z&page=3&perPage=2'
      },
      previousPage: {
        uri: 'https://platform.devtest.ringcentral.com/restapi/v1.0/account/272299004/extension/272299004/call-log?view=Detailed&direction=Inbound&showBlocked=true&withRecording=false&dateFrom=2020-01-01T00:00:00.000Z&page=1&perPage=2'
      },
      firstPage: {
        uri: 'https://platform.devtest.ringcentral.com/restapi/v1.0/account/272299004/extension/272299004/call-log?view=Detailed&direction=Inbound&showBlocked=true&withRecording=false&dateFrom=2020-01-01T00:00:00.000Z&page=1&perPage=2'
      },
      lastPage: {
        uri: 'https://platform.devtest.ringcentral.com/restapi/v1.0/account/272299004/extension/272299004/call-log?view=Detailed&direction=Inbound&showBlocked=true&withRecording=false&dateFrom=2020-01-01T00:00:00.000Z&page=1&perPage=2'
      }
    }

    Notice how firstPage and lastPage have, as far as I can see, the exact same URL. nextPage doesn't indicate it won't return anything.

    Here's what I get after fetching my first page.

    navigation {
      nextPage: {
        uri: 'https://platform.devtest.ringcentral.com/restapi/v1.0/account/272299004/extension/272299004/call-log?view=Detailed&direction=Inbound&showBlocked=true&withRecording=false&dateFrom=2020-01-01T00:00:00.000Z&page=2&perPage=2'
      },
      firstPage: {
        uri: 'https://platform.devtest.ringcentral.com/restapi/v1.0/account/272299004/extension/272299004/call-log?view=Detailed&direction=Inbound&showBlocked=true&withRecording=false&dateFrom=2020-01-01T00:00:00.000Z&page=1&perPage=2'
      },
      lastPage: {
        uri: 'https://platform.devtest.ringcentral.com/restapi/v1.0/account/272299004/extension/272299004/call-log?view=Detailed&direction=Inbound&showBlocked=true&withRecording=false&dateFrom=2020-01-01T00:00:00.000Z&page=1&perPage=2'
      }
    }

    In this case, nextPage would work, but lastPage is the same as firstPage again.