Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles
(untagged)

Integrating Plantronics Call Control with WebRTC

12 Feb 2013 2  
Integrating Plantronics Call Control with WebRTC

This article is in the Product Showcase section for our sponsors at CodeProject. These articles are intended to provide you with information on products and services that we consider useful and of value to developers.

One of the big things that I think will radically transform the communications industry is an emerging technology called WebRTC.  In a nutshell WebRTC will provide web browser vendors standards-based signaling protocols, codecs and security for interoperable real-time voice and video (and data) communications.  What this means for web developers is that the barriers for introducing real time communications will be significantly lowered and will no longer require the use of a browser plugin.

To find out more about what WebRTC is and the current state of the standards development, I would recommend watching this video by Cisco Fellow Cullen Jennings http://vimeo.com/47682405.

Recently at the WebRTC Expo (http://www.webrtcworld.com/conference/) Joe Burton and I demonstrated how Plantronics can seamlessly integrate our headset devices into a WebRTC call flow. The demo consisted of three parts. 

The first part was a node.js sever application that will serve as a rendezvous point for setting up a simple WebRTC call.  To build the server app we modified code we borrowed from an existing demo that Anant Narayanan put together called Gupshup.  The code for the server project can be found and downloaded from github (carybran/webrtc-server · GitHub .  The server code is relatively painless to use once you have node.js installed.

To run the server navigate to the webrtc-server project

  • Run the node package manager in the directory as follows: "npm install app.js", this will download the dependent packages for the application
  • Start node as follows: AUDIENCE="http://youripaddress:8000" node app.js
  • The server is now ready to go.

The second part is using a nightly build of Mozilla Firefox.  You should use the same version on each machine and I would recommend building your own copy of the nightly. To see what we used for the demo check out this file: webrtc-server/WebRTCExpo2012-demo-machine-config.txt at master · carybran/webrtc-server · GitHub Note: this demo was written for use with Mozilla but could easily be modified to work with Google Chrome.

The third part is the Plantronics client side code also on Github: carybran/PlantronicsWebRTC · GitHub.  This code connects the Plantronics headset functionality to the web browser using websockets.  For more information on how to build and use the code - check out the readme on Github

PlantronicsWebRTC/README.md at master · carybran/PlantronicsWebRTC · GitHub

Once you have the server up and running and your Mozilla nightly configured to run WebRTC applications you should be able to connect to the node.js application and login with the username of your choice.

If you have questions or comments about getting the demo running please let me know.

This article was written by Cary Bran. Cary works for Plantronics out of his backyard shed located in Seattle, Washington. His job title is Senior Director, Advanced Software and Architecture. What that translates to is he leads the research and development of next generation software and device concepts.

He's been developing solutions in the unified communications and collaboration space since 1998. In recent history, he's served as a software architect, technical strategist and contributor to the IETF and W3C WebRTC standardization efforts. He has a BS in Computer Science and an MBA from the Foster School of Business at the University of Washington.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here