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; 
?>  



                                              PARTE II

    1. La empresa ha cambiado su personal, cambie la funcionalidad de la PBX para cumplir
       las siguientes condiciones:
           a. Los agentes para clientes nuevos son 2 y atienden localmente.
           b. Los agentes para clientes antiguos son atendidos mediante una troncal digital
                en otra central telefónica.

Más contenido relacionado

La actualidad más candente (19)

Teoria punteros
Teoria punterosTeoria punteros
Teoria punteros
 
Ejemplo de aplicación cliente-servidor en C#
Ejemplo de aplicación cliente-servidor  en C#Ejemplo de aplicación cliente-servidor  en C#
Ejemplo de aplicación cliente-servidor en C#
 
Cómo domar SonataAdminBundle
Cómo domar SonataAdminBundleCómo domar SonataAdminBundle
Cómo domar SonataAdminBundle
 
50 Php. Funciones Que Devuelven Valores
50 Php. Funciones Que Devuelven Valores50 Php. Funciones Que Devuelven Valores
50 Php. Funciones Que Devuelven Valores
 
Profesora Asociada Facultad de Ingeniería UTB
Profesora Asociada Facultad de Ingeniería UTBProfesora Asociada Facultad de Ingeniería UTB
Profesora Asociada Facultad de Ingeniería UTB
 
PRACTICA 13 ALICE
PRACTICA 13 ALICEPRACTICA 13 ALICE
PRACTICA 13 ALICE
 
Herencia y polimorfismo
Herencia y polimorfismoHerencia y polimorfismo
Herencia y polimorfismo
 
Ejemplos robert miguel
Ejemplos robert miguelEjemplos robert miguel
Ejemplos robert miguel
 
PRACTICA 13 DE ALICE
PRACTICA 13 DE ALICEPRACTICA 13 DE ALICE
PRACTICA 13 DE ALICE
 
Practica alice p13 v1
Practica alice p13 v1Practica alice p13 v1
Practica alice p13 v1
 
32773 php-basico
32773 php-basico32773 php-basico
32773 php-basico
 
Arreglos. lidia
Arreglos. lidiaArreglos. lidia
Arreglos. lidia
 
Clase 2 de PHP
Clase 2 de PHPClase 2 de PHP
Clase 2 de PHP
 
Ejercicios java
Ejercicios javaEjercicios java
Ejercicios java
 
Tap u2-componentes y librerias-programa para cifrar y descifrar cadenas
Tap u2-componentes y librerias-programa para cifrar y descifrar cadenasTap u2-componentes y librerias-programa para cifrar y descifrar cadenas
Tap u2-componentes y librerias-programa para cifrar y descifrar cadenas
 
Api De Google Calendar
Api De Google CalendarApi De Google Calendar
Api De Google Calendar
 
05. Creando e implementando objetos y métodos
05. Creando e implementando objetos y métodos05. Creando e implementando objetos y métodos
05. Creando e implementando objetos y métodos
 
S1-EDD-1.1 Punteros a estructuras
S1-EDD-1.1 Punteros a estructurasS1-EDD-1.1 Punteros a estructuras
S1-EDD-1.1 Punteros a estructuras
 
Programas en netbeans
Programas en netbeansProgramas en netbeans
Programas en netbeans
 

Destacado

MATLAB Febrero - Practica 3
MATLAB Febrero - Practica 3MATLAB Febrero - Practica 3
MATLAB Febrero - Practica 3Jose Cordova
 
Practica 2 - VOIP II
Practica 2 - VOIP IIPractica 2 - VOIP II
Practica 2 - VOIP IIJose Cordova
 
MATLAB Febrero - Practica 2
MATLAB Febrero - Practica 2MATLAB Febrero - Practica 2
MATLAB Febrero - Practica 2Jose Cordova
 
MATLAB Febrero - Practica 4
MATLAB Febrero - Practica 4MATLAB Febrero - Practica 4
MATLAB Febrero - Practica 4Jose Cordova
 
MATLAB Marzo - Examen
MATLAB Marzo - ExamenMATLAB Marzo - Examen
MATLAB Marzo - ExamenJose Cordova
 
MATLAB Examen Junio 2010
MATLAB Examen Junio 2010MATLAB Examen Junio 2010
MATLAB Examen Junio 2010Jose Cordova
 
Practica 3 Modified
Practica 3 ModifiedPractica 3 Modified
Practica 3 ModifiedJose Cordova
 
Practica 1 - VOIP II
Practica 1 - VOIP IIPractica 1 - VOIP II
Practica 1 - VOIP IIJose Cordova
 
EF - Indice de Libertad Economica 2006
EF - Indice de Libertad Economica 2006EF - Indice de Libertad Economica 2006
EF - Indice de Libertad Economica 2006Jose Cordova
 
