SlideShare ist ein Scribd-Unternehmen logo
1 von 15
Downloaden Sie, um offline zu lesen
Extendiendo Elastix
con AGI's
Que es un AGI?
• Asterisk Gateway Interface por sus siglas
en ingles
• Puede ser escrito en cualquier lenguaje
• Es ejecutado desde el dialplan
Ejemplos de uso de AGI's
• Encuestas automatizadas
• Consulta de saldos y pagos
• Encuestas de satisfacción
• Automatización de Pagos
Invocando un AGI
exten => 123,1,Answer()
same => n,AGI(hola.php)
same => n,Hangup()
Variables por defecto
• agi_request - Nombre del AGI
• agi_channel - Canal originante
• agi_language - Lenguaje del canal
• agi_type - Tipo de canal (SIP, IAX, Dahdi)
• agi_uniqueid - Unique id Llamada
• agi_callerid - Caller ID
• agi_dnid - DID
• agi_context - Contexto de origen
Invocando un AGI con variables
personalizadas
exten => 123,1,Answer()
same => n,Set(VAR1=456)
same => n,AGI(hola.php,${VAR1})
same => n,Hangup()
Programando un AGI - Elementos Básicos
#!/usr/bin/php -q
<?php
set_time_limit(30);
require_once "phpagi.php";
?>
Tiempo máximo de ejeccion
Inicio de código PHP
Importación de Libreria
Fin de código PHP
Programando un AGI - Conexión a BD
#!/usr/bin/php -q
<?php
set_time_limit(30);
require_once "phpagi.php";
$agi = new AGI();
$agi->answer();
$conexion = mysql_connect("host","user","pass") or die(mysql_error());
mysql_select_db($db, $conexion);
?>
Responde el canal
Realizamos Conexión a BD
Programando un AGI - Obteniendo Variables
#!/usr/bin/php -q
<?php
set_time_limit(30);
require_once "phpagi.php";
$agi = new AGI();
$agi->answer();
$conexion = mysql_connect("host","user","pass") or die(mysql_error());
mysql_select_db(encuesta, $conexion);
#Obtenemos CallerID
$callernum=$agi->get_variable("CALLERID(number)");
$callernum=$callernum['data'];
$var1=$argv[1];
?>
Obtenemos variable de canal
Variable Personalizada
Programando un AGI - El programa
$error=0;
$loop =0;
do{
$do=0;
$arr_answer = $agi->get_data("custom/q_survey",5000,1);
$answer = $arr_answer['result'];
if ($answer < 1 || $answer > 5) {
$agi->exec('playback',"custom/inv_answer");
$error ++;
$do=1;
}
if ($error > $loop) {
$agi->exec('playback',"custom/end_invalid");
$agi->hangup();
}
elseif($do == 0){
$row3 = mysql_query("INSERT INTO table_q (answer, caller_id) VALUES ('$answer', '$callernum') ");
$agi->exec('playback',"custom/end_survey");
$agi->hangup();
}
}while ($do == 1);
Audio Pregunta
Evento resuesta Inválida
Guardamos Resultado
Programando un AGI - Terminado
#!/usr/bin/php -q
<?php
set_time_limit(30);
require_once "phpagi.php";
$agi = new AGI();
$agi->answer();
$conexion = mysql_connect("host","user","pass") or die(mysql_error());
mysql_select_db(encuesta, $conexion);
#Obtenemos CallerID
$callernum=$agi->get_variable("CALLERID(number)");
$callernum=$callernum['data'];
$error=0;
do{
$do=0;
$arr_answer = $agi->get_data("custom/$q_survey",5000,1);
$answer = $arr_answer['result'];
if ($answer < $min_val || $answer > $max_val) {
$agi->exec('playback',"custom/$inv_answer");
$error ++;
$do=1;
}
if ($error > $loop) {
$agi->exec('playback',"custom/$end_invalid");
$agi->hangup();
}
elseif($do == 0){
$row3 = mysql_query("INSERT INTO $table (answer, caller_id) VALUES ('$answer', '$callernum') ");
$agi->exec('playback',"custom/$end_survey");
$agi->hangup();
}
}while ($do == 1);
?>
Programando un AGI - Consulta de Saldo
#!/usr/bin/php -q
<?php
set_time_limit(30);
require_once "phpagi.php";
$agi = new AGI();
$agi->answer();
$conexion = mysql_connect("host","user","pass") or die(mysql_error());
mysql_select_db(saldo, $conexion);
$arr_answer = $agi->get_data("custom/cliente",5000,10);
$answer = $arr_answer['result'];
$query_saldo = mysql_query("SELECT saldo FROM saldos WHERE id='$canswer' ");
$saldo = mysql_fetch_row($query_saldo);
$saldo = $saldo[0];
$agi->set_variable("SALDO", "$saldo");
?>
Solicitamos Numero Cliente
Consultamos Saldo
Asignamos Valor a Variable
Programando un AGI - Consulta de Saldo
exten => 123,1,AGI(saldo.php)
same => n,Playback(custom/susaldo)
same => n,SayNumber(${SALDO})
same => n,Playback(custom/pesos)
same => n,Hangup()
Programando un AGI - Consulta de Saldo
exten => 123,1,AGI(saldo.php)
same => n,Swift(Su saldo al día de hoy
es de ${SALDO} pesos, Gracias)
same => n,Hangup()
Gracias por su Atención!
Augusto Sepúlveda S.H.
Correo: augusto.sepulveda@nextortelecom.com
Skype: augustosep
Nextor Telecom
Leibnitz 47 - 105 G Salinas Varona 215
Col Anzurez, México DF Burocratas del Edo, Monterrey NL
+525514540020 +528114540020
http://www.vozero.mx
http://mangoanalytics.orghttp://www.nextortelecom.com

