Expand my Community achievements bar.

Don’t miss the AEM Skill Exchange in SF on Nov 14—hear from industry leaders, learn best practices, and enhance your AEM strategy with practical tips.
SOLVED

Recording feature is not working

Avatar

Level 2

Hello all!

I have a problem with the LCCS session recording feature - it works but only sometimes (average - 1 time out of every 10 tries). I am using the latest version of the SDK - Version 2.2.0 (Nov 10, 2011). I also tried Player 10.1 and 10.3 client APIs.

I have a registered WebDAV repository with a Server API - AccountManager.RegisterRepository(...), I also checked to be sure this repository is registered with API method AccountManager.getRepositoryInfo() - all seems ok, the repository is registered and remembered by the LCCS server.

I then got a sample recording application which was provided with the SDK (com.adobe.lccs\sampleApps\Recording\Recording.mxml) and set my roomURL, userName and password - application seems to work as required. I click the Record button in my application to record, unclick the Record button, close the application, then wait for a long period of time but nothing is uploaded to the WebDAV storage in most cases ... only sometimes does it work and I have not found any pattern or logic difference when it works.

I also tried to start recording by server API - AccountManager.startRecording(...) - but it is also not working as expected. I reviewed the LCCS code and detected that this method should publish the item into the following collection and node:

RoomManager->roomState->recordingState. This method works ok, and the LCCS servers response is OK, but when I get room information with the server API AccountManager.getNodes(roomName, "/") I cannot find any information by returned XML.

By the way I checked the WebDAV server logs - there is only info about putting a file into storage by LCCS servers for success cases, not any error info about unsuccessfully putting files - so it would appear that LCCS did not even try to upload the files for the unsuccesful recording.

Any tips that you can think of which might explain what could be wrong here? It seems there is an error on the LCCS side - maybe they forgot to update their API/sample files to something that works?

I am losing my mind trying to solve this issue, please help me!

Thank you in advance!


1 Accepted Solution

Avatar

Correct answer by
Employee

Ok, can you update the startRecording method in lccs.cs to this ?

/**

           * Start recording a specified room

           *

           * @throws Exception

           */

          public void startRecording(string room, string archiveId, bool guestsAllowed) 

          {

      Dictionary<string, object> itemBody = new Dictionary<string, object>();

      itemBody.Add("fullSession", true);

      itemBody.Add("archiveID", archiveID);

      itemBody.Add("guestsAllowed", guestsAllowed);

 

      Dictionary<string, object> itemVO = new Dictionary<string, object>();

      itemVO.Add("itemID", "recordingState");

      itemVO.Add("body", itemBody);

      publishItem(room, "RoomManager", "roomState", itemVO);

          }

This should fix your problems and if it works I'll integrate this in the SDK for next release.

View solution in original post

8 Replies

Avatar

Employee

Did you check your error and access log to see if your server is throwing any error ? If you don't see any error please send us your room URL and a timestamp for a recording that didn't work.

Avatar

Level 2

Hello Raff,

Of course I checked my server side there are only couple of success uploading rows in log, but no any errors information, looks like LCCS service not tried to uploas at my side. Also, note please, that at developer portal I see only success recordings - for now it is only one ang12345.cl-1, and file for this recording was uploaded to my server.

I do not remember exact timestamps for all my tryings, but it was on Saturday 26 November between 3:00GMT and 16:00GMT. I used following archiveIDs for recordings:

  • __defaultArchive
  • cl-1, cl-2, cl-3, etc... for client initiated records
  • sv-_____... for server API initiated recors, empty space in archive name after sv- contains information about time-stamp(hh-mm-ss), but note please that it is GMT+4 time.

I have sent you roomURL in private message, so you can check it.

Kind regards,

Nikita

Avatar

Employee

So, for what I see in the logs there is only one recording that succeed, that is as you say ang12345/cl-1 but I see some errors that seems to be cause by the archiveID to be null.

We should check on our side that we return a proper error, or set a valid default (the default was supposed to be set in the client but after some recent changes I suspect that is not true anymore) so I would suggest you make sure that you always have an archiveID / recordingID set when you call the recording API.

