Archive for October, 2013

XML API Tips: Modification of Help / Support Links

In Adobe Connect (both On Prem and Hosted accounts), there are methods to modify existing support and help links using the XML API.  This was implemented to provide the capability to replace the in product support / help links and details with partner or organization-specific links / contact information.

Use Case

Say a partner or organization wants to be able to replace the help / support links embedded in the Connect meeting client or Connect web app with links to their own version of the help documentation / support information or support portal. They need to provide a combined cohesive help / support channel to their customers or their users.

The following undocumented APIs are provided to modify the support or help link customization on a per-account basis. Here is how it works:

Link 1 – Contact Support (In Meeting)

First, the ‘Contact Support’ link in the Meeting interface itself (as seen below):

contactsupport
To modify this, use the XML API call: account-support-link-update to enable or disable the account feature and modify the support link.

The default support link is: http://helpx.adobe.com/adobe-connect.html

XML API Call Info:
account-support-link-update
parameters:
account-id = the account-id of the account you are modifying the links for
enable = true or false – enables (true) or disables (false) this feature
support-link = link to partner or customer support site (must be http link)
– if enable is true, must provide support-link
– if enable is false, remove support-link for the account

To enable a custom link:

https://{AccountURL}/api/xml?action=account-support-link-update&enable=true&support-link=http://mySupportsiteURL

Results:

<results>
<status code=”ok”/>

</results>

To verify it is now active (aside from testing in a new meeting session), you can run the ‘feature-info’ API call which will return that feature as part of account information if the feature is enabled on the account.

Example:

https://{AccountURL}/api/xml?action=feature-info&account-id=XXXXXXXX

<results>
<status code=”ok”/>
<disabled-features>
….snip snip….
<feature account-id=”XXXXXXXX” feature-id=”fid-non-partner-support-link“>
<date-begin>2013-10-29T16:53:09.533-04:00</date-begin>
<date-end>2999-12-31T19:00:00.863-05:00</date-end>
<recordcreated>2013-10-29T11:53:09.553-04:00</recordcreated>
</feature>
….snip snip….
</disabled-features>
</results>

Note: it’s deceiving, but it WILL be listed in the ‘disabled-features’ XML node if it is ENABLED.  If it is NOT enabled, it will NOT show up in the results of this call.

To disable (or set back to the original default setting):

https:{AccountURL}/api/xml?action=account-support-link-update&enable=false

Results:

<results>
<status code=”ok”/>
</results>

Note: For meetings that are still active and have not unloaded from memory yet, the links will not change until it fully shuts down.  For new meeting sessions, the link will immediately be updated/reflected to show the intended webpage.

Link 2 – Help Link (Login Page)

Second, the ‘Help’ link on the login page (as seen below):

help

The default value will take you to: http://helpx.adobe.com/adobe-connect.html