Weitere ähnliche Inhalte

Was ist angesagt?

Lecture 22 What inside the Router.pptx
Lecture 22 What inside the Router.pptxLecture 22 What inside the Router.pptx
Lecture 22 What inside the Router.pptx
HanzlaNaveed1
 
Android audio system(audioplicy_service)
Android audio system(audioplicy_service)Android audio system(audioplicy_service)
Android audio system(audioplicy_service)
fefe7270
 

Was ist angesagt? (20)

Lecture 22 What inside the Router.pptx
Lecture 22 What inside the Router.pptxLecture 22 What inside the Router.pptx
Lecture 22 What inside the Router.pptx
 
Wallix AdminBastion - Privileged User Management &amp; Access Control
Wallix AdminBastion - Privileged User Management &amp; Access ControlWallix AdminBastion - Privileged User Management &amp; Access Control
Wallix AdminBastion - Privileged User Management &amp; Access Control
 
Alphorm.com : Formation Active directory 2008 R2 (70-640)
Alphorm.com : Formation Active directory 2008 R2 (70-640)Alphorm.com : Formation Active directory 2008 R2 (70-640)
Alphorm.com : Formation Active directory 2008 R2 (70-640)
 
Platform Drivers
Platform DriversPlatform Drivers
Platform Drivers
 
MWCP19 Cybersécurité et M365 en action
MWCP19 Cybersécurité et M365 en actionMWCP19 Cybersécurité et M365 en action
MWCP19 Cybersécurité et M365 en action
 
Api pour les nuls
Api pour les nulsApi pour les nuls
Api pour les nuls
 
Monitoramento de Bancos de Dados MS SQL Server com Zabbix - SQL Technology Da...
Monitoramento de Bancos de Dados MS SQL Server com Zabbix - SQL Technology Da...Monitoramento de Bancos de Dados MS SQL Server com Zabbix - SQL Technology Da...
Monitoramento de Bancos de Dados MS SQL Server com Zabbix - SQL Technology Da...
 
VMware Site Recovery Manager
VMware Site Recovery ManagerVMware Site Recovery Manager
VMware Site Recovery Manager
 
Hunt for Domain Controller : Active Directory Pentesting Session
Hunt for Domain Controller : ActiveDirectory Pentesting SessionHunt for Domain Controller : ActiveDirectory Pentesting Session
Hunt for Domain Controller : Active Directory Pentesting Session
 
Alphorm.com Formation FortiManager : Installation et configuration
Alphorm.com Formation FortiManager : Installation et configurationAlphorm.com Formation FortiManager : Installation et configuration
Alphorm.com Formation FortiManager : Installation et configuration
 
U boot-boot-flow
U boot-boot-flowU boot-boot-flow
U boot-boot-flow
 
