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

PDF
Practica 8
PPT
Help para os cursos no Entremeios
PDF
PPTX
Ayudémoslos
PPT
Gestalt
PPTX
Esquizofrenia
PDF
03 test antonimlawankata
PDF
TRI Company Overview 2016
Practica 8
Help para os cursos no Entremeios
Ayudémoslos
Gestalt
Esquizofrenia
03 test antonimlawankata
TRI Company Overview 2016

Destacado (14)

PDF
Relatório final
PDF
Relatorio Orientação Política Orçamental
PDF
Nutrametrix overview
PPTX
Shah Profile
PPSX
La tierra
PPT
Ser Feliz
 
PDF
Road Tripping Through Alberta's Rocky Mountains
PPSX
Help End Whaling
DOCX
DOC
Propostas de alteração PS
PDF
Practica 8
PDF
04 test padananhubungan
PDF
Catalogue eng
PDF
Superiorliving
Relatório final
Relatorio Orientação Política Orçamental
Nutrametrix overview
Shah Profile
La tierra
Ser Feliz
 
Road Tripping Through Alberta's Rocky Mountains
Help End Whaling
Propostas de alteração PS
Practica 8
04 test padananhubungan
Catalogue eng
Superiorliving
Publicidad

Similar a Practica 8 (20)

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

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