VOIP Practica 1 - Marzo
VOIP Practica 1 - MarzoVOIP Practica 1 - Marzo
VOIP Practica 1 - MarzoJose Cordova
 
VOIP Practica 2 - Marzo
VOIP Practica 2 - MarzoVOIP Practica 2 - Marzo
VOIP Practica 2 - MarzoJose Cordova
 
Using Asterisk to Create "Her"
Using Asterisk to Create "Her"Using Asterisk to Create "Her"
Using Asterisk to Create "Her"Mojo Lingo
 
MATLAB Examen - Enero
MATLAB Examen - EneroMATLAB Examen - Enero
MATLAB Examen - EneroJose Cordova
 

Destacado (20)

Practica 5
Practica 5Practica 5
Practica 5
 
Practica 6
Practica 6Practica 6
Practica 6
 
MATLAB Febrero - Practica 3
MATLAB Febrero - Practica 3MATLAB Febrero - Practica 3
MATLAB Febrero - Practica 3
 
Practica 4
Practica 4Practica 4
Practica 4
 
Practica 2 - VOIP II
Practica 2 - VOIP IIPractica 2 - VOIP II
Practica 2 - VOIP II
 
MATLAB Febrero - Practica 2
MATLAB Febrero - Practica 2MATLAB Febrero - Practica 2
MATLAB Febrero - Practica 2
 
MATLAB Febrero - Practica 4
MATLAB Febrero - Practica 4MATLAB Febrero - Practica 4
MATLAB Febrero - Practica 4
 
MATLAB Marzo - Examen
MATLAB Marzo - ExamenMATLAB Marzo - Examen
MATLAB Marzo - Examen
 
MATLAB Examen Junio 2010
MATLAB Examen Junio 2010MATLAB Examen Junio 2010
MATLAB Examen Junio 2010
 
Practica 3 Modified
Practica 3 ModifiedPractica 3 Modified
Practica 3 Modified
 
Practica 1 - VOIP II
Practica 1 - VOIP IIPractica 1 - VOIP II
Practica 1 - VOIP II
 
EF - Indice de Libertad Economica 2006
EF - Indice de Libertad Economica 2006EF - Indice de Libertad Economica 2006
EF - Indice de Libertad Economica 2006
 
VOIP Practica 1 - Marzo
VOIP Practica 1 - MarzoVOIP Practica 1 - Marzo
VOIP Practica 1 - Marzo
 
VOIP Practica 2 - Marzo
VOIP Practica 2 - MarzoVOIP Practica 2 - Marzo
VOIP Practica 2 - Marzo
 
Cohon Gene
Cohon GeneCohon Gene
Cohon Gene
 
Using Asterisk to Create "Her"
Using Asterisk to Create "Her"Using Asterisk to Create "Her"
Using Asterisk to Create "Her"
 
VOIP II
VOIP IIVOIP II
VOIP II
 
Asterisk World (January 2014) - Taking Enterprise Telephony into the Web World
Asterisk World (January 2014) - Taking Enterprise Telephony into the Web WorldAsterisk World (January 2014) - Taking Enterprise Telephony into the Web World
Asterisk World (January 2014) - Taking Enterprise Telephony into the Web World
 
MATLAB Examen - Enero
MATLAB Examen - EneroMATLAB Examen - Enero
MATLAB Examen - Enero
 
Practica 7
Practica 7Practica 7
Practica 7
 

Similar a Practica 8

Programa que almacena en una base de datos las características de un carro co...
Programa que almacena en una base de datos las características de un carro co...Programa que almacena en una base de datos las características de un carro co...
Programa que almacena en una base de datos las características de un carro co...jbersosa
 
Informe grupal f_arinango_ cuenca
Informe grupal f_arinango_ cuencaInforme grupal f_arinango_ cuenca
Informe grupal f_arinango_ cuencapaulcuenca9
 