Linux Kernel I/O Schedulers
Linux Kernel I/O SchedulersLinux Kernel I/O Schedulers
Linux Kernel I/O Schedulers
 
Uscis forms 031210[1]
Uscis forms 031210[1]Uscis forms 031210[1]
Uscis forms 031210[1]
 
Active directory
Active directoryActive directory
Active directory
 
Atelier Technique WALLIX ACSS 2018
Atelier Technique WALLIX ACSS 2018Atelier Technique WALLIX ACSS 2018
Atelier Technique WALLIX ACSS 2018
 
Qemu
QemuQemu
Qemu
 
Linux device drivers
Linux device driversLinux device drivers
Linux device drivers
 
Android crash debugging
Android crash debuggingAndroid crash debugging
Android crash debugging
 
Android audio system(audioplicy_service)
Android audio system(audioplicy_service)Android audio system(audioplicy_service)
Android audio system(audioplicy_service)
 
Domain Name System
Domain Name SystemDomain Name System
Domain Name System
 

Andere mochten auch

Charla sobre Desarrollo de Aplicaciones en Asterisk con AGI para el ENLI 2012
Charla sobre Desarrollo de Aplicaciones en Asterisk con AGI para el ENLI 2012Charla sobre Desarrollo de Aplicaciones en Asterisk con AGI para el ENLI 2012
Charla sobre Desarrollo de Aplicaciones en Asterisk con AGI para el ENLI 2012
Rommel León
 
Protegiendo SIP y SSH con Fail2ban en Elastix
Protegiendo SIP y SSH con Fail2ban en ElastixProtegiendo SIP y SSH con Fail2ban en Elastix
Protegiendo SIP y SSH con Fail2ban en Elastix
PaloSanto Solutions
 

Andere mochten auch (20)

Encuestas telefónicas automáticas por IVR en Elastix con iSurveyX
Encuestas telefónicas automáticas por IVR en Elastix con iSurveyXEncuestas telefónicas automáticas por IVR en Elastix con iSurveyX
Encuestas telefónicas automáticas por IVR en Elastix con iSurveyX
 
Asterisk en los Call Centers - Encuesta Satisfacción clientes
Asterisk en los Call Centers - Encuesta Satisfacción clientesAsterisk en los Call Centers - Encuesta Satisfacción clientes
Asterisk en los Call Centers - Encuesta Satisfacción clientes
 
Charla sobre Desarrollo de Aplicaciones en Asterisk con AGI para el ENLI 2012
Charla sobre Desarrollo de Aplicaciones en Asterisk con AGI para el ENLI 2012Charla sobre Desarrollo de Aplicaciones en Asterisk con AGI para el ENLI 2012
Charla sobre Desarrollo de Aplicaciones en Asterisk con AGI para el ENLI 2012
 
laboratorios elaxtix
laboratorios elaxtixlaboratorios elaxtix
laboratorios elaxtix
 
Cómo configurar notificaciones en Elastix: Correos, Llamadas, SMS
Cómo configurar notificaciones en Elastix: Correos, Llamadas, SMSCómo configurar notificaciones en Elastix: Correos, Llamadas, SMS
Cómo configurar notificaciones en Elastix: Correos, Llamadas, SMS
 
Manual instalación y configuración de elastix para comnutación telefónica
Manual instalación y configuración de elastix para comnutación telefónicaManual instalación y configuración de elastix para comnutación telefónica
Manual instalación y configuración de elastix para comnutación telefónica
 
Elastix manual
Elastix manualElastix manual
Elastix manual
 
Call Center en Elastix
Call Center en ElastixCall Center en Elastix
Call Center en Elastix
 
Elastix slide book-ect(1)
Elastix  slide book-ect(1)Elastix  slide book-ect(1)
Elastix slide book-ect(1)
 
Programacion para televisión digital - mhp
Programacion para televisión digital - mhpProgramacion para televisión digital - mhp
Programacion para televisión digital - mhp
 
Integrando Elastix con Cepstral
Integrando Elastix con CepstralIntegrando Elastix con Cepstral
Integrando Elastix con Cepstral
 
Creación e implementación de una central telefónica VoIp en la institución de...
Creación e implementación de una central telefónica VoIp en la institución de...Creación e implementación de una central telefónica VoIp en la institución de...
Creación e implementación de una central telefónica VoIp en la institución de...
 
