SlideShare una empresa de Scribd logo
1 de 3
Descargar para leer sin conexión
Sistemas de VOIP – MODULO II
                                 Práctica 8 – Ing. José Córdova G.

 
                                        Aplicación AGI y CDR

La Empresa ABC S.A. recibe llamadas de clientes antiguos y nuevos. Se solicita que los
clientes nuevos (llaman por primera vez) sean atendidos por un agente de apertura de cuentas
y los clientes antiguos (han llamado antes) sean atendidos por un agente de cuentas
existentes. Mantienen un CDR en una DB de MySQL con la tabla “cdr” en la DB “asterisk”.

Se proporciona un script PHP que resuelve el problema para que sea usado como AGI. Se
solicita:

    1. Cree dos extensiones:
          a. 601, representará a un Agente que atiende clientes antiguos.
          b. 602, representará a un Agente que atiende clientes nuevos.
    2. Pruebe la funcionalidad solicitada.
    3. Explique brevemente las siguientes secciones de código:

              Sección de Código                                  Explicación

                  SECCION A1



                  SECCION A2



                  SECCION A3




#! /usr/bin/php ‐q 
 
<?php 
 
ob_implicit_flush(true); 
set_time_limit(6); 
$in = fopen("php://stdin","r"); 
 
$stdlog = fopen("/var/log/asterisk/acadi.log", "w"); 
 
function read() 
{ 
        global $in, $debug; 
        $input = str_replace("n", "", fgets($in, 4096)); 
        return $input; 
} 
 
function errlog($line) { 
  global $err; 
  echo "VERBOSE "$line"n"; 
} 
 
function write($line) { 
Sistemas de VOIP – MODULO II
                              Práctica 8 – Ing. José Córdova G.

 
  global $debug; 
  echo $line."n"; 
} 
 
function connect_db() 
{ 
$db_connection = mysql_connect ('localhost', 'root', 'labtelecom09') or die (mysql_error()); 
$db_select = mysql_select_db('asterisk') or die (mysql_error()); 
} 
//SECCION A1 
 