XML API Call Info:
account-custom-help-link-update
parameters:
account-id = the account-id of the account you are modifying the links for
field-id = the field-id of the help link you are trying to modify. Values are:
account-login-help-link
– account-webapp-help-link
value = link to partner or customer support site (The help link must start with either ‘http://’ or ‘https://’.  No javascript urls are allowed as values.)

 

To enable a custom link (use the ‘account-login-help-link’ field-id above):

https://{AccountURL}/api/xml?action=account-custom-help-link-update&account-id=XXXXXXX&field-id=account-login-help-link&value=http://mySupportURL

Results:

<results>
<status code=”ok”/>
</results>

Link 3 – Help Link (Connect Central Page)

Third, the ‘Help’ link on the top of the Connect Central page (as seen below):

central

The default value will be: http://help.adobe.com/en_US/connect/9.0/using/index.htm

XML API Call Info:
account-custom-help-link-update
parameters:
account-id = the account-id of the account you are modifying the links for
field-id = the field-id of the help link you are trying to modify. Values are:
– account-login-help-link
account-webapp-help-link
value = link to partner or customer support site (The help link must start with either ‘http://’ or ‘https://’.  No javascript urls are allowed as values.)

 

To enable a custom link (use the ‘account-webapp-help-link’ field-id above):

https://{AccountURL}/api/xml?action=account-custom-help-link-update&account-id=XXXXXXX&field-id=account-webapp-help-link&value=http://mySupportURL

Results:

<results>
<status code=”ok”/>
</results>

To REMOVE any of these link customizations, simply leave the VALUE param empty:

https://{AccountURL}/api/xml?action=account-custom-help-link-update&account-id=XXXXXXX&field-id=account-webapp-help-link&value=

Results:

<results>
<status code=”ok”/>
</results>

And:

https://{AccountURL}/api/xml?action=account-custom-help-link-update&account-id=XXXXXXX&field-id=account-webapp-help-link&value=

Results:

<results>
<status code=”ok”/>
</results>

To view any custom help links set on the account:

XML API Call Info:
account-custom-help-links
parameters:
none.

https://{AccountURL}api/xml?action=account-custom-help-links

If NO help links have been customized, you will see only an ‘ok’ result returned.

Results if no help links:

<results>
<status code=”ok”/>
</results>

 Results if help links are customized:

<results>
<status code=”ok”/>
<custom-help-links>
<links>
<login-help-link>http://www.mysupport.com</login-help-link>
<webapp-help-link>http://www.mysupport.com</webapp-help-link>
</links>
</custom-help-links>
</results>

Increase the volume/Remove a part of recorded audio from a recorded session

Many-a-times people face an issue where the volume in a recorded session isn’t loud enough to be clearly audible to everybody.. Similarly there may be times when you may want to remove a part of the recorded audio from the recording.. Here is a solution which although may not be the easiest but definitely a working one for most of the users..

After the recording is finished, pull down the recording source files by adding ‘output/yournamehere.zip?download=zip‘ to the recording URL. In the zip that comes down, there will be either a MP3 audio file (if you recorded your audio via an integrated phone bridge) or a FLV file labeled cameraVoip_X_X (if you recorded your audio via VoIP or Universal Voice).

The MP3 file is easy to modify and place back into the zip file, while the FLV may take some work since you will have to extract the MP3 from the FLV and then put it back in the FLV before placing it back in the ZIP. Once you have modified the audio, re-upload the zip to Connect(as Content in Content library) and you will have a new version of your recording with improved audio.

If you need to remove audio, just replace it with silence.

* Word of caution, don’t change the length of the audio file or it will be out of sync with the rest of your recording.

Using the FMS API for On-Prem Adobe Connect

For monitoring purposes, you can build an application which utilizes additional API calls that hook directly into the Flash Media Administration Server services.  This is undocumented but may help you with additional monitoring or statistics on the FMS side.

A full list of FMS/FCS API entries for the 9.1 version of FMS (which is version 4) can be found here:
http://help.adobe.com/en_US/flashmediaserver/adminapi/WSa4cb07693d12388431df580a12a34991ebc-8000.html

Previously, as an Adobe Connect administrator, you probably have always had the additional FMS service (Flash Media Administration Server) shut off.  In order to utilize the API, you need to make sure this service is running:

fmsadmin

In order to hit the API for FMS, you need to use the FMS admin username and password.

This can be found in:

[install drive]:\Connect\9.1.1\comserv\conf

# An administrator for the server. Users.xml
DEFAULT_FCS_USER=XXXXXX
# Password for this vhost administrator. Users.xml
DEFAULT_FCS_PASSWORD=XXXXXX

In order to use all the calls (or a select few, depending on your desire), you need to modify one additional FMS file (see below).

Continue reading…

XML API Tips: User Manager Associations

A common workflow for Adobe Connect admins is to associate users to managers via the UI.

In the UI, you can navigate to the Administration > Users and Groups > {select a user} > Edit Team Members area to select users who will be direct reports of that manager.

This information will show up in the ‘My Profile‘ > Organization area for the user, where they will be able to see their Manager information (if they have a manager set) and their Team Members (if they are a manager themselves).

But with the XML API, this process is undocumented. Here’s how you accomplish this:

How do I associate a user to a Manager?

http://connectURL/api/xml?action=user-manager-update&manager-id=XXXXXXX&principal-id=XXXXXXX

Where:
action=user-manager-update
manager-id= principal-id of user who is going to be the manager
principal-id= principal-id of the user who is being assigned a manager

Note:
The user-manager-update call is UNDOCUMENTED.

Results:

<results>
<status code="ok"/>
</results>

How do I disassociate a user from a Manager?

http://connectURL/api/xml?action=user-manager-update&manager-id=XXXXXXX&principal-id=XXXXXXX

Where:
action=user-manager-update
manager-id= the account-id (‘7′ if an on-prem/Licensed customer or a longer numeric value for an Adobe Hosted customer)
principal-id= principal-id of the user who is being assigned a manager

Note:
The user-manager-update call is UNDOCUMENTED.

Results:

<results>
<status code="ok"/>
</results>

 

The below IS documented, however it is applicable to this post, so I will include it:

How do I list all direct reports of a Manager?

http://connectURL/api/xml?action=principal-list&filter-manager-id=XXXXXX

Where:
action=principal-list
filter-manager-id= the sco-id of the user who is the manager

Results:

<results>

<status code="ok"/>
<principal-list>
<principal principal-id="XXXXXXXXX" account-id="XXXXXXXXX" type="user" has-children="false" is-primary="false" is-hidden="false" manager-id="XXXXXXXXX" training-group-id="">
<name>USER NAME (FIRST AND LAST)</name>
<login>USER LOGIN VALUE</login>
<email>USER EMAIL VALUE</email>
<display-uid>USER LOGIN VALUE</display-uid>
</principal>
</principal-list>
</results>

 

XML API Tips: Adding a Telephony Profile to a Meeting Room

Another one of the undocumented workflows for Adobe Connect with regards to the XML API is adding telephony profiles to Adobe Connect Meeting rooms.

How do I add a telephony profile to a meeting?

https://connectURL/api/xml?action=acl-field-update&field-id=telephony-profile&value=XXXXXXXX&acl-id=XXXXXXXX

Where:
action=acl-field-update
field-id = set to ‘telephony-profile’
value = profile-id value
acl-id = meeting sco-id value

Results:

<results><results>
<status code=”ok”/>
</results>

To find the profile-id, you can run the telephony-profile-list API call, which will list the API caller’s telephony profiles.

XML API Tips: Setting/Changing Recording Permissions

One of the undocumented workflows for Adobe Connect with regards to the XML API is working with permission levels of recordings (archives).  A recording can either be Public or Private.

The workflow is similar to that of the permission level for Meetings.  See below for the steps for making a recording Public or Private in Adobe Connect 9.1:

How do I make a Private Adobe Connect Recording Public?

https://connectURL/api/xml?action=permissions-update&principal-id=public-access&permission-id=view&acl-id=XXXXXXX

Where:
action=permissions-update
acl-id= ‘sco-id’ of the recording.
principal-id=public-access
permission-id=view

Results:

<results>
<status code=”ok”/>
</results>

 

How do I make a Public Adobe Connect Recording Private?

https://connectURL/api/xml?action=permissions-update&principal-id=public-access&permission-id=remove&acl-id=XXXXXXX

Where:
action=permissions-update
acl-id= ‘sco-id’ of the recording.
principal-id=public-access
permission-id=remove

Results:

<results>
<status code=”ok”/>
</results>

High CPU and memory usage after Add-in update to 11.2.385.0

After Connect Add-in update 11.2.385.0, high CPU usage are observed on some of the Windows OSes. This is because of a new functionality added to log the add-in performance. The data is collected using the “process” counter. The issue is because this counter is disabled on some of the systems.

As a workaround the performance monitor library needs to be rebuilt and “perfproc” provider should be enabled as follow:

Click Start, type cmd right click cmd.exe, and select Run as administrator.

At the prompt, type lodctr /r and press ENTER. This will repair the pointers (those are stored in the registry).

 

C:\Windows\system32>lodctr /r

Info: Successfully rebuilt performance counter setting from system backup store

 

After this action it is possible that perfproc providers are disabled. You can check the status with lodctr /q.

 

C:\Windows\system32>lodctr /q

Performance Counter ID Queries [PERFLIB]:

etc…

 

If it says (Disabled) next to perfproc  provider, you can enable it with lodctr /e:perfproc

 

This should fix the issue for Windows OSes on English locale. Unfortunately, for other locales, this workaround will not work. Next add-in update will have the fix for this issue.

Working with Chat Transcripts

As part of the Compliance and Control settings in Adobe Connect, administrators have the ability to enable Chat Transcripts for logging all chat happening on the Adobe Connect server.  This setting is located at: Administration > Compliance and Control > Recordings and Notice > Enable Chat Transcripts.

chattranscript-1

This transcript is stored on the Adobe Connect server in XML format.  One file for each meeting session.  Each file contains the chat from all chat pods used during that session.  When a meeting session has begun, the chat transcript is not created until someone first starts typing in the chat pod.  At the moment the first chat begins, a new sco (unrelated to the meeting sco itself) is created in the file system ({root}\Connect\content\7\XXXXX-1 where XXXXX = the unique sco-id that gets assigned by Connect for this item). The folder inside of the sco folder will be named ‘input‘ for the duration of the meeting session and will then change to ‘output‘ once the session is ended and fully unloads from memory.  Once the session is over, the chat transcript is available for retrieval.

chattrans2

Only administrators have the ability to navigate to and obtain these chat transcripts.  Here is the workflow you can use to download chat transcripts from the server, if the chat transcripts are enabled:

1) Find the folder for Chat Transcripts on the Connect system.  This is actually a hidden folder and you cannot navigate to it by the normal UI.  To do this, run the following API call:

http://{myServer}/api/xml?action=sco-contents&sco-id=7&filter-like-name=Chat

where sco-contents = the api call.
where sco-id = the account-id of the system (for On Prem Connect licenses this will be ‘7’)
where filter-like-name=Chat

It will return the location of the Chat Transcripts folder.

Results will look like this:

<results>
<status code=”ok”/>
<scos>
<sco sco-id=”11011″ source-sco-id=”” folder-id=”7″ type=”tree” icon=”folder” display-seq=”0″ duration=”” is-folder=”0″>
<name>Chat Transcripts</name>
<url-path>/f88952271-4-14/</url-path>
<date-created>2013-10-24T07:30:08.460-07:00</date-created>
<date-modified>2013-10-24T07:30:08.460-07:00</date-modified>
<is-seminar>false</is-seminar>
</sco>
</scos>
</results>

2) Take the sco-id from this result set (in the above example it’s 11011) and run the following call:

