Calculating the exact number of views from the GetSessionExtendedDetailedUsage event stream
Hello,
I'm afraid I have another question regarding the SOAP API. We are trying to use GetSessionExtendedDetailedUsage to extract the number of views for a given session and user, to make sure that the number that is returned agrees with the online stats and reports.
I have attached an Excel file which contains an anonymised subset of the results for a specific session id and user id (f66049a8-6309-4618-a8b5-ae4300a5fdda and 6a1f52ea-2704-4495-b6bf-adc00161749c respectively,).
I have inserted empty lines in the XLS where my extraction strategy sets delimiters to isolate separate views based on the event stream player actions. The current strategy is as follows:
StartReason= Start (new view starts on same index)
StopReason= PlayerClose, End (new view start on next index)
If StartReason != Start on first event of a new view, add it anyway
As you can see, splitting the event stream in this manner returns 5 views instead of the 6 views shown in the online stats. In fact, I have manually inserted an extra line/view (at index 1019) based on visual inspection of the event time, otherwise the discrepancy would have been two views instead of one
This happens very often and for the life of me I cannot find the right way to reconcile my results with what's returned by the platform. The number of unique viewers and the total amount of time spent (the sum of SecondsViewed) is always in agreement, so I think I have all the events.
Would someone be able to share with us how you calculate the number of views and downloads from the event stream returned by GetSessionExtendedDetailedUsage?
Failing that, is there a straightforward way to get the number of views for a given session/user from a different API? I have tried most of the ones I thought were relevant (both REST and SOAP), in vain.
Thank you
Cristiano
Answers
A couple thoughts:
1 - Panopto has identified a bug in their reporting dashboards. Based on what they say, in their report, it doesn't sound like it should be impacting reporting, but that may not be definitive. Full repair of the data won't be complete until the end of the month.
2 - Apologies if this is a stupid question, but what's the goal here? Is there some reason you aren't able to only use or trust Panopto's canned reports? The Session views and downloads details per user contains:
You could schedule a one time report to run from the beginning of your time with Panopto to get all your viewing data (assuming it is not also impacted by the bug referenced above. Then you could run the report nightly to append new views to the existing data set. (Obviously this strategy wouldn't work if you needed real time data or data with less than a 24 hour lag.)
If you're trying to reconcile the data returned by the API with the data from the reports and the 2 aren't in complete agreement, I would contact Panopto support directly.
Any discrepancies could be related to the bug I mentioned above, or there may be small anomalies in the data. I've been told that they can't guarantee 100% accuracy of the playback data due to the complexities involved.
We've been asking for a real time Caliper data feed for several years but it has yet to materialize.
Hi Chaz,
Thank you for your contribution and apologies if I failed to supply additional context:
I appreciate that the complexities of the playback stream may be responsible for some of the discrepancies, but surely there has to be a single, central source of information (something like a Db) which feeds both the online stats, the reports and the API server. Of course, given my total ignorance of the infrastructure and architecture behind the scenes, this may be a gross approximation or just a plain mistake.
I hope this goes a little way towards explaining our goal. Of course, we can always fall back on reports, but while we're at it it'd be nice to understand a bit better the general state of the Panopto APIs.
Many thanks
Cristiano
Hi Cristiano,
Thank you for contacting us.
I will list couple of endpoints that I think can help you.
Have you tried to use SOAP API and "GetSessionDetailedUsage" endpoint?
For request you need to provide: sessionId, beginRange and endRange
In response you will get following objects:
<a:DetailedUsageResponseItem><a:SecondsViewed>10.58666599999998</a:SecondsViewed><a:SessionId>79172b62-3027-4c57-be26-ae****</a:SessionId><a:StartPosition>20.00596</a:StartPosition><a:Time>2022-06-03T10:15:52.467Z</a:Time><a:UserId>1c5ac01c-cedc-4845-830c-ade80***</a:UserId></a:DetailedUsageResponseItem>
With this response you can see unique users who watched session. You can count views per user id, when session is watched and how long.
Additionally, you can use following two endpoints that can help you:
GetSessionSummaryUsage - You can pull information how many unique users watched on daily, weekly or hourly granularity and total of session views.
Request:
<sessionId>79172b62-3027-4c57-***</sessionId><beginRange>2018-01-01</beginRange><endRange>2023-12-31</endRange><granularity>Weekly</granularity>
Response:
<a:MinutesViewed>0</a:MinutesViewed><a:Time>2017-12-31T23:00:00Z</a:Time><a:UniqueUsers>0</a:UniqueUsers><a:Views>0</a:Views></a:SummaryUsageResponseItem>
GetSessionUserDetailedUsage - You can get information when specific user watched session and how long
Request:
<sessionId>79172b62-3027-4c57-be26-ae9b00****</sessionId><userId>1c5ac01c-cedc-4845-830c-ade*****</userId><beginRange>2018-01-01</beginRange><endRange>2023-12-31</endRange>
Response:
<a:DetailedUsageResponseItem><a:SecondsViewed>31.670537481781491</a:SecondsViewed><a:SessionId>79172b62-3027-4c57-be26-ae9b00*</a:SessionId><a:StartPosition>0.078797018789916989</a:StartPosition><a:Time>2022-05-24T13:36:36.423Z</a:Time><a:UserId>1c5ac01c-cedc-4845-830c-ade***</a:UserId></a:DetailedUsageResponseItem>
Unfortunately, we do not have exact API endpoint that returns data that you need but using those SOAP API endpoints you should be able to meet your goal.
I hope this can help you.
Kind regards,
Nedim
Hello Nadim,
Many thanks for contacting me. As I stated in the original post, I used precisely GetSessionDetailedUsage to return the detailed view stream for a given date range, then I infer the number of unique views per user by applying the reasoning I explained above, with the problem I outlined. (and a sample XLS attached)
I am aware of the other two APIs but they don't work for me because I am looking for some fine-grained data such as player speed that can't be found elsewhere.
I hope I have made myself clear now, please do not hesitate to ask for additional clarification.
I look forward to hearing from you
Kind regards
Cristiano
Hi Cristiano,
Thanks for your response.
In the original post I think you mentioned GetSessionExtendedDetailedUsage endpoint which like you said can give you some data like player speed but unfortunately not other cumulative data that you need. I was hoping that you can use other 3 endpoints that I mentioned in my previous post to grab your needed information.
Currently, we do not support other endpoints that can help you but feel free to open a support ticket with explanation what exact data you need from API response and our support team will handle further with that request.
I am sorry because I cannot help you more about your issue.
Kind regards,
Nedim
Hi Nedim,
Thanks again. I did try to open a support ticket, but it was closed and I got redirected to the forum :-)
I do not really need a dedicated API for this problem, I'll get by with what I have, I'm only curious as to the cause of the discrepancy (on average about 5%, not a lot) between the views I aggregate from the event "stream" returned by GetSessionDetailedUsage and what's returned by Panopto in the GUI and in the reports.
I imagine it's something that one of the developers might know, i.e. how you aggregate the player events in the fine-grained API to work out the individual views per user per session.
Kind regards,
Cristiano
Hi,
Bumping this in the hope that it catches someone's eye in the Dev team
Thanks
Cristiano
Cristiano,
I don't have an answer at this time, but reached out to the team to see if there is guidance on a more accurate approach to this, and what could account for the discrepancy. Will provide an update once I learn more.
Thanks for your patience!
Jim
Hi Jim,
Thank you very much for liaising with the Dev team, I look forward to any and all updates on this!
Regards
Cristiano