Avatar

Level 2

Hello Raff,

Thank you for your initial advices, but looks like they wil not help us to resolve issue. Let me explain my experiments more detailed:

1. Server API

It is what I am planning to use for implementing recording feature, and looks like it does not work at all by some reasons at LCCS side. I used C# version of API which is going with SDK - com.adobe.lccs\serverIntegration\csharp\LCCS.cs, and I used this method:

AccountManager.startRecording(string room, string archiveId, bool guestsAllowed)

with following parameters:

AccountManager.startRecording("ang12345", archiveID, true)

For archiveID I tied different values:

  • null
  • sv-1
  • sv-2
  • ...
  • sv-...hh-mm-ss
  • ...

Looks like that API not works properly, because I have not had success with staring recording from server side. I reviewed code of LCCS.cs file and found that startRecording method just publish specific item to room XML RoomManager->roomState->recordingState with value "{fullSession:true, archiveID:sv-1, guestsAllowed:True}". LCCS API returns OK on publish this item, but when I call server API method AccountManager.getNodes("ang12345", "/") - I can't find this item in room XML, although by my opinion it should exist here.

Unfortunately LCCS specification does not have any information about XML schema for rooms and about specific features like recording, so I can't check what is wrong here with server API. By my opinion there can be following errors with server API:

  • recordingState item can't be published to roomState node due to some reasons. Could you check it?
  • roomState node is wrong place for recordingState item. Can you check it with XML schema defenition?
  • item value have some problems. As I understand it uses JSON notation, but there may be following problems:
    • Name of archiveID is not quoted - see underlined.
    • Bool value for guestsAllowed is started from capital letter - see underlined.

2. Client API

I do not have plans to use client API, but I tried it too to understand what is changed in room XML, and to fix errors myself in code of library for server API.Unfortunately I also was not succeed here, because client API initiate recordings only sometimes and I do not know by which reasons, because I have not changed code at all except renaming archiveID. So I was not be able to check room XML to understand which item should be published to start recording.

For testing client API I used following names for archiveID:

  • not specified - for that case I have a lot of tries and once it was succeed - one recording was done, and record was uploaded to my server, so I had record ang12345/__defaultArchive, but I deleted it - by this reason now I have only one success record.
  • test-1 - no success
  • ...etc(different names) - no success
  • cl-1 - this trying was succesfull (but I have not checked room XML at this moment )
  • cl-2  - no success
  • cl-3  - no success
  • cl-4  - no success
  • cl-5 - no success
  • cl-6  - no success
  • ... etc

As you can understand I had a lot of tries with/without setting value for archiveID - but looks like that's not a reason of a problem. Also let me know please what you meant under recordingID -

Your investigation of this problem will be very much appreciated.

Cheers,

Nikita

Avatar

Employee

I suspect you found a bug in the C# library. I'll have a look and if it's an easy fix I'll post an updated version. Thanks!

Avatar

Level 2

Hello Raff,

Thank you for information - will wait updated C# library. Probably also it will be good if Adobe will publish XML schem defenition for rooms

Also let me know please what is wrong with client API recording?

Cheers,

Nikita

Avatar

Correct answer by
Employee

Ok, can you update the startRecording method in lccs.cs to this ?

/**

           * Start recording a specified room

           *

           * @throws Exception

           */

          public void startRecording(string room, string archiveId, bool guestsAllowed) 

          {

      Dictionary<string, object> itemBody = new Dictionary<string, object>();

      itemBody.Add("fullSession", true);

      itemBody.Add("archiveID", archiveID);

      itemBody.Add("guestsAllowed", guestsAllowed);

 

      Dictionary<string, object> itemVO = new Dictionary<string, object>();

      itemVO.Add("itemID", "recordingState");

      itemVO.Add("body", itemBody);

      publishItem(room, "RoomManager", "roomState", itemVO);

          }

This should fix your problems and if it works I'll integrate this in the SDK for next release.

Avatar

Level 2

Hello Raff,

Thank you for updated code for recording. Now server-side API works perfect.

Cheers,

Nikita