function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
JimPJimP 

CTI screen pop causes data loss on incomplete forms

I am doing a new ground up CTI integration with the Natterbox telephony platform, and it's already working well.

 

I have a problem however with screen popping - if the phone rings and there is a matching record, and the user is working on a different page, then the changes are lost when the screen pop pops. This is causing us customer stress. We would like the system to work as follows:

 

phone rings: the CTI adapter UI is updated with the relevant data in the status bar (Eg name of caller)

user answers: the screen pops.

 

I can't see how to decouple the UI update with the screen pop. It all appears to happen in the underlying COM object. Or rather: it seems that the screen pop is triggered by the COM object but I could switch off the UI update ... but unfortunately that's the wrong way round for me.

 

Any comments or alternative suggestions are welcomed - this is quite a major issue for us currently.

*werewolf**werewolf*

Under normal circumstances, the CTI adapter does not pop on top of an edit or inline edit page.  Is this edit page you're referring to a Visualforce page perhaps?

 

Certainly one easy way to fix it is to go to Setup | Customize | Call Centers | Softphone Layouts and set it to Pop To New Tab/Window.

*werewolf**werewolf*

Also, the screen usually pops when the call is ringing, not when the user answers, although that could be an implementation detail of whoever's adapter you're using.

JimPJimP

Thanks Werewolf for getting back to me.

 

To answer your previous query - yes they are Visualforce pages.

 

In fact since posting I already revisited the call center settings, and we have a temporary solution based on turning off 'always pop when there is one result'. It's felt that the 'new window' option would result in too many open windows as these guys are getting absolutely bombarded in calls, and doing it manually is the preferred solution for now.

 

So we are out of trouble for now. However I would like to look at a permanent fix along the lines they have requested. We (in fact - 'I') have developed a new CTI adapter from the demo adapter, as our telephony platform is in-house. So no problem with dealing with overriding classes and methods in the CTI library etc etc.

 

Can you tell me: when auto screen-popping is switched off, what mechanism is used to pop screens when the user clicks on a link in the softphone, and is this something I can access from my CTI adapter? I would really like to be able to trigger a screen pop when the user clicks 'Answer'.

 

Thanks again!

*werewolf**werewolf*

The screen pop isn't at the COM layer, it's actually done by Javascript on the page.  If you dig a bit you'll find that it's checking a function called  

 

function shouldScreenPop(callObjectId)

 

You could redefine that function in the code of your Visualforce page to always return false if it's an "editing" page.

JimPJimP

Thanks again, Werewolf.

 

So just to be clear - there is no way to command a screen pop from inside the CTI adapter?

*werewolf**werewolf*

Not exactly.  A screen pop is a side effect of sending an OnCallRinging event.  So you can sort of create a screen pop by sending one of those, but the pop itself and its attendant options are done by the Javascript on the page.

JimPJimP

Thanks again for your time on helping me with this.

 

I'd really like to be able to initiate a screen pop at will from the CTI adapter. The client wants the screen not to pop on OnCallRinging(), though have the CTI UI update normally, and for a screen pop to happen on OnCallAnswer().

 

The context for this is that many people's phones may ring, and they only want the screen pop to happen for the person who answers, though it would be great for everyone to see the meta-information for the caller in the CTI when the phone rings.

I could modify OnCallRinging() not to do the AsyncSearch, and move that functionality to OnCallAnswer(), but that would prevent the CTI UI being updated on OnCallRinging(). IMHO this is quite a good idea.

 

Our current solution is to switch off auto-screen popping in the config, and have the user click on the link in the CTI UI when they want the screen to pop. That's ok for now, but I would like to finesse it if possible. If we can't, and I get the feeling we can't as things stand, then I'd just like to confirm that.

*werewolf**werewolf*

Well you can't initiate a screen pop without OnCallRinging (outside of actually launching another browser window from the C++ code, but that comes with its own set of difficulties, and I'd recommend you not pursue that path).

 

What you can do, though, is send 2 OnCallRinging events, the first with no search and the second (on answer) with the search, and then send the OnCallEstablished event immediately after the second OnCallRinging.  That would do what you're looking for, I think, although the search results (and therefore the link) would not in fact appear until the second OnCallRinging.

 

Certainly one question is: why would you want it to pop on answer instead of on ringing?  I can't think of a good use case for that.

JimPJimP

The basic rationale is this: if you are working on a form elsewhere in salesforce and the phone rings, the softphone data gives enough info to decide whether or not to take the call (ie who's calling, what account they belong to, etc). You can then save what you're doing and answer the call, at which point the screen pops automatically.

 

Admittedly all that does is save one mouse click ... but the customers' opinion is that screen pops are a good idea - just not at the expense of losing data you are entering in a form elsewhere in salesforce.

 

Anyway it's academic as it does sound as if it's not a goer, at least for the moment, and I think the customer will be ok with the alternative. Thanks again for your help.