Click here to Skip to main content
15,663,057 members
Articles / Programming Languages / C++
Posted 7 Nov 2012



High-Level Call Management ICallCommand: Benefits of Newer Spokes SDK!

7 Jan 2013CPOL3 min read
High-Level Call Management ICallCommand: Benefits of Newer Spokes SDK

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.

Image 1 

In the past integrations to Plantronics devices were often done via a lower-level SDK that exposed just the raw device events and device commands.

Now integrators can benefit from much simpler, higher-level interfaces with a lot of the hard work done for you, especially in the area of call state management between the headset and your application.

This makes it much quicker and easier to integrate to and support the latest Plantronics devices and handle multiple incoming call scenarios!

The Spokes SDK has 3 integration routes, COM Service, REST Service and iPlugin SDK. Note: All require the Spokes runtime to be installed and running. (Read more about this in: So what is Spokes anyway?).

I was recently exploring the ICallCommand call management interface and wanted to share some thoughts / results here.

Incoming call flow 

If you are doing softphone integration based on C++ SpokesSDKCOMSample, or C# SpokesSDKCOMNETSample, here is a flow you could implement for incoming call:

  • There is an incoming call in your softphone
  • Call the “callcommand->IncomingCall” function of the Plantronics SDK
    • Pass an ICall object containing the unique numeric id of the call
    • Pass an IContact object optionally with the contact name (caller id) who is calling to be displayed on screen of supported Calisto speakerphone/handset devices, otherwise empty string
  • This causes Plantronics device to go into PC/VoIP line ringing state, and to anticipate the next Talk button press will answer the call
  • User presses “Talk” button, Spokes notifies your softphone that the call is now in progress via the CallStateEventHandler callback function
    • On receiving this call back, depending on call id and call state within callback arguments, your softphone can connect the call! (or take other action based on call state, e.g. place a call on hold, etc.)
  • Then 2nd incoming call while 1st is still in progress!
  • Call IncomingCall function as before, with different call id
  • User can choose to terminate 1st call (talk button) and answer 2nd call (talk button) OR User can choose to put 1st call on hold and answer 2nd call (flash button, see below)
  • Again the call state changes are notified via CallStateEventHandler

Caller id can be displayed on display of supported Calisto devices. 


This flow can be demonstrated by this sample code: C++ SpokesSDKCOMSample, or C# SpokesSDKCOMNETSample

Testing handling of multiple incoming calls with SpokesSDKCOMSample:

  • The below screenshot shows sample application typing "incoming" twice to simulate 2 incoming calls:

Image 2

  • Result: When 2nd call comes in (ringing) pressing flash button will answer 2nd call, placing 1st call on hold. Pressing flash again will switch back to 1st call putting 2nd call on hold. You can do that as much as you want.
  • Spokes SDK tells your application which call state to set a call to via the "Call State" CallStateEventHandler callbacks
  • Press talk will terminate active call. The call on hold remains on hold until you press flash again to switch to it (activate it).
  • The other benefit to newer SDK is that it supports dialpad features, e.g. of Calisto P240 and 800-series as well as multi-line features of Savi 7xx.

Note: this test was done with Plantronics Savi 745 device. Not all products support the "flash button" call switching feature. If in doubt check user manual on

This article was contributed by Lewis Collins. He became a member of the Plantronics Engineering team in August 2011. In this role he provides software consulting and expertise internally across teams and to external development partners who want to integrate with the Plantronics SDK kits and headset products. Previously Lewis gained experience in a wide range of software engineering activities and technologies, working in the telecommunications and public safety sectors as a software engineer at Integraph, a consultant for Altran Technologies UK and as a software engineer for Teleca Ltd.


This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

Written By
United States United States
Today’s smart devices and applications have untapped potential in the realm of context-aware computing. Plantronics is making it possible for its audio devices to deliver contextual information to a range of applications through Plantronics headsets. The Plantronics Spokes SDK allows developers to create a range of business applications that will have the power to change the way we communicate and collaborate.

Please check out our DevZone for more info on the Spokes SDK:

Comments and Discussions

-- There are no messages in this forum --