http://{myServer}/api/xml?action=sco-contents&sco-id=11011

where the call is again ‘sco-contents’
where sco-id = the sco-id from the result of the first call.

This will list out all the Chat Transcripts on the system and the result will look like this:

<results>
<status code=”ok”/>
<scos>
<sco sco-id=”11140″ source-sco-id=”11137″ folder-id=”11011″ type=”content” icon=”transcript” display-seq=”0″ duration=”645″ is-folder=”0″><name>r35s9d4oskg_0</name>
<url-path>/p16jb8mcs6v/</url-path>
<date-begin>2013-10-24T12:17:15.127-07:00</date-begin>
<date-end>2013-10-24T12:28:00.263-07:00</date-end>
<date-created>2013-10-24T12:17:15.127-07:00</date-created>
<date-modified>2013-10-24T12:28:00.263-07:00</date-modified>
<is-seminar>false</is-seminar>
</sco>
</scos>
</results>

(in this example, I ONLY have 1 transcript on the system, so it only shows 1 above).

If you have a lot of transcripts (which you will after you enable this setting), you may want to filter on the meeting for which the transcripts were from.  This can be done by filtering on the ‘source-sco-id’ which is the sco-id of the meeting that was held.   So if you know the sco-id of the meeting, and you know the date range for which you had the session, you can filter on either the source-sco-id value (which will = the sco-id of the meeting) and/or the date/time fields to limit the data returned and find the transcripts you are looking for.

