I'm trying to understand the architecture behind Open CTI. But somehow I cannot find out who is talking to who. Of course, the user can trigger calls to the Javascript library. The methods available are well enough documented.

But then the browser somehow need to communicate with the phone switch. And the phone switch needs to be able to pass information to the user (presumably through the browser via a call to Salesforce). But I cannot seem to find any documentation on what the phone side of things needs to look like.

Is there any documentation I cannot find? Or could somebody explain the communication in the background to me?


The documentation has a good diagram about who owns what


Open CTI is purely the JavaScript library that keeps the Salesforce front end up to date, to track the active call data, and provides some methods for saving objects as well.

The connection to the phone system itself will depend highly on what phone system you're actually using. So the documentation for what the phone side of things looks like will be specific to your own system and their APIs, rather than being something that's collected in a central place. This is why there are many vendors that provide this kind of integration such as Five9, InGenius, NewVoiceMedia, etc...

That said, a typical flow would look like this:

  1. A call comes into your phone system.
  2. Your softphone becomes aware of the call, probably by using an API call to the phone system. Either through apex callouts or via an HTML page living on the phone system or similar. This is internal implementation for the softphone based on what system it's using.
  3. The softphone now uses Open CTI to do something like a screenPop to search for any contact that might match the caller's number, create a new task to track the call, etc...
  4. Your agent finishes the call and clicks hang up on the softphone. Open CTI can do things like finalize the call task and fire events to finish wrap up.
  5. The softphone sends a hang-up message or something to your call system to actually end the call with the user. Again, this is an internal implementation that will be specific to the call center you're using and their APIs.


tl;dr It depends on your phone system, so you should check the developer docs for the system and then consider how you can connect that to Salesforce via apex callouts or by hosting your softphone on-premise.

  • Thank you very much. This is a really nice and short explanation. For some reason I was unable to understand that from the official documentations I had found so far. They seemed... blackboxy somehow. – Florian Heer Feb 14 '17 at 11:53

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.