Protegiendo SIP y SSH con Fail2ban en Elastix
Protegiendo SIP y SSH con Fail2ban en ElastixProtegiendo SIP y SSH con Fail2ban en Elastix
Protegiendo SIP y SSH con Fail2ban en Elastix
 
Escarbando en el módulo Security de Elastix
Escarbando en el módulo Security de ElastixEscarbando en el módulo Security de Elastix
Escarbando en el módulo Security de Elastix
 
Curso alfresco 2010
Curso alfresco 2010Curso alfresco 2010
Curso alfresco 2010
 
SEMANA INNOVACUN
SEMANA INNOVACUNSEMANA INNOVACUN
SEMANA INNOVACUN
 
Precios curso 13 14
Precios curso 13 14Precios curso 13 14
Precios curso 13 14
 
Hoja de vida royman
Hoja de  vida royman Hoja de  vida royman
Hoja de vida royman
 
Cheatsheet de Freemat
Cheatsheet de FreematCheatsheet de Freemat
Cheatsheet de Freemat
 
Riyalu swaliheeen pdf
Riyalu swaliheeen pdfRiyalu swaliheeen pdf
Riyalu swaliheeen pdf
 

Ähnlich wie Extendiendo Elastix: AGIs para encuestas y consultas de datos (7)

Silex, desarrollo web ágil y profesional con PHP
Silex, desarrollo web ágil y profesional con PHPSilex, desarrollo web ágil y profesional con PHP
Silex, desarrollo web ágil y profesional con PHP
 
Introducción al microframework PHP Silex - Sergio Gómez - Betabeers Córdoba 0...
Introducción al microframework PHP Silex - Sergio Gómez - Betabeers Córdoba 0...Introducción al microframework PHP Silex - Sergio Gómez - Betabeers Córdoba 0...
Introducción al microframework PHP Silex - Sergio Gómez - Betabeers Córdoba 0...
 
Escribir plugins para Nagios en Perl
Escribir plugins para Nagios en PerlEscribir plugins para Nagios en Perl
Escribir plugins para Nagios en Perl
 
Practica 8
Practica 8Practica 8
Practica 8
 
04.3.asterisk agi
04.3.asterisk agi04.3.asterisk agi
04.3.asterisk agi
 
Un mundo sin if. generics al rescate
Un mundo sin if. generics al rescateUn mundo sin if. generics al rescate
Un mundo sin if. generics al rescate
 
Php2
Php2 Php2
Php2
 

Mehr von PaloSanto Solutions

Mehr von PaloSanto Solutions (20)

Tres componentes fundamentales de un buen PBX IP: seguridad, alta disponibili...
Tres componentes fundamentales de un buen PBX IP: seguridad, alta disponibili...Tres componentes fundamentales de un buen PBX IP: seguridad, alta disponibili...
Tres componentes fundamentales de un buen PBX IP: seguridad, alta disponibili...
 
Voip y Big Data, ¿Cómo aplicar analytics a la VoIP?
Voip y Big Data, ¿Cómo aplicar analytics a la VoIP?Voip y Big Data, ¿Cómo aplicar analytics a la VoIP?
Voip y Big Data, ¿Cómo aplicar analytics a la VoIP?
 
