Custom Siebel CTI Toolbar heartbeat of Push Connection
25. 5. 2018
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.
Späť na Blog