Running Macro's for Cisco SX10 endpoints (or any Cisco video endpoint for that matter)

SX10 devices are unable to run the macro framework directly on the device. These devices are left out in the macro cold unable to do what other more powerful endpoints can. I can feel the chill now. But...

Thanks to a Nodejs library jsxapi we can bring these codec in from the cold and give them some powerful tools to handle in-room controls from the Touch 10 interface. My example focuses on in-room controls but this logic can be applied across monitoring any of the events that a Cisco video endpoint could generate.

There are some great macro examples on the DevNet Github repo. I am going to use one as an example to show how to convert it into a nodejs server application. The example I am using today is the audio only dial button. The example interface is shown below.


Typically when you select said button you get this interface:


 I am going to change this up slightly and instead of providing a straight dialing interface for an audio call, I am going to provide the ability to enter a meeting number to join a Webex. See below:

Once the meeting number is entered and the Join button is pressed the appropriate is appended to the call and the calling interface launches. So a slight change but easy dialing into a meeting is always a good thing. If you want to stick to the original like the example it should be a matter of a few small changes.

To turn this into a Nodejs application we need two files. First is the typical Node application launch file index.js. This file is pretty simple and launches the application  by creating an array of endpoint objects using the TPXapi module which is our second file. My list of endpoints is a simple array but feel free to use a database or json file in its place to store your list of host URL's or IP addresses.
The TPXapi module below forms the core of our application and controls the SSH connection, provides error correction and most importantly monitors events coming from our video endpoint.  New functionality can be adding by extending the prototype with new functions. Error correction provides a way to reconnect to the endpoint should the SSH session fail. Any other type of error will close the connection and reopen it. This may or may not be preferred.
This is a very simple example of using in-room controls and converting a macro to a server side application. The possibilities of more complex functionality are endless.

Cisco Video Endpoint API Application

I have been working hard on my CE API application. I built some new checks into the branding delivery system so that any endpoint now not capable of receiving branding will get a wallpaper instead. This sounds like it should be an easy manual thing to do but if you have 1000+ devices this can make your life a lot easier by automating this check. Now all you need is your images to deploy and a CSV of IP addresses of your Cisco video endpoints.

Below is an except from the readme on the Github repo:

Simple app to deploy packages to Cisco Telepresence apps. Branding for CE9.2.1+ and backup bundles for CE9.3+ devices is supported. Backup bundles is a new features for CE9.3+ firmware.
Currently capable of deploying:
  • Custom Branding with little fuss. Checks the endpoint if it is branding capable via firmware version and endpoint type. Takes care of reading CSV files for endpoints and also base64 encoding of image files.
  • Using the branding option the script will check your endpoint version and deploy branding to endpoints capable or wallpaper for non-branding capable devices. SX10 has no branding option even if the firmware is CE9.3 so wallpaper will be deployed.
  • Deploy wallpaper images (also disables branding) to all your endpoints instead of using the branding option.
  • Deploy a backup bundle to multiple endpoints. Will create the backup bundle checksum for deployment and acts as http server for package delivery. This is a new features in CE9.3.
  • Download logs from a single device for troubleshooting or for submitting to TAC.

Getting Started

The following applications and hardware are required:
  • Cisco Video endpoint on same network as deployment server/PC.
  • Linux or Windows device running latest version of Nodejs.
  • CSV file with IP addresses for endpoints placed in the Endpoint directory
  • Image files to be deployed placed in branding and wallpaper directories
    • Branding image 272x272 preferred
    • Background Image 1920x1080 preferred
  • Backup bundle created using CE9.3 device for backup bundle option.

If you have any other suggestions for helping manage devices please let me know in the comments. Happy to consider all options to add to the script.


Presence and CE API Applications

Recently I created a couple of Github repositories both of which revolve around CE based endpoints. The first application called "Telehealth Presence Application" adds presence to video endpoints within Jabber but also adds a Spark administration chat interface to make for easy administration. I also added some features like broadcasting a on screen message to all video endpoints that were more experimentation than target request.  Go here.


The second application aims to make administering Cisco video endpoints a little easier by providing a script to deploy either branding, wallpaper and backup-bundle to multiple endpoints. If deploying the branding options, the script will also check your endpoint version to ensure it has branding capabilities and if not deploys wallpaper. It also has the ability to downloads troubleshooting logs from a single endpoint that are commonly requested by TAC. While using the script as-is is an option, ideally this is more design to show how it's done so people can use the desired function in their own code. Go here.

Go Tiger.