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']."
";