Now, the URL-path you see above in the second XML result is NOT accessible directly.  You cannot just append the value above (like ‘/p16jb8mcs6v/‘) to the Connect domain and expect to get the transcript.  This is what you need to do to download the file directly:

3)  Take your Connect domain + the url-path value + ‘output/foo.zip?download=zip‘ so the URL example would be:

http://mycomany.connect.com/p16jb8mcs6v/output/foo.zip?download=zip

This will get you a downloaded zip file that contains the Chat Transcript (in XML format).

 

 

 

Issue with upgrading CQ (Events) on standalone server

Note:

This article is for On-Premise (Licensed) Adobe Connect customers with the Events module who may be thinking of upgrading to 9.1.

This only applies to customers who meet ALL of the following criteria:

  • Customers who have installed CQ at the Adobe Connect 9.0 level (officially 9.0.0.1) and who are upgrading to 9.1 (officially 9.1.1)
  • Customers who have installed CQ on a standalone machine (so not on the same server or servers as Adobe Connect)
  • Customers who have installed CQ on a drive other than C:/.  

We have uncovered an issue with upgrading CQ (Events Module) from 9.0 version to 9.1 version on a standalone server where you would have installed CQ on a drive other than the C:/ drive.

With Adobe Connect 9.0.0.1 (the full 9.0 installer’s actual version), we introduced Adobe CQ as the backend for the Events module in Adobe Connect.  This required you to install CQ on either the same server as Adobe Connect, or on it’s own dedicated (preferred) server or servers (if in a cluster).  A typical workflow would have been to install the CQ application for both the Author and the Publisher instances of CQ on a drive other than the C:/ drive on the server (or servers).  The full installation of the original 9.0 version of CQ would have given  you the option of installing CQ wherever you wanted (say for this example, the ‘E:/’ drive).