while ($env=read()) 
 { 
  $env = str_replace(""","",$env); 
  $s = split(": ",$env); 
  $agi[str_replace("agi_","",$s[0])] = trim($s[1]); 
     if ($env == "") 
        { 
     break; 
    } 
 } 
 
//FIN SECCION A1 
 
$cli = $agi[callerid]; 
$exten= $agi[extension]; 
 
connect_db(); 
 
//SECCION A2 
 
$query1 = "SELECT src FROM cdr WHERE src = '$cli' "; 
 
//FIN SECCION A2 
 
$query_result1 = @mysql_query($query1); 
$row_count = mysql_num_rows($query_result1); 
$row1 = @mysql_fetch_array ($query_result1); 
 
//SECCION A3 
If ($row_count !=0 ) {  //registro ya existe 
 
write ("SET CONTEXT internal"); 
write ("EXEC GoTO 601|1"); // grupo de extensiones para clientes antiguos 
 
} 
Else { // registro no existe en nuestra base, entonces es un cliente nuevo 
 
write ("SET CONTEXT internal"); 
write ("EXEC GoTO 602|1");  //grupo de extensiones para clientes nuevos 
 
   } 
Sistemas de VOIP – MODULO II
                                  Práctica 8 – Ing. José Córdova G.

 
//FIN SECCION A3 
 
// clean up file handlers etc. 
fclose($in); 
fclose($stdlog); 
 
exit; 
?>  

Más contenido relacionado

Similar a Practica 8

la mejor forma de Conectar c# con mysql con archivos de configuracion
 la mejor forma de Conectar c# con mysql con archivos de configuracion  la mejor forma de Conectar c# con mysql con archivos de configuracion
la mejor forma de Conectar c# con mysql con archivos de configuracion juandavid1118
 
Securizando por construcción mediante MDE
Securizando por construcción mediante MDESecurizando por construcción mediante MDE
Securizando por construcción mediante MDEPedro J. Molina
 
node-db: La excusa perfecta para hablar de C++ y Node.js
node-db: La excusa perfecta para hablar de C++ y Node.jsnode-db: La excusa perfecta para hablar de C++ y Node.js
node-db: La excusa perfecta para hablar de C++ y Node.jsMariano Iglesias
 
Tecnologías para microservicios
Tecnologías para microserviciosTecnologías para microservicios
Tecnologías para microserviciosPedro J. Molina
 
Taller IA 2A - Azure Cognitive Search
Taller IA 2A - Azure Cognitive SearchTaller IA 2A - Azure Cognitive Search
Taller IA 2A - Azure Cognitive SearchLuis Beltran
 
Reportes En J Developer Parte 1 Y 2
Reportes En J Developer   Parte 1 Y 2Reportes En J Developer   Parte 1 Y 2
Reportes En J Developer Parte 1 Y 2Steven Gomez
 
Cómo explotar EternalBlue en Windows Server 2012 R2
Cómo explotar EternalBlue en Windows Server 2012 R2Cómo explotar EternalBlue en Windows Server 2012 R2
Cómo explotar EternalBlue en Windows Server 2012 R2Telefónica
 
Fundamento de computadores- Motorola 68000
Fundamento de computadores- Motorola 68000Fundamento de computadores- Motorola 68000
Fundamento de computadores- Motorola 68000Alberto Gonzalez Isorna
 
Explique 7 razones por las cuales considera conveniente el uso de las funcion...
Explique 7 razones por las cuales considera conveniente el uso de las funcion...Explique 7 razones por las cuales considera conveniente el uso de las funcion...
Explique 7 razones por las cuales considera conveniente el uso de las funcion...Adrian Ascanio
 
A1 u1-16230227
A1 u1-16230227A1 u1-16230227
A1 u1-16230227erikalejo
 
27.2.12 Lab - Interpret HTTP and DNS Data to Isolate Threat Actor.docx
27.2.12 Lab - Interpret HTTP and DNS Data to Isolate Threat Actor.docx27.2.12 Lab - Interpret HTTP and DNS Data to Isolate Threat Actor.docx
27.2.12 Lab - Interpret HTTP and DNS Data to Isolate Threat Actor.docxjesus521837
 
Servicios web en Java, PHP, Perl y Google
Servicios web en Java, PHP, Perl y GoogleServicios web en Java, PHP, Perl y Google
Servicios web en Java, PHP, Perl y GoogleArmando Nuñez Ramos
 
Fundamentos Redes de Datos
Fundamentos Redes de DatosFundamentos Redes de Datos
Fundamentos Redes de Datosmoyamarinrodri
 
Configuración del wep en un router inalámbrico
Configuración del wep en un router inalámbricoConfiguración del wep en un router inalámbrico
Configuración del wep en un router inalámbricoEduardo Sanchez Piña
 

Similar a Practica 8 (20)

Glosario
GlosarioGlosario
Glosario
 
la mejor forma de Conectar c# con mysql con archivos de configuracion
 la mejor forma de Conectar c# con mysql con archivos de configuracion  la mejor forma de Conectar c# con mysql con archivos de configuracion
la mejor forma de Conectar c# con mysql con archivos de configuracion
 
Securizando por construcción mediante MDE
Securizando por construcción mediante MDESecurizando por construcción mediante MDE
Securizando por construcción mediante MDE
 
node-db: La excusa perfecta para hablar de C++ y Node.js
node-db: La excusa perfecta para hablar de C++ y Node.jsnode-db: La excusa perfecta para hablar de C++ y Node.js
node-db: La excusa perfecta para hablar de C++ y Node.js
 
Tecnologías para microservicios
Tecnologías para microserviciosTecnologías para microservicios
Tecnologías para microservicios
 
Taller IA 2A - Azure Cognitive Search
Taller IA 2A - Azure Cognitive SearchTaller IA 2A - Azure Cognitive Search
Taller IA 2A - Azure Cognitive Search
 
Reportes En J Developer Parte 1 Y 2
Reportes En J Developer   Parte 1 Y 2Reportes En J Developer   Parte 1 Y 2
Reportes En J Developer Parte 1 Y 2
 
Cómo explotar EternalBlue en Windows Server 2012 R2
Cómo explotar EternalBlue en Windows Server 2012 R2Cómo explotar EternalBlue en Windows Server 2012 R2
Cómo explotar EternalBlue en Windows Server 2012 R2
 
Rails intro
Rails introRails intro
Rails intro
 
Conferencia universidad 2010
Conferencia universidad 2010Conferencia universidad 2010
Conferencia universidad 2010
 
Fundamento de computadores- Motorola 68000
Fundamento de computadores- Motorola 68000Fundamento de computadores- Motorola 68000
Fundamento de computadores- Motorola 68000
 
Explique 7 razones por las cuales considera conveniente el uso de las funcion...
Explique 7 razones por las cuales considera conveniente el uso de las funcion...Explique 7 razones por las cuales considera conveniente el uso de las funcion...
Explique 7 razones por las cuales considera conveniente el uso de las funcion...
 
A1 u1-16230227
A1 u1-16230227A1 u1-16230227
A1 u1-16230227
 
27.2.12 Lab - Interpret HTTP and DNS Data to Isolate Threat Actor.docx
27.2.12 Lab - Interpret HTTP and DNS Data to Isolate Threat Actor.docx27.2.12 Lab - Interpret HTTP and DNS Data to Isolate Threat Actor.docx
27.2.12 Lab - Interpret HTTP and DNS Data to Isolate Threat Actor.docx
 
Servicios web en Java, PHP, Perl y Google
Servicios web en Java, PHP, Perl y GoogleServicios web en Java, PHP, Perl y Google
Servicios web en Java, PHP, Perl y Google
 
Servicios web
Servicios webServicios web
Servicios web
 
Servicios web
Servicios webServicios web
Servicios web
 
Fundamentos Redes de Datos
Fundamentos Redes de DatosFundamentos Redes de Datos
Fundamentos Redes de Datos
 
Configuración del wep en un router inalámbrico
Configuración del wep en un router inalámbricoConfiguración del wep en un router inalámbrico
Configuración del wep en un router inalámbrico
 
Glosario informático
Glosario informáticoGlosario informático
Glosario informático
 

Practica 8

  • 1. Sistemas de VOIP – MODULO II Práctica 8 – Ing. José Córdova G.   Aplicación AGI y CDR La Empresa ABC S.A. recibe llamadas de clientes antiguos y nuevos. Se solicita que los clientes nuevos (llaman por primera vez) sean atendidos por un agente de apertura de cuentas y los clientes antiguos (han llamado antes) sean atendidos por un agente de cuentas existentes. Mantienen un CDR en una DB de MySQL con la tabla “cdr” en la DB “asterisk”. Se proporciona un script PHP que resuelve el problema para que sea usado como AGI. Se solicita: 1. Cree dos extensiones: a. 601, representará a un Agente que atiende clientes antiguos. b. 602, representará a un Agente que atiende clientes nuevos. 2. Pruebe la funcionalidad solicitada. 3. Explique brevemente las siguientes secciones de código: Sección de Código Explicación SECCION A1 SECCION A2 SECCION A3 #! /usr/bin/php ‐q    <?php    ob_implicit_flush(true);  set_time_limit(6);  $in = fopen("php://stdin","r");    $stdlog = fopen("/var/log/asterisk/acadi.log", "w");    function read()  {          global $in, $debug;          $input = str_replace("n", "", fgets($in, 4096));          return $input;  }    function errlog($line) {    global $err;    echo "VERBOSE "$line"n";  }    function write($line) { 
  • 2. Sistemas de VOIP – MODULO II Práctica 8 – Ing. José Córdova G.     global $debug;    echo $line."n";  }    function connect_db()  {  $db_connection = mysql_connect ('localhost', 'root', 'labtelecom09') or die (mysql_error());  $db_select = mysql_select_db('asterisk') or die (mysql_error());  }  //SECCION A1    while ($env=read())   {    $env = str_replace(""","",$env);    $s = split(": ",$env);    $agi[str_replace("agi_","",$s[0])] = trim($s[1]);       if ($env == "")          {       break;      }   }    //FIN SECCION A1    $cli = $agi[callerid];  $exten= $agi[extension];    connect_db();    //SECCION A2    $query1 = "SELECT src FROM cdr WHERE src = '$cli' ";    //FIN SECCION A2    $query_result1 = @mysql_query($query1);  $row_count = mysql_num_rows($query_result1);  $row1 = @mysql_fetch_array ($query_result1);    //SECCION A3  If ($row_count !=0 ) {  //registro ya existe    write ("SET CONTEXT internal");  write ("EXEC GoTO 601|1"); // grupo de extensiones para clientes antiguos    }  Else { // registro no existe en nuestra base, entonces es un cliente nuevo    write ("SET CONTEXT internal");  write ("EXEC GoTO 602|1");  //grupo de extensiones para clientes nuevos       } 
  • 3. Sistemas de VOIP – MODULO II Práctica 8 – Ing. José Córdova G.   //FIN SECCION A3    // clean up file handlers etc.  fclose($in);  fclose($stdlog);    exit;  ?>