From 67509b965b3a50f9cd6672c52a850cd75c4f07d7 Mon Sep 17 00:00:00 2001 From: "HGMnetwork.com" <30288264+hgmnetwork@users.noreply.github.com> Date: Wed, 27 Feb 2019 18:37:00 +0000 Subject: [PATCH 1/6] Update index.php obtenemos la extension activa en manejar Monitoreo_HTML para poder realizar escuchas y conectar con esa extension --- modules/campaign_monitoring/index.php | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/modules/campaign_monitoring/index.php b/modules/campaign_monitoring/index.php index 132872e..ef383e6 100755 --- a/modules/campaign_monitoring/index.php +++ b/modules/campaign_monitoring/index.php @@ -73,6 +73,13 @@ function _moduleContent(&$smarty, $module_name) function manejarMonitoreo_HTML($module_name, $smarty, $sDirLocalPlantillas) { +//obtenemos la extension actual del usuario activo +global $arrConf; + $pDB = new paloDB($arrConf['issabel_dsn']['acl']); + $pACL = new paloACL($pDB); +$user = $_SESSION['issabel_user']; +$extension = $pACL->getUserExtension($user); + $smarty->assign("MODULE_NAME", $module_name); $smarty->assign(array( 'title' => _tr('Campaign Monitoring'), @@ -106,6 +113,7 @@ function manejarMonitoreo_HTML($module_name, $smarty, $sDirLocalPlantillas) 'ETIQUETA_MAX_DURAC_LLAM' => _tr('Maximum Call Duration'), 'ETIQUETA_PROMEDIO_DURAC_LLAM' => _tr('Average Call Duration'), 'ETIQUETA_OCULTAR_AGENTES' => _tr('Hide Offline Agents'), + 'EXTENSION_USUARIO' => _tr($extension) )); return $smarty->fetch("file:$sDirLocalPlantillas/informacion_campania.tpl"); From 8084858b9842336456b66501788fbafe22ee9bbf Mon Sep 17 00:00:00 2001 From: "HGMnetwork.com" <30288264+hgmnetwork@users.noreply.github.com> Date: Wed, 27 Feb 2019 18:44:00 +0000 Subject: [PATCH 2/6] Update informacion_campania.tpl MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit añadimos al lado del nombre o extension del agente el icono del altavoz con la accion al hacer click para que llame a escuchar y marque la extension del usuario activo y ponga escucha a dicho agente. --- .../themes/default/informacion_campania.tpl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/campaign_monitoring/themes/default/informacion_campania.tpl b/modules/campaign_monitoring/themes/default/informacion_campania.tpl index f69d7c1..7c8766c 100755 --- a/modules/campaign_monitoring/themes/default/informacion_campania.tpl +++ b/modules/campaign_monitoring/themes/default/informacion_campania.tpl @@ -138,7 +138,7 @@ {literal}{{#view tagName="tbody"}} {{#each agentes}} - {{canal}} + OnClick="javascript:escuchar(this.innerHTML,'{/literal}{$EXTENSION_USUARIO}{literal}');">{{canal}} {{estado}} {{numero}} {{troncal}} @@ -184,4 +184,4 @@ function toggleOffline(){ elem.style.display = 'none'; } } - \ No newline at end of file + From 42f3bd69e85bd0505ce64eb4585d27f5afa4d8d3 Mon Sep 17 00:00:00 2001 From: "HGMnetwork.com" <30288264+hgmnetwork@users.noreply.github.com> Date: Wed, 27 Feb 2019 18:46:09 +0000 Subject: [PATCH 3/6] Update javascript.js funcion javascript que llama al fichero escuchar_agente para realizar la llamada, primero a la extension activa y luego la escucha, si la extension del agente no esta conectado no hace nada --- .../themes/default/js/javascript.js | 32 ++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/modules/campaign_monitoring/themes/default/js/javascript.js b/modules/campaign_monitoring/themes/default/js/javascript.js index fa9de52..1962550 100644 --- a/modules/campaign_monitoring/themes/default/js/javascript.js +++ b/modules/campaign_monitoring/themes/default/js/javascript.js @@ -534,4 +534,34 @@ function mostrar_mensaje_error(s) $('#issabel-callcenter-error-message').fadeOut(); }, 5000); }); -} \ No newline at end of file +} + +function escuchar(agente,extension){ + //reemplazamos cualquier etiqueta dejando solo el texto del agente por ejemplo SIP/agente o A/agente Agent/agente SIP/5001 A/5001 + const regex = /(<([^>]+)>)/ig; + var agente = agente.replace(regex, ''); + //ahora quitamos el espacio inicial o cualquiera + var agente = agente.replace(' ', ''); + + $.ajax({ + url: "/modules/campaign_monitoring/libs/escuchar_agente.php", + type: "get", //send it through get method + data: { + agente: agente, + extension: extension, + }, + + success: function(response) { + //Do Something + console.log(response); + }, + error: function(xhr) { + //Do Something to handle error + console.log('error escuchar_agente.php'); + console.log(xhr); + alert("Se ha producido un error al intentar escuchar al adengte.") + } + }); + + +}; From 016752f01d9c4c4932e444c477a1010c1b29ac54 Mon Sep 17 00:00:00 2001 From: "HGMnetwork.com" <30288264+hgmnetwork@users.noreply.github.com> Date: Wed, 13 Mar 2019 16:13:23 +0000 Subject: [PATCH 4/6] Create escuchar_agente.php MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit genera la llamada al agente indicandole whisper agente : xxx y le conecta con la extension del usuario actual , si tiene varias extensiones el usuario conecta solo con la primera que es la que usará por defecto. --- .../libs/escuchar_agente.php | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 modules/campaign_monitoring/libs/escuchar_agente.php diff --git a/modules/campaign_monitoring/libs/escuchar_agente.php b/modules/campaign_monitoring/libs/escuchar_agente.php new file mode 100644 index 0000000..916c14b --- /dev/null +++ b/modules/campaign_monitoring/libs/escuchar_agente.php @@ -0,0 +1,43 @@ + la extension del usuario es $array_extensiones[0] y la del usuario actual es ".$_GET['agente']."
"; +//lo mismo con el agente +$agente =trim($_GET['agente']); +$agente=preg_replace("/(SIP\/|AGENT\/)/i","",$agente);//dejamos solo el numero + +#permit=127.0.0.1/255.255.255.0,xxx.xxx.xxx.xxx ;(the ip address of the server this page is running on) +$strHost = "127.0.0.1"; + +#specify the username you want to login with (these users are defined in /etc/asterisk/manager.conf) o en manager_custom.conf +#por defecto usamos el usuario de php que viene +$strUser = "phpconfig"; + +#specify the password for the above user +$strSecret = "php[onfig"; + +$oSocket = fsockopen($strHost, 5038, $errnum, $errdesc) or die("Connection to host failed libs/escuchar_agente.php"); + +$from = $extension;//quien escucha + $to = $agente;//quien es escuchado el agente + fputs($oSocket, "Action: Login\r\n"); + fputs($oSocket, "UserName: $strUser\r\n"); + fputs($oSocket, "Secret: $strSecret\r\n\r\n"); + $wrets=fgets($oSocket,128); + fputs($oSocket, "Action: Originate\r\n" ); +fputs($oSocket, "CallerId: Whisper Agente: $agente\r\n"); + fputs($oSocket, "Channel: SIP/".$from."\r\n" ); + fputs($oSocket, "Application: ChanSpy\r\n" ); + fputs($oSocket, "Data: SIP/".$to."\r\n\r\n" ); + $wrets=fgets($oSocket,128); + sleep(3); + +fclose($oSocket); +echo "Realizando Whisper al Agente $agente y a la extensión $extension"; From 9c25a99fb8099a5b7aae81287c313fb582a68743 Mon Sep 17 00:00:00 2001 From: "HGMnetwork.com" <30288264+hgmnetwork@users.noreply.github.com> Date: Wed, 13 Mar 2019 17:26:51 +0000 Subject: [PATCH 5/6] Update escuchar_agente.php modificado me avisaron y pude verificar que solo funcionaba con extensiones sip, he cambiado a fputs($oSocket, "Channel: local/".$from."\r\n" ); para que con el local funcione sea una extension iax2 o sip :D ahora funciona con todas --- modules/campaign_monitoring/libs/escuchar_agente.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/campaign_monitoring/libs/escuchar_agente.php b/modules/campaign_monitoring/libs/escuchar_agente.php index 916c14b..55f3b4f 100644 --- a/modules/campaign_monitoring/libs/escuchar_agente.php +++ b/modules/campaign_monitoring/libs/escuchar_agente.php @@ -33,7 +33,8 @@ $wrets=fgets($oSocket,128); fputs($oSocket, "Action: Originate\r\n" ); fputs($oSocket, "CallerId: Whisper Agente: $agente\r\n"); - fputs($oSocket, "Channel: SIP/".$from."\r\n" ); + //fputs($oSocket, "Channel: SIP/".$from."\r\n" ); + fputs($oSocket, "Channel: local/".$from."\r\n" ); fputs($oSocket, "Application: ChanSpy\r\n" ); fputs($oSocket, "Data: SIP/".$to."\r\n\r\n" ); $wrets=fgets($oSocket,128); From 6baae1f46eefed111c2943b6408d24b4d3882487 Mon Sep 17 00:00:00 2001 From: "HGMnetwork.com" <30288264+hgmnetwork@users.noreply.github.com> Date: Mon, 22 Apr 2019 19:20:05 +0100 Subject: [PATCH 6/6] Update escuchar_agente.php MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit mejora de seguridad, ahora verificamos que sea un usuario logueado y solo puede hacer escucha en la extensión que el propio usuario tiene asignada como la primera de todas, si no tiene asignada extensión no realiza escucha. --- .../libs/escuchar_agente.php | 27 ++++++++++++++----- 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/modules/campaign_monitoring/libs/escuchar_agente.php b/modules/campaign_monitoring/libs/escuchar_agente.php index 55f3b4f..642937a 100644 --- a/modules/campaign_monitoring/libs/escuchar_agente.php +++ b/modules/campaign_monitoring/libs/escuchar_agente.php @@ -1,11 +1,26 @@ getUserExtension($issabel_user); +//usamos solo la primera extensión como la valida para escuchar aunque el usuario tenga varias extensiones segun ampliacion codigo hgmnetwork.com 20-01-2019 +$array_extensiones=explode(";",$extension_verificada); +$extension=$array_extensiones[0];//la primera por defecto +//echo " la extension verificada es $extension_escucha y el id de usuario de sesion es $issabel_user
"; //a la extension le quitamos el SIP/ o AGENT/ y dejamos solo el numero $extension=preg_replace("/(SIP\/|AGENT\/i)/","",$extension);//dejamos solo el numero //echo "
la extension del usuario es $array_extensiones[0] y la del usuario actual es ".$_GET['agente']."
";