Jose Selvi - Adaptando exploits para evitar la frustración [RootedSatellite V...
Jose Selvi - Adaptando exploits para evitar la frustración [RootedSatellite V...Jose Selvi - Adaptando exploits para evitar la frustración [RootedSatellite V...
Jose Selvi - Adaptando exploits para evitar la frustración [RootedSatellite V...RootedCON
 
Tecnologías para microservicios
Tecnologías para microserviciosTecnologías para microservicios
Tecnologías para microserviciosPedro J. Molina
 
Configuración Script Usuarios Masivos Windows Server 2012 R2
Configuración Script Usuarios Masivos Windows Server 2012 R2Configuración Script Usuarios Masivos Windows Server 2012 R2
Configuración Script Usuarios Masivos Windows Server 2012 R2cyberleon95
 
Documentación de pruebas del software
Documentación de pruebas del softwareDocumentación de pruebas del software
Documentación de pruebas del softwareYenny Aldana
 
De symfony 2013 dr. jenkins y mr. hyde - slides
De symfony 2013   dr. jenkins y mr. hyde - slidesDe symfony 2013   dr. jenkins y mr. hyde - slides
De symfony 2013 dr. jenkins y mr. hyde - slidesQuique Torras
 
De symfony 2013 dr. jenkins y mr. hyde - slides-842359017
De symfony 2013   dr. jenkins y mr. hyde - slides-842359017De symfony 2013   dr. jenkins y mr. hyde - slides-842359017
De symfony 2013 dr. jenkins y mr. hyde - slides-842359017Eduardo Gulias Davis
 
Manual script usuarios masivos
Manual script usuarios masivosManual script usuarios masivos
Manual script usuarios masivosYimy Pérez Medina
 
Desarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQueryDesarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQueryJavier P.
 
Lw2010 Pedro Valera
Lw2010 Pedro ValeraLw2010 Pedro Valera
Lw2010 Pedro Valeraguestf280e2
 
Lw2010 - Uso De La Programacion En Linux Para La Seguridad En Redes
Lw2010 - Uso De La Programacion En Linux Para La Seguridad En RedesLw2010 - Uso De La Programacion En Linux Para La Seguridad En Redes
Lw2010 - Uso De La Programacion En Linux Para La Seguridad En Redesguest5d7f33c
 

Similar a Practica 8 (20)

Practica 8
Practica 8Practica 8
Practica 8
 
Programa que almacena en una base de datos las características de un carro co...
Programa que almacena en una base de datos las características de un carro co...Programa que almacena en una base de datos las características de un carro co...
Programa que almacena en una base de datos las características de un carro co...
 
Informe grupal f_arinango_ cuenca
Informe grupal f_arinango_ cuencaInforme grupal f_arinango_ cuenca
Informe grupal f_arinango_ cuenca
 
EXAMEN
EXAMENEXAMEN
EXAMEN
 
Doctrine2 sf2Vigo
Doctrine2 sf2VigoDoctrine2 sf2Vigo
Doctrine2 sf2Vigo
 
Jose Selvi - Adaptando exploits para evitar la frustración [RootedSatellite V...
Jose Selvi - Adaptando exploits para evitar la frustración [RootedSatellite V...Jose Selvi - Adaptando exploits para evitar la frustración [RootedSatellite V...
Jose Selvi - Adaptando exploits para evitar la frustración [RootedSatellite V...
 
Tecnologías para microservicios
Tecnologías para microserviciosTecnologías para microservicios
Tecnologías para microservicios
 
Configuración Script Usuarios Masivos Windows Server 2012 R2
Configuración Script Usuarios Masivos Windows Server 2012 R2Configuración Script Usuarios Masivos Windows Server 2012 R2
Configuración Script Usuarios Masivos Windows Server 2012 R2
 
Documentación de pruebas del software
Documentación de pruebas del softwareDocumentación de pruebas del software
Documentación de pruebas del software
 
De symfony 2013 dr. jenkins y mr. hyde - slides
De symfony 2013   dr. jenkins y mr. hyde - slidesDe symfony 2013   dr. jenkins y mr. hyde - slides
De symfony 2013 dr. jenkins y mr. hyde - slides
 
De symfony 2013 dr. jenkins y mr. hyde - slides-842359017
De symfony 2013   dr. jenkins y mr. hyde - slides-842359017De symfony 2013   dr. jenkins y mr. hyde - slides-842359017
De symfony 2013 dr. jenkins y mr. hyde - slides-842359017
 
Seguridad En Programación
Seguridad En ProgramaciónSeguridad En Programación
Seguridad En Programación
 
Manual script usuarios masivos
Manual script usuarios masivosManual script usuarios masivos
Manual script usuarios masivos
 
Servicios web
Servicios webServicios web
Servicios web
 
Glosario
GlosarioGlosario
Glosario
 
Servicios web
Servicios webServicios web
Servicios web
 
Desarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQueryDesarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQuery
 
6.funciones y recursividad en c++
6.funciones y recursividad en c++6.funciones y recursividad en c++
6.funciones y recursividad en c++
 
Lw2010 Pedro Valera
Lw2010 Pedro ValeraLw2010 Pedro Valera
Lw2010 Pedro Valera
 
Lw2010 - Uso De La Programacion En Linux Para La Seguridad En Redes
Lw2010 - Uso De La Programacion En Linux Para La Seguridad En RedesLw2010 - Uso De La Programacion En Linux Para La Seguridad En Redes
Lw2010 - Uso De La Programacion En Linux Para La Seguridad En Redes
 

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;  ?>   PARTE II 1. La empresa ha cambiado su personal, cambie la funcionalidad de la PBX para cumplir las siguientes condiciones: a. Los agentes para clientes nuevos son 2 y atienden localmente. b. Los agentes para clientes antiguos son atendidos mediante una troncal digital en otra central telefónica.