%/******************************************************************************
* Copyright (c) 2000-2007 e-Deal
*
* e-Deal S.A.
* 55 rue Brillat Savarin
* 75013 Paris
* France
*
* T: +33 (0)1 53 80 80 30
* F: +33 (0)1 73 01 69 77
* http://www.e-deal.com
*
* La diffusion de ce code source sous quelque forme que ce soit sans
* l'autorisation de E-DEAL est interdite.
*
* Vous êtes autorisés à modifier ce code source uniquement pour votre usage
* propre et sous réserve que les mentions de copyright demeurent intactes.
*
* Ce code est fourni en l'état. Aucune garantie d'aucune sorte, explicite ou
* implicite n'est donnée. En aucun cas E-DEAL ne pourra être tenu pour
* responsable des dommages pouvant résulter de l'utilisation de ce code
* source.
*
*
******************************************************************************/%><%@page session="true" import="com.edeal.frontline.*,java.util.*,com.edeal.frontline.services.*,com.edeal.frontline.services.cti.*"%><%@ page import="com.edeal.frontline.services.cti.CTIServiceClient" %><%@taglib uri="http://www.e-deal.com/taglib/fl" prefix="fl" %><%final org.apache.commons.logging.Log logger = org.apache.commons.logging.LogFactory.getLog(getClass());
logger.warn("Page ALGORIA");
String contextPath = (String) session.getAttribute("contextPath");
FlContext context = null;
if (contextPath != null) {
context = Frontline.getContext(contextPath);
} else {
context = Frontline.getContext(request.getContextPath());
}
DataDictionary dico = context.getDataDictionary();
String pPhone = Utils.getRequestParameter(context, request, "phone");
logger.warn("Phone :"+pPhone);
logger.warn("REQUEST HOST:"+request.getRemoteAddr());
CTIServiceClient cti = null;
String polInterval=null;
try{
cti = (CTIServiceClient)context.getServiceManager().getServiceClient(session, "CTI");
if (cti != null) {
polInterval = cti.getOption("PollInterval","1000");
}
}catch(Exception e){
logger.warn("Error in CTI Service :\n"+e.getMessage());
}%>
var algoriaOperation = '/<%=AlgoriaServlet.SERVLET_NAME%>?<%=AlgoriaServlet.URL_ACTION_PARAMETER%>=';
var call = algoriaOperation+'<%=AlgoriaServlet.CALL_OPERATION%>';
var transfert= algoriaOperation+'<%=AlgoriaServlet.TRANSFER_OPERATION%>';
var answer= algoriaOperation+'<%=AlgoriaServlet.ANSWER_OPERATION%>';
var release= algoriaOperation+'<%=AlgoriaServlet.RELEASE_OPERATION%>';
var initiateTransfer = algoriaOperation+'<%=AlgoriaServlet.INITIATE_OPERATION%>';
var completeTransfer = algoriaOperation+'<%=AlgoriaServlet.COMPLETE_OPERATION%>';
var reconnectTransfer = algoriaOperation+'<%=AlgoriaServlet.RECONNECT_OPERATION%>';
var hold = algoriaOperation+'<%=AlgoriaServlet.HOLD_OPERATION%>';
var retrieve = algoriaOperation+'<%=AlgoriaServlet.RETRIEVE_OPERATION%>';
var alternate = algoriaOperation+'<%=AlgoriaServlet.ALTERNATE_OPERATION%>';
var okResponse='OK';
var koResponse='NOK';
var callReturn='caller=';
var pool='/call_pool';
// Stops the polling.
var stopPollingStatus = "NOPOLL";
//var pollingOn = true;
var pollingOn;
var listening;
function getPurePhone(phone){
var formated = phone;
var number = '0123456789';
//alert('getPurePhone : '+phone);
if (formated == '' || formated == null){
return '';
}else{
if (formated.charAt(0) == '+'){
formated = '00'+formated.substring(1, formated.length);
}
if (formated.indexOf('(')>-1){
formated = formated.substring(0,formated.indexOf('('))+formated.substring(formated.indexOf(')')+1, formated.length);
}
//alert('formated : '+formated);
for(var i=0; i < formated.length; i++){
//Suprresion de tout les caracteres non num?riques
var currentChar = formated.charAt(i);
if (number.indexOf(currentChar)==-1){
formated = formated.substring(0,i)+formated.substring(i+1, formated.length);
i--;
}
}
if (formated != '' && formated != null && formated.length > 10) {
formated = '0'+formated.substring(4,formated.length);
}
//alert('formated retourne : '+formated);
return formated;
}
}
// *********** Starts the polling ***********
function doOnLoadCTI(){
startListen();
}
// ************ Outbound calls : auto dial ************
function doCallCTI(pPhone, pObj, pID){
//alert("Algoria cti call;"+pPhone);
var formatedPhone = getPurePhone(pPhone);
var url = call+'&phone='+formatedPhone;
url=encodeURI(url);
//alert("url called : "+url);
doAjax(url); //, cTIReturn);
}
// ************ Answer & Release a call. **************
function doAnswerCTI(pRef){
var url = answer;
url=encodeURI(url);
doAjax(url); //, cTIReturn);
}
function doReleaseCTI(pRef){
var url = release;
url=encodeURI(url);
doAjax(url); //, cTIReturn);
}
// ************* Mute Transfer **************
function doTransferCTI(pRef, pPhone){
var ref = '';
if (pRef!=null) ref = pRef;
//alert("cti_algoria_js.jsp#doTransferCTI(pRef=" + pRef + ", pPhone=" + pPhone);
var formatedPhone = getPurePhone(pPhone);
var url = transfert+'&phone='+formatedPhone+'&ref='+ref;
url=encodeURI(url);
doAjax(url); //, cTIReturn);
}
// *************** 2 phase transfer. ***************
function doInitiateTransferCTI(pPhone, pAttachedData, pReason) {
var formatedPhone = getPurePhone(pPhone);
var url = initiateTransfer+'&phone='+formatedPhone;
url = encodeURI(url);
doAjax(url);
}
function doCompleteTransferCTI(pPhone, pReason) {
<%-- alert("In doCompleteTransferCTI(pPhone, pReason) of cti_algoria_js.jsp ."); --%>
var formatedPhone = getPurePhone(pPhone);
var url = completeTransfer+'&phone='+formatedPhone;
url = encodeURI(url);
doAjax(url);
}
function doReconnectTransferCTI(pReason) {
var url = reconnectTransfer;
dummyStuff=(new Date).getMilliseconds();
url = encodeURI(url+'&dummy='+dummyStuff);
doAjax(url);
}
// **************** Hold & Retrieve **************
function doHoldCallCTI() {
var url = hold;
url = encodeURI(url); //'&reason='pReason
doAjax(url);
}
function doRetrieveCallCTI() {
var url = retrieve;
url = encodeURI(url); //'&reason='pReason
doAjax(url);
}
// ************** Alternate *******************
function doAlternateCallCTI() {
var url = alternate;
dummyStuff=(new Date).getMilliseconds();
url = encodeURI(url+'&dummy='+dummyStuff);
doAjax(url);
}
// ************** Ajax Answers ****************
function cTIReturn(arrIndex){
var response = '';
if (eDealXmlhttpArr[arrIndex].readyState == 4) {
hideWaiting();
response = eDealXmlhttpArr[arrIndex].responseText;
//Traitement de la reponse ...
if (response==okResponse){
//OK, on ne fait rien
//Trace à enlever
//alert(response);
eval(response);
} else if (response==stopPollingStatus && pollingOn) {
pollingOn = false;
clearTimeout(listening);
alert('Service CTI déconnecté. Veuillez vous relogguer.');
} else {
//alert(response.substring(koResponse.length+1, response.length));
//Trace à enlever
// alert(response);
eval(response);
}
}
}
// *************** Polling ****************
function startListen(){
pollingOn = true ;
var periode = '<%=polInterval%>';
dummyStuff=(new Date).getMilliseconds();
//alert('polling : ' + algoriaOperation+'poll&dummy='+dummyStuff+'&CallWindowName=uneInstance');
doAjax(algoriaOperation+'poll&dummy='+dummyStuff+'&CallWindowName=uneInstance', cTIReturn);
listening = setTimeout('startListen()', periode);
}