blog image

Custom Siebel CTI Toolbar heartbeat of Push Connection

Siebel CTI Toolbar uses Push Connection to enable AOM Server to send events whenever they occur. In whatever reason, if CTI Toolbar Push connection is disconnected, toolbar remains active, but no more command responses and events will be sent to Toolbar, see Doc ID 1986282.1. Disconnection can be caused by firewall or simply changing LAN to Wi-Fi or handover in Wi-Fi. In past, when agents used to work with desktops this problem was not so common, nowadays mobile working places of contact center agents must be taken into account.

There are many documents on Oracle Support web how to handle this situation, please see: Doc ID 1986282.1, Doc ID 2013024.1

We have found, that setting the parameter: RetryBeforeStopPush does not always solve the issue. When user changes network, IP connection disconnect is not always recognized.

Therefore we have created our own heartbeat function that checks if PushResponse has come within defined timeout. It is function E.prototype.CheckPushResponse in commUtilToolbar.js

E.prototype.CheckPushResponse=function()        
{
               this.LogMsg(1,"CheckPushResponse not received, toolbar temporary disabled, network error!");
               failedCount++;
               if (failedCount<H.PushRetryCount) {
                              this.LogMsg(1,"Network error, reconnecting, failed attempts:" + failedCount + " push: retry");
                              H.bStarted=false;
                              f(this.SendPush, 1000, this);
               }
};

                       

We have modified function E.prototype.SendPush and have added following code at the end before SiebelApp.S_App.CallServer:

ClearCheckPushTimout("SendPush");  

if (H.PushRetryCount>0 && H.PushResponseTimeout>0 )        {
              checkTimer = f(this.CheckPushResponse, H.PushResponseTimeout, this);       
}

 

It means we start Timeout function to see whether within specified time comes the response from AOM Server. If response does not come we will try to create new Push connection within function CheckPushResponse. If we receive the response, we clear the timeout, see next function.

E.prototype.ClearCheckPushTimout=function(str)                
{                                          
               if (H.PushRetryCount>0 && checkTimer !==null)
               {
                              this.LogMsg(3,"clearTimeout previous timer in function: " + str);
                              clearTimeout(checkTimer);
                              checkTimer = null;
               }                                          
}

For the whole sources, please do not hesitate to contact us: info@ccw.sk.

Before we begin: take a look at the processing of your personal data

If you visit a site that records cookies, a small text file will be created on your computer and stored in your browser. The next time you visit the same page, it will help you connect to the web faster. Our website will offer you relevant information and make it easier for you to work.

We mainly use cookies for anonymous traffic analysis and to improve our website. If you set your browser to block cookies, it is possible that the website will slow down and some parts of the website may not work completely correctly. More info on the processing of cookies.