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.

Skôr ako začneme: nahliadnite do spracovania vašich osobných údajov

Ak navštívite stránku, ktorá zapisuje cookies, v počítači sa vám vytvorí malý textový súbor, ktorý sa uloží vo vašom prehliadači. Ak rovnakú stránku navštívite nabudúce, pripojíte sa vďaka nemu na web rýchlejšie. Náš web vám ponúkne relevantné informácie a bude sa vám pracovať jednoduchšie.

Súbory cookies používame najmä na anonymnú analýzu návštevnosti a vylepšovanie našich web stránok. Ak si nastavíte blokovanie zápisu cookies do vášho prehliadača, je možné, že web sa spomalí a niektoré jeho časti nemusia fungovať úplne korektne. Viac info k spracúvaniu cookies.