Calls management using the new Call API tool

The new Call API project consists of a standalone server able to serve a set of API commands that can be used to control SIP calls (such as start a new call, put a call on hold, transfer it to a different destination, etc.). In order to provide high performance throughput, the server has been developed in Go programming language, and provides a WebSocket interface that is able to handle Json-RPC 2.0 requests and notifies.

Although it runs as a standalone daemon able to control calls, it does not directly interact with SIP calls, but just communicates with a SIP proxy that actually provides the SIP stack and intermediates the calls. The first release of the Call API is using OpenSIPS for this purposes, but this is a loose requirement – in the future other SIP stacks can be used, with the appropriate connectors.


In terms of architecture, the new Call API tool consists of multiple units, the most important ones being:

  • Clients interface – this unit is responsible for receiving Json-RPC requests over WebSocket from clients and pass them to the Commands unit
  • Management interface – this is the unit that communicates with the SIP proxy in order to instruct what needs to be done
  • Event interface – listens for event from the SIP proxy and passes them to the Commands unit
  • Commands unit – this is the unit that implements the commands logic, ensuring the interaction between all the above interfaces.

Communication between these units is done asynchronous using go-routines. Below you can find a diagram that shows how all these units are interconnected


Below you can watch a video that shows how you can use some of the features the Call API tool provides, such as:

  • Start a call between two participants
  • Put the call on hold
  • Resume the call from hold
  • Transfer a call to a different destination
  • Terminate an ongoing call

Enjoy watching!

2 thoughts on “Calls management using the new Call API tool

Leave a Reply

Please log in using one of these methods to post your comment: Logo

You are commenting using your account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s