Call processing concepts

Sessions

Call processing in VoxImplant is grouped into sessions. Each session is a JavaScript context that contains a number of calls. A call here is a voice/video connection between VoxImplant Cloud and some other endpoint: a phone, the VoxImplant Web SDK instance, a SIP phone, an external SIP system, etc. So if a user makes a call from the Web SDK, and it is forwarded to another user, the corresponding session will have 2 calls in it: one incoming, and one outgoing.

All sessions are completely independent, and they may even be executed on different hardware. At the same time, all calls within the same session can be connected with each other. Every call that is made to the VoxImplant Cloud (from PSTN, the Web SDK, etc.) initiates a new session. Here's the relationship between calls and sessions (in this example we make calls from the Web SDK to PSTN) :

Session-Calls

JavaScript objects

These are the following classes available in this JS scenario:

  1. VoxEngine - namespace representing a session.
  2. Call - objects of this class wrap calls, and are created automatically when an outgoing call is created or an incoming call arrives.
  3. Net - namespace containing helper functions to work with HTTP and send e-mails
  4. Crypto - namespace containing functions to compute SHA1 and MD5 digests
  5. Logger - namespace with functions for logging

Session termination

A call control session is terminated:

  1. When the
    VoxEngine.terminate();
    function is called
  2. When any JavaScript error occurs
  3. When the execution time limit is reached (your JS code shouldn't block since all operations are asynchronous)
  4. When a session has no calls in it for 1 minute

Please note that a session (and all its calls) appear in the control panel only after a session is terminated, so if you would like them to examine them there quickly, you should call VoxEngine.terminate() manually when call processing finishes.