<%/****************************************************************************** * Copyright (c) 2000-2004 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" %><%@ page import="com.edeal.frontline.navigation.FlRequest" %><%@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()); FlRequest flRequest = new FlRequest(request); FlContext context = flRequest.getContext(); String avayaURL=null; String pPhone = Utils.getRequestParameter(context, request, "phone"); CTIServiceClient cti = null; String polInterval=null; try { cti = (CTIServiceClient)context.getServiceManager().getServiceClient(session, "CTI"); cti.setAllOptions(); avayaURL = cti.getOption("URL", ""); polInterval = cti.getOption("PollInterval", "1000"); if ("".equals(avayaURL)) { logger.error("CTI AVAYA Error, option 'CTI.Opyion.URL' is not initialise"); } } catch(Exception e) { logger.error("Error in CTI Service : ", e); }%> var call = '<%=avayaURL%>/call'; var transfert='<%=avayaURL%>/transfert?phone='; var answer='<%=avayaURL%>/answer'; var clear='<%=avayaURL%>/clear'; var okResponse='OK'; var koResponse='NOK'; var callReturn='caller='; var proxyPage = '/cti/proxy_avaya.jsp'; var pool='/call_pool'; 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; } } function doOnLoadCTI(){ startListen(); } //function doCallCTI(pPhone){ function doCallCTI(pPhone, pObj, pID){ var formatedPhone = getPurePhone(pPhone); var url = call+'?phone='+formatedPhone; url=encodeURI(url); doAjax(proxyPage+'?url='+url, cTIReturn); } function doAnswerCTI(pRef){ var ref = ''; if (pRef!=null) ref = pRef; var url = answer+ref; url=encodeURI(url); doAjax(proxyPage+'?url='+url, cTIReturn); } function doTransferCTI(pRef, pPhone){ var ref = ''; if (pRef!=null) ref = pRef; var formatedPhone = getPurePhone(pPhone); var url = transfert+formatedPhone+'&ref='+ref; url=encodeURI(url); doAjax(proxyPage+'?url='+url, cTIReturn); } function cTIReturn(arrIndex){ var response = ''; if (eDealXmlhttpArr[arrIndex].readyState == 4) { response = eDealXmlhttpArr[arrIndex].responseText; //Traitement de la reponse ... if (response==okResponse){ //OK, on ne fait rien //Trace à enlever //alert(response); }else{ //alert(response.substring(koResponse.length+1, response.length)); //Trace à enlever //alert(response); } } } function startListen(){ var periode = '<%=polInterval%>'; dummyStuff=(new Date).getMilliseconds(); doAjax(pool+"?dummy="+dummyStuff, ctiPoolReturn); setTimeout('startListen()', periode); } function ctiPoolReturn(arrIndex){ var response = ''; var num=''; if (eDealXmlhttpArr[arrIndex].readyState == 4) { response = eDealXmlhttpArr[arrIndex].responseText; //Traitement de la reponse ... if (response=='null'){ //Le pool est vide }else if (response.indexOf('caller')>-1){ // Parser le retour var caller = response.substring('caller='.length, response.indexOf('\n')); var called = response.substring(response.indexOf('called=')+'called='.length, response.length); window.open('/cti/call.jsp?phone='+caller+'&called='+called, '', 'menubar=no,status=no,toolbar=no,scrollbars=yes,resizable=yes,width=600,height=700,top=0,left=0'); } } }