Innovative technology for universal communication designed to involve the (he...
Innovative technology for universal communication designed to involve the (he...Innovative technology for universal communication designed to involve the (he...
Innovative technology for universal communication designed to involve the (he...
 
Queuemetrics esencial, de la implementación a reportes avanzadas
Queuemetrics esencial, de la implementación a reportes avanzadasQueuemetrics esencial, de la implementación a reportes avanzadas
Queuemetrics esencial, de la implementación a reportes avanzadas
 
La evolución de la telefonía IP a comunicaciones unificadas
La evolución de la telefonía IP a comunicaciones unificadasLa evolución de la telefonía IP a comunicaciones unificadas
La evolución de la telefonía IP a comunicaciones unificadas
 
WebRTC … ¡vamos a discar!
WebRTC … ¡vamos a discar!WebRTC … ¡vamos a discar!
WebRTC … ¡vamos a discar!
 
Integrando encuestas automáticas con iSurveyX
Integrando encuestas automáticas con iSurveyXIntegrando encuestas automáticas con iSurveyX
Integrando encuestas automáticas con iSurveyX
 
Usando el módulo PIKE en Elastix MT
Usando el módulo PIKE en Elastix MTUsando el módulo PIKE en Elastix MT
Usando el módulo PIKE en Elastix MT
 
Todo lo lo que necesita saber para implementar FreePBX
Todo lo lo que necesita saber para implementar FreePBXTodo lo lo que necesita saber para implementar FreePBX
Todo lo lo que necesita saber para implementar FreePBX
 
Gestión de la Información de Desempeño con OpenNMS
Gestión de la Información de Desempeño con OpenNMSGestión de la Información de Desempeño con OpenNMS
Gestión de la Información de Desempeño con OpenNMS
 
Escalado y balanceo de carga de sistemas SIP
Escalado y balanceo de carga de sistemas SIPEscalado y balanceo de carga de sistemas SIP
Escalado y balanceo de carga de sistemas SIP
 
Elastix unified communications server cookbook
Elastix unified communications server cookbookElastix unified communications server cookbook
Elastix unified communications server cookbook
 
Seguridad en Asterisk: Un acercamiento detallado
Seguridad en Asterisk: Un acercamiento detalladoSeguridad en Asterisk: Un acercamiento detallado
Seguridad en Asterisk: Un acercamiento detallado
 
Dynamic calls with Text To Speech
Dynamic calls with Text To SpeechDynamic calls with Text To Speech
Dynamic calls with Text To Speech
 
Proceso de migración de telefonía tradicional a Elastix (Caso)
Proceso de migración de telefonía tradicional a Elastix (Caso)Proceso de migración de telefonía tradicional a Elastix (Caso)
Proceso de migración de telefonía tradicional a Elastix (Caso)
 
Building a new ecosystem for interoperable communications
Building a new ecosystem for interoperable communicationsBuilding a new ecosystem for interoperable communications
Building a new ecosystem for interoperable communications
 
Asterisk: the future is at REST
Asterisk: the future is at RESTAsterisk: the future is at REST
Asterisk: the future is at REST
 
Presentacion Hardware Elastix 2015 - Colombia
Presentacion Hardware Elastix 2015 - Colombia Presentacion Hardware Elastix 2015 - Colombia
Presentacion Hardware Elastix 2015 - Colombia
 
Voicemail Avanzado
Voicemail AvanzadoVoicemail Avanzado
Voicemail Avanzado
 
Módulo de Alta Disponibilidad de Elastix
Módulo de Alta Disponibilidad de ElastixMódulo de Alta Disponibilidad de Elastix
Módulo de Alta Disponibilidad de Elastix
 

Kürzlich hochgeladen

Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
AnnimoUno1
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
FagnerLisboa3
 

Kürzlich hochgeladen (15)

Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
Presentación de elementos de afilado con esmeril
Presentación de elementos de afilado con esmerilPresentación de elementos de afilado con esmeril
Presentación de elementos de afilado con esmeril
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
presentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.pptxpresentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.pptx
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 

Extendiendo Elastix: AGIs para encuestas y consultas de datos

  • 2. Que es un AGI? • Asterisk Gateway Interface por sus siglas en ingles • Puede ser escrito en cualquier lenguaje • Es ejecutado desde el dialplan
  • 3. Ejemplos de uso de AGI's • Encuestas automatizadas • Consulta de saldos y pagos • Encuestas de satisfacción • Automatización de Pagos
  • 4. Invocando un AGI exten => 123,1,Answer() same => n,AGI(hola.php) same => n,Hangup()
  • 5. Variables por defecto • agi_request - Nombre del AGI • agi_channel - Canal originante • agi_language - Lenguaje del canal • agi_type - Tipo de canal (SIP, IAX, Dahdi) • agi_uniqueid - Unique id Llamada • agi_callerid - Caller ID • agi_dnid - DID • agi_context - Contexto de origen
  • 6. Invocando un AGI con variables personalizadas exten => 123,1,Answer() same => n,Set(VAR1=456) same => n,AGI(hola.php,${VAR1}) same => n,Hangup()
  • 7. Programando un AGI - Elementos Básicos #!/usr/bin/php -q <?php set_time_limit(30); require_once "phpagi.php"; ?> Tiempo máximo de ejeccion Inicio de código PHP Importación de Libreria Fin de código PHP
  • 8. Programando un AGI - Conexión a BD #!/usr/bin/php -q <?php set_time_limit(30); require_once "phpagi.php"; $agi = new AGI(); $agi->answer(); $conexion = mysql_connect("host","user","pass") or die(mysql_error()); mysql_select_db($db, $conexion); ?> Responde el canal Realizamos Conexión a BD
  • 9. Programando un AGI - Obteniendo Variables #!/usr/bin/php -q <?php set_time_limit(30); require_once "phpagi.php"; $agi = new AGI(); $agi->answer(); $conexion = mysql_connect("host","user","pass") or die(mysql_error()); mysql_select_db(encuesta, $conexion); #Obtenemos CallerID $callernum=$agi->get_variable("CALLERID(number)"); $callernum=$callernum['data']; $var1=$argv[1]; ?> Obtenemos variable de canal Variable Personalizada
  • 10. Programando un AGI - El programa $error=0; $loop =0; do{ $do=0; $arr_answer = $agi->get_data("custom/q_survey",5000,1); $answer = $arr_answer['result']; if ($answer < 1 || $answer > 5) { $agi->exec('playback',"custom/inv_answer"); $error ++; $do=1; } if ($error > $loop) { $agi->exec('playback',"custom/end_invalid"); $agi->hangup(); } elseif($do == 0){ $row3 = mysql_query("INSERT INTO table_q (answer, caller_id) VALUES ('$answer', '$callernum') "); $agi->exec('playback',"custom/end_survey"); $agi->hangup(); } }while ($do == 1); Audio Pregunta Evento resuesta Inválida Guardamos Resultado
  • 11. Programando un AGI - Terminado #!/usr/bin/php -q <?php set_time_limit(30); require_once "phpagi.php"; $agi = new AGI(); $agi->answer(); $conexion = mysql_connect("host","user","pass") or die(mysql_error()); mysql_select_db(encuesta, $conexion); #Obtenemos CallerID $callernum=$agi->get_variable("CALLERID(number)"); $callernum=$callernum['data']; $error=0; do{ $do=0; $arr_answer = $agi->get_data("custom/$q_survey",5000,1); $answer = $arr_answer['result']; if ($answer < $min_val || $answer > $max_val) { $agi->exec('playback',"custom/$inv_answer"); $error ++; $do=1; } if ($error > $loop) { $agi->exec('playback',"custom/$end_invalid"); $agi->hangup(); } elseif($do == 0){ $row3 = mysql_query("INSERT INTO $table (answer, caller_id) VALUES ('$answer', '$callernum') "); $agi->exec('playback',"custom/$end_survey"); $agi->hangup(); } }while ($do == 1); ?>
  • 12. Programando un AGI - Consulta de Saldo #!/usr/bin/php -q <?php set_time_limit(30); require_once "phpagi.php"; $agi = new AGI(); $agi->answer(); $conexion = mysql_connect("host","user","pass") or die(mysql_error()); mysql_select_db(saldo, $conexion); $arr_answer = $agi->get_data("custom/cliente",5000,10); $answer = $arr_answer['result']; $query_saldo = mysql_query("SELECT saldo FROM saldos WHERE id='$canswer' "); $saldo = mysql_fetch_row($query_saldo); $saldo = $saldo[0]; $agi->set_variable("SALDO", "$saldo"); ?> Solicitamos Numero Cliente Consultamos Saldo Asignamos Valor a Variable
  • 13. Programando un AGI - Consulta de Saldo exten => 123,1,AGI(saldo.php) same => n,Playback(custom/susaldo) same => n,SayNumber(${SALDO}) same => n,Playback(custom/pesos) same => n,Hangup()
  • 14. Programando un AGI - Consulta de Saldo exten => 123,1,AGI(saldo.php) same => n,Swift(Su saldo al día de hoy es de ${SALDO} pesos, Gracias) same => n,Hangup()
  • 15. Gracias por su Atención! Augusto Sepúlveda S.H. Correo: augusto.sepulveda@nextortelecom.com Skype: augustosep Nextor Telecom Leibnitz 47 - 105 G Salinas Varona 215 Col Anzurez, México DF Burocratas del Edo, Monterrey NL +525514540020 +528114540020 http://www.vozero.mx http://mangoanalytics.orghttp://www.nextortelecom.com