With the latest (as of October, 2013) version of Adobe Connect and CQ (9.1.1 officially), we introduced a new version of CQ.  So customers who already installed CQ at version 9.0, would have already had CQ on a machine and would be upgrading CQ by running the new 9.1 .1 Adobe Connect installer on that server.  This is where the problem is.  The installer, for an upgrade to CQ will not give you the option to choose the installation folder/location. It just goes through and installs in the C:/ drive, which is obviously not correct if you installed in another location.

There is a workaround for this.

For now, you can work around this problem by adding a property value – USER_INSTALL_DIR=<old Installation directory> to the file <INSTALLER_ROOT>\Standard_DVD\Connect\9.1.1\Disk1\InstData\VM\cps.properties. Any valid installation path can be provided but format of the old installation path has to be either E:/Connect or E:\\CONNECT (or whatever drive letter you are using).

Note: Again, the full installation of 9.1 will allow you to choose the installation directory. The issue detailed above is only for upgrades from 9.0 to 9.1 CQ.

This issue with the installer will be addressed in Adobe Connect 9.2, which will be coming in Q1 of 2014.

 

Using the XML API and Microsoft Excel to obtain additional reporting from Adobe Connect

Sometimes customers need a custom report that is not included in the normal reports in the Adobe Connect UI.   They can obtain this data by running an API call, however the results get displayed in a browser (in an XML result set) and is not in a user-friendly format as-is.  In lieu of actually building an application that can parse and display the XML in a nice format for the user to be able to display in a useful manner, we can simply use Microsoft Excel to display the data in a nice tabbed report format.

An example of this would be as follows:

Say, you want to report on what users are in a particular group within Adobe Connect, and there is no good established report to actually display this data (other than in the datagrid in the Users and Groups area)…

Here’s what you can do.

Log into the account in a browser, as an admin.

Run the following API (or any API you need to run to obtain the data you are looking for):
http://connectURL/api/xml?action=principal-list&group-id=XXXXXXX&filter-is-member=true

Where:

action=principal-list
group-id= principal-id of group you want to report on
filter-is-member=true

 The results will get returned in the browser in XML format (as seen in the screenshot below):

Save the current page as an XML file by going into the browser options and select ‘Save As’ and make sure you save the page as ‘.xml’.

xml-1

 

After saving the XML locally, open up Microsoft Excel (on Windows) and select Data > From XML Data Import.

xml-2

 

Click OK through all the next pop ups that show up after selecting the XML file and just select the defaults:

xml-3 xml-4

 

Once the data loads in the worksheet, it will be formatted in a nice tabbed display as you see below:

xml-5