“sistema telefÓnico automÁtico para consultas de ... · figura 3.6 modificación de una deuda...

93
ESCUELA SUPERIOR POLITECNICA DEL LITORAL Facultad de Ingeniería en Electricidad y Computación “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE DEUDAS Y FECHAS DE PAGO” INFORME DE MATERIA DE GRADUACIÓN Previa a la obtención del Título de: INGENIERO EN TELEMÁTICA Presentada por: ANDREA SOLANGE FREIRE MORÁN EDUARDO ARTURO LÓPEZ YAGUANA GUAYAQUIL ECUADOR 2010

Upload: ngonhi

Post on 20-Sep-2018

223 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

ESCUELA SUPERIOR POLITECNICA DEL LITORAL

Facultad de Ingeniería en Electricidad y Computación

“SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE DEUDAS Y FECHAS DE PAGO”

INFORME DE MATERIA DE GRADUACIÓN

Previa a la obtención del Título de:

INGENIERO EN TELEMÁTICA

Presentada por:

ANDREA SOLANGE FREIRE MORÁN

EDUARDO ARTURO LÓPEZ YAGUANA

GUAYAQUIL – ECUADOR

2010

Page 2: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

AGRADECIMIENTO

A Dios que me ha dado inteligencia,

me ha guiado y cuidado hasta el día

de hoy, a mi familia por darme el

soporte necesario para avanzar, a

mis profesores y a mis amigos que

me han ayudado a crecer en todos

los aspectos.

A Dios Todopoderoso por

fortalecerme y guiarme a lo largo de

mi vida y mi carrera, a mi familia y

seres queridos, en especial mi padre

que gracias a su esfuerzo he llegado

hasta aquí. También agradezco a mis

amigos y profesores que han

contribuido con mi desarrollo humano

y profesional.

Page 3: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

DEDICATORIA

A Dios, a mis padres, a mis hermanas

y a todas las personas que alguna

vez me ayudaron para seguir

avanzando para alcanzar mis

objetivos.

Andrea Freire Morán

Dedico este trabajo a Dios, a mi

madre, a mi hermana, seres queridos

y especialmente a la memoria de mi

padre.

Eduardo López Yaguana

Page 4: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

DECLARACIÓN EXPRESA

“La responsabilidad por los hechos, ideas y doctrinas expuestas en este

trabajo, nos corresponden exclusivamente; y, el patrimonio intelectual de la

misma, a la Escuela Superior Politécnica del Litoral”

(Reglamento de exámenes y títulos profesionales de la ESPOL)

Andrea Solange Freire Morán

Eduardo Arturo López Yaguana

Page 5: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

TRIBUNAL DE SUSTENTACIÓN

Ing. Gabriel Astudillo Brocel

PROFESOR DE LA MATERIA DE GRADUACIÓN

Ing. Patricia Chávez Burbano

PROFESOR DELEGADO POR EL DECANO DE LA FACULTAD

Page 6: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

RESUMEN

El proyecto expuesto en esta tesis es una de las muchas soluciones para

darle a los usuarios de una institución comercial o educativa información de

sus movimientos en este caso de sus deudas de una forma ágil, rápida y

sencilla con una llamada telefónica y usando un campo clave para

identificarse en este caso el numero de cédula.

Cuando un usuario realice una llamada a la central telefónica este escuchará

un menú y tendrá que ingresar su identificador; de acuerdo a lo que el

presione se pueden dar varios casos, los cuales se explican en la

descripción del proyecto.

Esta es una solución a muy bajo costo para las instituciones puesto que todo

lo que se utiliza para su implementación es software libre.

Se utiliza para la implementación de esta solución como servidor de Voz

sobre IP Asterisk, para hacer el código que permite usar la opción Interfaz de

Enlace de Asterisk (AGI) que tiene Asterisk se utiliza el lenguaje php, se usa

una librería de php “php-agi” que maneja todas las opciones de Asterisk para

que puedan ser usadas más fácilmente en el código php y para almacenar

los datos se usa el motor para la base de datos Mysql.

Page 7: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

INDICE

INTRODUCCION

CAPITULO I ANTECEDENTES Y JUSTIFICACION ....................................... 1

1.1. ANTECEDENTES .............................................................................. 2

1.2. JUSTIFICACIONES ........................................................................... 3

1.3. DESCRIPCIÓN DEL PROYECTO ..................................................... 3

1.3.1. Objetivos generales ..................................................................... 4

1.3.2. Objetivos específicos .................................................................. 5

1.4. METODOLOGÍA ................................................................................ 5

1.5. PERFIL DE LA TESIS........................................................................ 6

CAPITULO II ASTERISK Y PHP AGI ............................................................. 7

2.1. ASTERISK ......................................................................................... 8

2.1.1. Características ............................................................................ 9

2.1.2. Canales ....................................................................................... 9

2.2. AGI(ASTERISK GATEWAY INTERFACE) ...................................... 10

2.3. CLASE PHP-AGI ............................................................................. 12

CAPITULO III IMPLEMENTACIÓN ............................................................... 14

3.1. INTRODUCCIÓN ............................................................................. 15

3.1.1. Hardware ................................................................................... 15

3.1.2. Servidor ..................................................................................... 15

3.1.3. Teléfono IP ................................................................................ 16

3.2. SOFTWARE .................................................................................... 16

3.2.1. Servidor ..................................................................................... 16

3.2.2. Instalación de Asterisk .............................................................. 17

3.2.3. Instalación de mysql .................................................................. 19

Page 8: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

3.2.4. Instalación de php ..................................................................... 20

3.3. BASE DE DATOS DEL SISTEMA ................................................... 21

3.3.1. Lenguaje de Descripción de Datos del Sistema ........................ 21

3.3.2. Ingreso a mysql ......................................................................... 21

3.3.3. Creación de la base de datos .................................................... 22

3.3.4. Creación de las tablas ............................................................... 22

3.4. CONFIGURACIONES EN ASTERISK ............................................. 24

3.4.1. Configuración del archivo sip.conf............................................. 24

3.4.2. Configuración de los archivos system.conf y chan_dahdi.conf . 26

3.4.3. Configuración del archivo extensions.conf ................................ 27

3.5. PROGRAMA PRINCIPAL ................................................................ 28

3.5.1. Descripción general ................................................................... 28

3.5.2. Casos del sistema ..................................................................... 30

3.5.3. Código fuente ............................................................................ 31

3.5.4. Descripción de las funciones utilizadas ..................................... 35

3.5.5. Funciones sobre la base de datos............................................. 35

3.5.6. Funciones sobre el plan de marcado ........................................ 36

3.5.7. Descripción de archivos de audio ............................................. 38

3.5.8. Sistema de administración de la base de datos ........................ 39

3.5.9. Configuración del teléfono IP Grandstream GXP2000 .............. 42

CAPÍTULO IV FUNCIONAMIENTO Y PRUEBAS ......................................... 44

4.1. ACTIVACIÓN DEL SERVICIO DE MYSQL ..................................... 45

4.2. INGRESO DE DOS USUARIOS ...................................................... 45

4.3. INGRESO DE DEUDAS A UN USUARIO ........................................ 47

4.4. ACTIVACIÓN DE ASTERISK .......................................................... 49

4.5. LLAMADA AL SISTEMA CONSULTAS ........................................... 49

4.5.1. Respuesta del sistema al ingreso de una cédula registrada con

deudas.................................................................................................... 50

4.5.2. Confirmación del usuario ........................................................... 51

4.5.3. Respuesta del sistema a una cédula registrada sin deudas ..... 52

Page 9: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

4.5.4. Respuesta del sistema a una cédula no registrada ................... 53

4.5.5. Fin de la llamada ....................................................................... 54

CONCLUSIONES Y RECOMENDACIONES

APÉNDICE

BIBLIOGRAFIA

INDICE DE FIGURAS

Figura 3.1 Teléfono IP Grandstream GXP2000 ............................................ 16

Figura 3.2 Pantalla de login del sistema de administración .......................... 40

Figura 3.3 Pantalla principal del sistema de administración ......................... 40

Figura 3.4 Consulta de deudas de un cliente ................................................ 40

Figura 3.5 Modificación de los datos de un cliente ....................................... 41

Figura 3.6 Modificación de una deuda de un cliente ..................................... 41

Figura 4.1 Activación del servicio de MySQL ................................................ 45

Figura 4.2 Login del administrador ................................................................ 46

Figura 4.3 Ingreso del primer usuario a la base de datos ............................. 46

Figura 4.4 Ingreso del segundo usuario a la base de datos ......................... 47

Figura 4.5 Ingreso de la primera deuda a un usuario ................................... 47

Figura 4.6 Ingreso de la segunda deuda a un usuario .................................. 48

Figura 4.7 Activación de Asterisk .................................................................. 49

Figura 4.8 Respuesta del sistema al ingreso de una cédula en el servidor .. 50

Figura 4.9 Confirmación del usuario ............................................................. 51

Figura 4.10 Confirmación del usuario en la base de datos ........................... 51

Figura 4.11 Respuesta del sistema a una cédula registrada sin deudas ...... 52

Figura 4.12 Respuesta del sistema a una cédula no registrada ................... 53

Page 10: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

INDICE DE TABLAS

Tabla I Características del Servidor .............................................................. 14

Tabla II Características del servidor – software ............................................ 15

Page 11: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

INTRODUCCIÓN

Las tecnologías avanzan a una velocidad muy acelerada y cambian

constantemente, podemos ver el cambio que están teniendo actualmente los

sistemas analógicos a sistemas digitales, tomando como tema particular las

centrales telefónicas y una de las tecnologías emergentes Voz sobre IP

sobre la cual se pueden adaptar todos los servicios de las centrales

telefónicas analógicas.

Por ejemplo, una institución comercial o de educación la cual requiere una

forma más eficaz para que sus usuarios consulten su información en la

empresa en este caso sus deudas; este proyecto consiste en la

implementación de un sistema de consultas de deudas y fechas de pago por

teléfono.

Tomando en cuenta la arquitectura de red de la empresa podemos adecuar

un servicio de Voz sobre IP de varias formas: una Arquitectura Distribuida,

Centralizada o Mixta; para la implementación de esta solución usaremos la

arquitectura centralizada que consiste en un servidor que tiene toda la

información de la red de Voz sobre IP de la institución.

Se asume que en la empresa hay instalado un servidor de voz sobre IP

asterisk, sino lo hay, se lo pondrá en funcionamiento y para implementar la

solución se utilizara un código en php usando la librería php-agi y base de

datos mysql que son de código abierto.

Page 12: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

CAPITULO I

ANTECEDENTES Y JUSTIFICACION

Page 13: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

1.1. ANTECEDENTES

Las comunicaciones han sido una parte importante para el desarrollo y

crecimiento de las instituciones. Dentro de una institución todo lo que

represente rapidez y bajos costos es fácilmente adaptado para su uso

dentro de la misma. Hace no muchos años el crecimiento de las redes de

datos, la llegada del internet y las nuevas tecnologías facilito la acción de

comunicarnos y el acceso a la información.

El cambio tecnológico a permitido la migración de tecnologías, las

centrales telefónicas analógicas que han sido usadas por muchos años

para la comunicación de instituciones tienen costos bastante elevados de

implementación, estás están siendo cambiadas por centrales PBX de

telefonía IP que presenta grandes ventajas como los costos por

implementación y equipos. Esto es beneficioso para las instituciones que

adoptan esta tecnología por que existen diversas opciones para

implementarla y bastantes programas para administrar una red de este

tipo.

En los últimos años se han desarrollado programas en software libre que

realizan las funciones de una central PBX.

Uno de estos programas es Asterisk que es un sistema completo de

comunicaciones sobre redes de datos que integra la telefonía, internet,

fax y otros elementos. Tiene funciones bastante útiles que vienen

incluidas en el programa, uno de los recursos es la Interfaz de Enlace de

Page 14: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

Asterisk (AGI: Asterisk Gateway Interface) que permite programar en

cualquier lenguaje.

1.2. JUSTIFICACIONES

Una institución requiere varias formas de enviar y recibir información de

sus usuarios sobre sus servicios. Por ejemplo: por correo electrónico,

notificaciones escritas, o por teléfono; en esta última se pueden utilizar

centrales de servicio al cliente para recibir consultas por parte de los

usuarios.

Esto puede ser automatizado de tal forma que no represente un gasto

mayor por la contratación de personal; la implementación explicada en

este documento es una opción bastante económica para cualquier

institución que posea una red de datos implementada. Otra de las

ventajas es que el usuario es libre de revisar cuantas veces quiera su

información y se puede controlar si la información llego al usuario por

este medio.

1.3. DESCRIPCIÓN DEL PROYECTO

El proyecto consiste en la implementación de un sistema de consultas de

deudas y fechas de pago en un servidor de Voz sobre IP como asterisk.

Este sistema funciona de la siguiente manera:

Page 15: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

El usuario llama a la central y cuando le contestan escuchara un menú

pidiéndole que digite su número de cédula para identificarse o que

presione las teclas 999 seguidas de la tecla numeral para salir del

sistema; si el usuario no presiona nada volverá a reproducirse la

grabación hasta que se ejecute una de las dos acciones.

Una vez ingresado el numero de cédula este puede tener tres tipos de

respuesta. El primero es un mensaje indicándole que su cédula no está

registrada si el numero digitado no se encuentra en la base de datos. El

segundo es un mensaje indicándole que no tiene deudas si el numero

ingresado no registra ninguna deuda en la base de datos. El tercero,

cuando la cédula ingresada tenga deudas, se escuchara el valor de la

deuda y la fecha de pago seguida de un mensaje pidiéndole que

presione la tecla 1 para confirmar que el usuario ha escuchado el

mensaje de la deuda y así sucesivamente si el usuario tiene más de una

deuda

1.3.1. Objetivos generales

Implementar una pequeña central telefónica que provea el servicio de

poder consultar deudas y fechas de pago a los usuarios registrados de

una manera automatizada, que sea fácil de usar y cumpla con los

requerimientos de los clientes al realizar sus consultas.

Page 16: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

1.3.2. Objetivos específicos

Demostrar el uso de AGI para el desarrollo del sistema.

Demostrar el uso de la librería “php-agi” para el desarrollo del script que

procesa la llamada.

Implementar un sistema de consultas usando una base de datos que

permita independizar la fuente de datos de Asterisk.

Implementar una aplicación que permita el ingreso de datos para el uso

del sistema.

1.4. METODOLOGÍA

Los pasos para la realización de este proyecto son:

1. Instalación de la base de datos mysql.

2. Iniciar el servicio mysql con los respectivos permisos para su uso.

3. Instalación de php 5.

4. Instalación del programa Asterisk sobre una distribución Linux para el

proyecto se utilizo la distribución CentOS 5.

5. Configuración de teléfonos IP con usuarios SIP para pruebas.

6. Instalación y configuración de softphone Zoiper.

7. Diseño e implementación del sistema usando php-agi

Page 17: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

1.5. PERFIL DE LA TESIS

En el capítulo 2 se presentan las bases teóricas para mayor comprensión

de los conceptos tratados para la realización del proyecto.

En el capítulo 3 se presentan las especificaciones técnicas, la instalación

del hardware y las configuraciones respectivas para el funcionamiento

del proyecto.

En el capítulo 4 se presentan las pruebas realizadas con los diferentes

casos que se pueden presentar en el proyecto.

Page 18: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

CAPITULO II

ASTERISK Y PHP AGI

Page 19: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

2.1. ASTERISK

Asterisk es un PBX por software de código abierto, creado por Digium,

Inc. y una base de usuarios y desarrolladores en continuo crecimiento.

Digium desarrolla código fuente y hardware de telefonía de bajo costo

que funciona con asterisk. Asterisk funciona en Linux y otras plataformas

Unix con o sin hardware que conecte tu servidor con la red global

tradicional de telefonía, la PSTN.

Para la interconexión con equipo digital y analógico de telefonía, Asterisk

soporta un número de dispositivos de hardware, más notablemente de

todos el hardware fabricado por los patrocinadores de Asterisk’s, Digium.

Digium tiene placas T1 y E1 de 1, 2 y 4 puertos para la interconexión a

líneas PRI y bancos de canal. Además, están disponibles tarjetas

analógicas FXO y/o FXS de 1 a 4 puertos y son muy populares para

instalaciones pequeñas. Las tarjetas de otros vendedores se pueden

utilizar para BRI (ISDN2) o tarjetas compatibles de cuatro y ocho puertos

BRI basadas en tarjetas compatibles con CAPI o tarjetas de chipset HFC.

Page 20: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

2.1.1. Características

Asterisk incluye muchas características encontradas solamente en los

sistemas de mensajería unificados de última generación, como:

Música en espera para los clientes que esperan en cola, soportando

transmisión en directo así como música MP3.

Integración de sistemas Texto-a-Voz (los software de síntesis de la

voz como el “Festival” o el “Cepstral” pueden ser integrados).

Generación de datos de llamada (CDR) para la integración con los

sistemas de facturación.

Integración con sistemas de reconocimiento de voz (tales como el

software abierto de reconocimiento de voz “Sphinx”).

La capacidad de interconectarse con las líneas telefónicas normales,

ISDN de tarifa básica y las interfaces PRI.

2.1.2. Canales

Un canal es una conexión que trae una llamada a un PBX asterisk. Un

canal podría ser una conexión a un teléfono ordinario fijado a mano o a

una línea telefónica ordinaria, o a una llamada lógica (como una llamada

telefónica del Internet). Asterisk no hace ninguna distinción entre los

canales del estilo de “FXO” y de “FXS”, es decir, no distingue entre las

Page 21: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

líneas telefónicas y los teléfonos. Cada llamada se pone o se recibe en

un canal distinto.

2.2. AGI(ASTERISK GATEWAY INTERFACE)

Es una interfaz que agrega funcionalidad a Asterisk para que interactúe

con diversos lenguajes de programación como: Perl, PHP, C, PASCAL,

Bourne Shell, etc., y así poder hacer sistemas más complejos y de mayor

utilidad.

AGI puede controlar el plan de discado, llamado en extensions.conf.

EAGI da a la aplicación la posibilidad para tener acceso y para

controlar los canales de sonidos además de la interacción con el plan

del discado.

FastAGI se puede utilizar para hacer el procesamiento en una

máquina remota por conexión de red.

El deadagi da el acceso a un canal muerto después de colgar,

deprecated.

Las variables pasadas por asterisk son:

agi_request – El nombre de archivo del código.

agi_channel – El canal de origen (su teléfono).

Page 22: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

agi_language – El lenguaje del código (e.j. "en").

agi_type – El tipo de canal de origen (e.j. "SIP" o “IAX2").

agi_uniqueid - El ID único para la llamada.

agi_version - La versión de Asterisk (desde Asterisk 1.6).

agi_callerid - El número del identificador de llamada (o "unknown" en

caso de que sea desconocido).

agi_calleridname – El nombre del identificador de llamada (o "unknown"

en caso de que sea desconocido).

agi_callingpres – La presentación para el identificador de llamada en un

canal ZAP .

agi_callingani2 – El número que está definido en ANI2. Revisar en la lista

detallada de variables (sólo para canales PRI).

agi_callington – El tipo de número usado en canales PRI. Revisar en la

lista detallada de variables.

agi_callingtns – un número de 4 digitos opcional(Selector de Tránsito de

Red) usado en canales PRI . Revisar en la lista detallada de variables.

Page 23: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

agi_dnid – El id del número marcado (o "unknown" en caso de que sea

desconocido) .

agi_rdnis – El número referente a DNIS (o "unknown" en caso de que sea

desconocido).

agi_context – contexto origen en extensions.conf.

agi_extension – El número llamado.

agi_priority – La prioridad desde la cual fue ejecutado en el plan de

marcado.

agi_enhanced – El valor de la bandera es 1.0 si empezó como un código

EAGI , 0.0 de otro modo.

agi_accountcode – Código de la cuenta del canal de origen.

agi_threadid – ID del hilo del código agi (desde Asterisk 1.6)

La variable que se va a usar más en el proyecto es agi_extension

encapsulada dentro de las funciones de la librería php-agi.

2.3. CLASE PHP-AGI

Existe una clase con varias funciones previamente definidas que hacen

más fácil la tarea de elaborar códigos PHP para Asterisk. ¹ Existen dos

Page 24: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

versiones de esta clase, la más reciente es la 2.14. Lo único que hay que

hacer es descargarla, descomprimirla e instalarla (copiarla) dentro del

directorio /var/lib/asterisk/agi-bin/. Ahora, para poder utilizar las

funciones que en esta clase se definen, se debe incluir la clase en el

código mediante la sentencia:

require "/var/lib/asterisk/agi-bin/phpagi-1.12/phpagi.php";

Con estas funciones es posible construir aplicaciones más complejas de

forma sencilla. Se recomienda revisar las funciones disponibles dentro de

cada clase en la documentación correspondiente dentro de su sitio

oficial.

Page 25: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

CAPITULO III

IMPLEMENTACIÓN

Page 26: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

3.1. INTRODUCCIÓN

El objetivo del proyecto de graduación es poner en práctica los

conocimientos adquiridos a lo largo de la carrera y utilizarlos juntamente

con los sistemas operativos de libre distribución para poder implementar

sistemas muy utilizados sin costo alguno.

Este sistema está implementado con las herramientas que el Software

Libre nos proporciona que interactúan con otros lenguajes de

programación y un sistema de bases de datos básico.

El sistema implementado es muy utilizado en las compañías donde sus

clientes necesiten saber sus deudas y fechas de pago. Ejemplo de esto

son las compañías de telefonía móvil en donde sus clientes

frecuentemente están interesados por conocer su saldo y hasta cuándo

está en vigencia su saldo.

3.1.1. Hardware

Este sistema cuenta con un servidor y un teléfono que soporta voz sobre

IP, cuyas características detallamos a continuación:

3.1.2. Servidor

Es donde se encuentra el sistema, y por ende, es donde se van a

procesar las llamadas de los clientes. El servidor que se utiliza es una

computadora con las características mostradas en la tabla I

Page 27: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

Tabla I Características del Servidor

Procesador Intel Core Duo de 2.8 GHZ

Tarjeta de Red 10/100 Mbps

Ram 2 GB

Disco Duro 80 GB

Tarjeta analógica Marca Digium TDM410p 4 puertos

3.1.3. Teléfono IP

Fig. 3.1 Teléfono IP Grandstream GXP2000

Utilizamos el teléfono de voz sobre IP Grandstream GXP2000, del cual

utilizamos sus conectores RJ-45 para conectar el teléfono a la

computadora y a la red. (Véase figura 3.1)

3.2. SOFTWARE

3.2.1. Servidor

Page 28: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

En el servidor se instalaron los sistemas operativos y programas

mostradas en la tabla II

Tabla II Características del servidor – software

Sistema Operativo Linux

Distribución Centos 5.2

Arquitectura x86

Software IP PBX Asterisk 1.4

Base de datos MySQL

Software adicional Java Development Kit 1.5

3.2.2. Instalación de Asterisk

Para instalar Asterisk en el servidor se requieren instalar algunas

dependencias previamente, a continuación se detalla todo este proceso:

1. Descargar el paquete estable de Asterisk 1.4

http://downloads.digium.com/pub/asterisk/asterisk-1.4-current.tar.gz

2. Se recomienda tener todos los paquetes actualizados:

yum update o yum upgrade –y

3. Actualizar y activar los siguientes paquetes:

gcc: es el compilador de C y todas sus dependencias relacionadas.

openssl: librerías de desarrollo para soporte RSA y MD5.

ncurses: para el CLI y para que otro aplicativo?

bison, ncurses, openssl-devel y las dependencias relacionadas.

Page 29: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

Fuentes del kernel de Linux (librerías del sistema)

yum -y install gcc gcc-c++ kernel-devel bison openssl-devel

libtermcap-devel ncurses-devel

4. Para instalar las dependencias y soporte para DB:

yum -y install mysql-server mysql-devel newt-devel

unixODBC unixODBC-devel libtool-ltdl libtool-ltdl-devel

mysql-connector-odbc

En el caso de tener problemas de “sources for kernel”:

yum –y install kernel-devel

yum –y update kernel

uname -r

5. Descargar los paquetes en /usr/src

wget -c http://downloads.digium.com/pub/asterisk/asterisk-

1.4-current.tar.gz

wget -c http://downloads.digium.com/pub/asterisk/asterisk-

addons-1.4-current.tar.gz

wget -c http://downloads.digium.com/pub/telephony/dahdi-

tools/dahdi-tools-current.tar.gz

wget -c http://downloads.digium.com/pub/telephony/dahdi-

linux/dahdi-linux-current.tar.gz

wget -c http://downloads.digium.com/pub/libpri/libpri-1.4-

current.tar.gz

Page 30: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

6. Siguiendo el LSB (Linux Standard Base) Asterisk deberá ser

descomprimido en /usr/src/

tar -xvzf asterisk-1.4-current.tar.gz

tar -xvzf asterisk-addons-1.4-current.tar.gz

7. Ejecutar el siguiente grupo de comandos:

cd dahdi-linux-current, make, install

cd dahdi-tools –current, ./configure, make, make install, make

config

cd ../libpri-1.4.7, make, make install

cd ../asterisk-1.4.22, make clean, ./configure, make menuconfig

cd ../asterisk-addons-1.4.7, make clean, ./configure

3.2.3. Instalación de mysql

A continuación se detalla el procedimiento para instalar mysql y php en

Asterisk:

1. Verificar e instalar MySQL:

yum install mysql* unixODBC-devel -y

o sino:

yum -y install mysql-server mysql-devel newt-devel

unixODBC unixODBC-devel libtool-ltdl libtool-ltdl-devel

mysql-connector-odbc

2. Levantar mysql y asignar password a root:

Page 31: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

service mysqld start mysqladmin -u <root> password

<contraseña_de_root>

3. Ingresar al directorio donde se encuentran las fuentes de asterisk add-

ons e instalar el soporte para mysql:

cd /usr/src/asterisk-addons-

./configure

make menuselect

make

make install

3.2.4. Instalación de php

Requerimos de la instalación del compilador de php versión 5 para la

ejecución de los códigos .agi escritos en lenguaje de programación php.

A continuación se detalla el procedimiento de instalación:

1. Para agregar php para trabajar con mysql, ejecute el comando:

yum install php*

2. Para que se pueda ejecutar un código, se debería cambiar los

permisos de ejecución mediante el comando:

chmod 777 <ruta_absoluta_o_nombre_archivo.php>

3. Para correr un código php en consola se debe ubicar en la ruta donde

se encuentra el archivo o especificar la ruta absoluta en el comando y

ejecutar el comando:

! /usr/bin/php -q <archivo.php>

Page 32: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

4. Adicionalmente se debe descargar y colocar la librería phpagi versión

2.14 en la ruta /var/lib/asterisk/agi-bin, para poder ejecutar los scripts

creados en php.

3.3. BASE DE DATOS DEL SISTEMA

Este sistema cuenta con una base de datos almacenada en MySQL. Esta

base de datos consiste en dos tablas:

1. Clientes

2. Deudas

Por tanto que cada cliente está interesado en conocer cuantas deudas

tiene y las fechas de pago de cada deuda, los datos se encuentran

almacenados en estas dos tablas.

Un cliente puede estar relacionado con ninguna o muchas deudas,

mientras que una deuda siempre se relaciona con un cliente.

3.3.1. Lenguaje de Descripción de Datos del Sistema

A continuación se detalla la creación de la base de datos de este

sistema, todos estos comandos son ejecutados desde la línea de

comandos del terminal de MySQL.

3.3.2. Ingreso a mysql

La contraseña del usuario root está en blanco para ingresar a MySQL

Page 33: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

mysql –u root -p

3.3.3. Creación de la base de datos

La base de datos tiene por nombre “SistemaConsultas” y se deberá

emplear el comando:

create database SistemaConsultas;

3.3.4. Creación de las tablas

Tabla Clientes

create table Clientes

(

IDCliente int not null auto_increment,

Nombres varchar(40) not null,

Apellidos varchar(40) not null,

telefono varchar(40),

celular varchar(40),

edad int,

sexo varchar(40),

domicilio varchar(200),

cédula varchar(40) not null,

estado int not null,

Page 34: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

primary key (IDCliente)

)ENGINE=INNODB;

Tabla Deudas

create table Deudas

(

IDDeuda int not null auto_increment,

IDCliente int not null,

monto double(7,2),

FechaPago date,

descripcion varchar(200),

cancelado int not null,

estado int not null,

Confirmacion int,

primary key (IDDeuda),

foreign key (IDCliente) references Clientes (IDCliente) on delete

cascade

)ENGINE=INNODB;

Como podemos ver el sistema tiene la restricción de que la deuda de un

cliente está en el rango entre 0 a 99999.99 dólares, y cada deuda tiene

Page 35: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

una referencia a un cliente, si un cliente se elimina de la base de datos,

automáticamente se eliminan del sistema las deudas de ese cliente.

3.4. CONFIGURACIONES EN ASTERISK

3.4.1. Configuración del archivo sip.conf

Este archivo de configuración se encuentra en la ruta /etc/asterisk y sirve

para colocar los usuarios sip a registrar en la pbx asterisk, así como para

conectarse a un proveedor sip y establecer todo lo relacionado a este

protocolo. A continuación la configuración que se ha implementado para

la realización de este proyecto:

sip.conf

[general]

rtcachefriends=yes

rtupdate=no

rtautoclear=yes

srvlookup=yes

disallow=all

allow=alaw

allow=ulaw

allow=gsm

Page 36: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

language=es

callwaiting=no

qualify=yes

calltransfer=no

callforwarding=no

[901]

type=friend

secret=901

qualify=yes

nat=yes

host=dynamic

canreinvite=no

context=incoming

En esta configuración se ha establecido un usuario SIP: 901

Cabe recalcar que este usuario SIP se lo creó con el propósito de poder

establecer una conexión de prueba con el Sistema, es decir, el sistema

no utiliza usuarios SIP, todos los usuarios están almacenados en la base

de datos del sistema. Este usuario SIP sólo lo puede utilizar el

administrador. En el contexto se puede también cambiar “incoming” por

Page 37: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

“internal” si se desea trabajar con una red interna que no requiera

conectarse con una red externa.

3.4.2. Configuración de los archivos system.conf y

chan_dahdi.conf

Estos archivos se usan para la configuración de los canales dahdi, que

son los que se emplean para el uso de la tarjeta analógica tdm410p de 4

puertos. Para nuestro caso, usaremos el puerto 4 como fxo con

señalización fxs. El archivo system.conf se ubica en la ruta /etc/dahdi y el

archivo chan_dahdi.conf se encuentra en /etc/asterisk.

A continuación la configuración para los mismos sería así:

chan_dahdi.conf

[channels]

usecallerid=yes

hidecallerid=no

callwaiting=no

threewaycalling=yes

transfer=yes

echocancel=yes

echotraining=yes

inmediate=no

group=1

Page 38: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

context=internal

signaling=fxs_ks

channel => 4

system.conf

fxsks=4

echocanceller=mg2,4

loadzone=us

defaultzone=us

Para auto configurar la tarjeta analógica se debe emitir el siguiente

comando en consola de root:

dahdi_genconf

3.4.3. Configuración del archivo extensions.conf

Se encuentra en la ruta /etc/asterisk y consiste en el plan de marcado de

este sistema.

La función principal de este archivo es de invocar al código donde se

encuentra almacenado el programa principal.

; contexto general sirve para establecer los parámetros generales

; del plan de marcado.

Page 39: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

[general]

autofallthrough=no

clearglobalvars=no

; contexto “internal” sirve para especificar el procedimiento a ;realizarse

para comunicarse con alguna de las extensiones en el interior de la PBX.

[internal]

exten => 789,1,AGI(proyecto.php)

3.5. PROGRAMA PRINCIPAL

3.5.1. Descripción general

El sistema recibe una llamada, para lo cual si la extensión marcada es

“789” el archivo extensions.conf invoca al código “proyecto.php” donde se

almacena el programa principal y se ejecuta el código.

El sistema contesta la llamada y se reproduce un mensaje de bienvenida

donde se le indica al cliente que ingrese su número de cédula o si quiere

salir del sistema que digite “999”. El sistema espera a que el cliente

ingrese su cédula, captura el número de cédula ingresado y con ese

Page 40: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

número ejecuta una consulta a la base de datos para verificar si el cliente

está registrado y si tiene deudas. Una vez que la base de datos retorna

los datos de las deudas y fechas de pago del cliente, se reproducen unas

grabaciones que le indican al cliente la cantidad de deudas que tiene, el

monto y la fecha de pago de cada deuda. Por cada deuda se reproduce

una grabación que le indica al cliente que digite la tecla “1” para

confirmar que el cliente escuchó la grabación su deuda. Si digitó “1” se

graba en la base de datos, en la tabla de Deudas, en el campo

Confirmación un “1”, que indica que el cliente si escuchó la grabación, de

lo contrario el campo Confirmación permanece con un valor de “0”, que

quiere decir que el cliente no ha confirmado que ha escuchado una de

sus deudas. Si el cliente desea salir del sistema puede digitar “999” y con

esto se reproduce un mensaje de despedida y se termina la llamada.

Después de que el cliente escuchó sus deudas, el sistema reproduce la

grabación inicial y si el cliente desea puede volver a escuchar sus

deudas o de lo contrario salir del sistema.

Las grabaciones fueron realizadas en Asterisk y se encuentran

almacenadas en la ruta /var/lib/asterisk/sounds.

Las voces que vienen pregrabadas en Asterisk y que están en español

también se encuentran en la ruta /var/lib/asterisk/sounds.

Page 41: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

Los archivos proyecto.php y phpagi.php se encuentran en la ruta

/var/lib/asterisk/agi-bin y se los hace ejecutables para poder utilizarlos.

3.5.2. Casos del sistema

Al momento en que llegue una llamada al sistema, se pueden producir

cuatro distintos casos:

1. El cliente no digite ningún número: El sistema esperará siete

segundos para que el cliente ingrese su cédula, sino ingresa

ningún número, el sistema volverá a reproducir la grabación inicial

pidiendo por un número de cédula.

2. El cliente ingresa una cédula no registrada en la base de datos: El

sistema hará la consulta a la base de datos, pero al no

encontrarse registrada su cédula se reproducirá una grabación

que le indique que el cliente no se encuentra registrado en el

sistema. Luego se reproduce la grabación inicial.

3. El cliente ingresa su cédula que sí se encuentra registrada en el

sistema pero no tiene deudas: El sistema hará la consulta a la

base de datos, pero ésta no devolverá los datos de las deudas por

Page 42: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

lo que el cliente no posee deudas, entonces el sistema reproduce

una grabación que le indica al cliente que no posee deudas. Luego

se reproduce la grabación inicial.

4. El cliente ingresa su cédula que sí está registrada y también posee

deudas: Mediante grabaciones, el sistema le indica al cliente la

cantidad de deudas que posee, luego le indica deuda por deuda,

el monto de la deuda y la fecha a pagar. Por cada deuda el

sistema le pide al cliente que digite un “1” para confirmar que

escuchó la deuda, ésta confirmación se la registra en la base de

datos, pero si el cliente no escuchó la deuda, no se altera la base

de datos. Luego de que el cliente escuchó sus deudas, se

reproduce la grabación inicial.

3.5.3. Código fuente

#! /usr/bin/php -q <?php set_time_limit(30); error_reporting(E_ALL); require ('phpagi-2.14/phpagi.php'); /*autor: Andrea*/ //creo mi conexion

$con = mysql_connect ('localhost', 'root', 'labtelecom09') or die (mysql_error()); //selecciono mi bd mysql_select_db('SistemaConsultas',$con)or die ( mysql_error()); $agi = new AGI();

Page 43: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

$agi->answer(); $agi->exec(Playback,"Bienvenida"); do{ $result = $agi->get_data("Menu", 7000,10); $nummarcado = $result['result']; //Verifico si el número digitado es la tecla de escape para salir del sistema if($nummarcado!='999' && $nummarcado!= null) { $sql="SELECT * FROM Clientes WHERE cédula='$nummarcado';"; $res=mysql_query($sql,$con) or die ('ERROR SQL'); $r1=mysql_fetch_array($res); if($r1['cédula']==$nummarcado) { $sql="SELECT * FROM Deudas WHERE IDCliente='".$r1['IDCliente']."'; and cancelado=0"; $res2=mysql_query($sql,$con)or die (mysql_error()); if(mysql_num_rows($res2)== 0) { $agi->exec(Playback,"SinDeudas"); } //si llega a este if es porque si esta la CI y tiene deuda else { $agi->exec(Playback,"UstedTiene"); $CantDeudas = mysql_num_rows($res2); $agi->say_number($CantDeudas); $agi->exec(Playback,"Deudas"); while($r2=mysql_fetch_array($res2))

Page 44: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

{ $IDDeuda=$r2['IDDeuda']; $agi->exec(Playback,"UstedDebe"); $monto=$r2['monto']; $fechap=$r2['FechaPago']; $montos=explode(".",$monto); $fechas=explode("-",$fechap); $agi->say_number($montos[0]); $agi->exec(Playback,"DolaresCon"); if($montos[1]=='00') { $agi->say_number(0); } else { $agi->say_number($montos[1]); } $agi->exec(Playback,"Centavos"); $agi->exec(Playback,"ydebepagarantesde"); $agi->say_number($fechas[2]); $agi->exec(Playback,"de"); switch($fechas[1]) { case 1: $cad="Enero"; break; case 2: $cad="Febrero"; break; case 3: $cad="Marzo"; break; case 4: $cad="Abril"; break; case 5: $cad="Mayo"; break; case 6: $cad="Junio"; break; case 7: $cad="Julio"; break; case 8: $cad="Agosto"; break; case 9: $cad="Septiembre"; break;

Page 45: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

case 10: $cad="Octubre"; break; case 11: $cad="Noviembre"; break; case 12: $cad="Diciembre"; break; } $agi->exec(Playback, $cad); $agi->exec(Playback,"del"); $agi->say_number($fechas[0]);

//Mensaje de Confirmacion $confirmacion = $agi->get_data("MensajeConfirmacion", 7000,1); $num = $confirmacion['result']; if($num==1) { $sql2="update Deudas set Confirmacion=1 WHERE IDDeuda=$IDDeuda;"; $res=mysql_query($sql2,$con) or die ('ERROR SQL'); } } }

//Si no existe la cédula digitada en la base se reproduce una grabación que no está registrado y regresa a menú } else{ $agi->exec(Playback,"CédulaNoReg");} } }

Page 46: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

while($nummarcado!='999'); $agi->exec(Playback, "Despedida"); $agi->hangup(); ?>

3.5.4. Descripción de las funciones utilizadas

La librería phpagi nos permite realizar distintas operaciones sobre el plan

de marcado y sobre bases de datos. En este proyecto utilizamos distintas

funciones que nos provee ésta librería las cuales detallamos a

continuación:

3.5.5. Funciones sobre la base de datos

mysql_connect ('localhost', 'root', 'labtelecom09')

Función que nos permite conectar con la base de datos, el primer

parámetro indica la ubicación de la base de datos, el segundo parámetro

indica el nombre del usuario al cual pertenece la base de datos y el tercer

parámetro indica la clave de ese usuario.

mysql_select_db('SistemaConsultas',$con)

Función que selecciona la base de datos con la cual vamos a trabajar, el

primer parámetro indica el nombre de la base de datos y el segundo

parámetro indica el nombre del puntero que tiene la conexión hacia la

base de datos.

Page 47: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

$res=mysql_query($sql,$con)

Función que ejecuta una petición, el primer parámetro es una cadena de

caracteres que contiene la petición a ser ejecutada y el segundo

parámetro indica el nombre del puntero que tiene la conexión hacia la

base de datos.

$r1=mysql_fetch_array($res)

Función que devuelve un arreglo de claves de cada una de las columnas

de la base de datos la petición ejecutada.

3.5.6. Funciones sobre el plan de marcado

error_reporting(E_ALL)

Crea un log con todos los errores ocurridos durante la ejecución del

código.

$agi = new AGI()

Crea una nueva instancia de la clase agi.

require ('phpagi-2.14/phpagi.php')

Permite que las funciones en la librería phpagi sean usadas en el código

principal.

Page 48: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

$agi->answer()

Contesta la llamada.

$agi->exec(Playback,"ArchivodeAudio")

Reproduce una grabación.

$agi->get_data("ArchivodeAudio", tiempoEspera,MaxDigitos);

Captura la extensión marcada luego de reproducirse un archivo de audio

dentro de un tiempo de espera, el tercer parámetro indica la cantidad

máxima de dígitos que se pueden ingresar.

agi->say_number($Numero)

Reproduce en audio el número que se le ha enviado.

$arreglo=explode("Caracter",$cadena)

Se le envía una cadena y retorna un arreglo de los elementos de la

cadena separados por el carácter que se envía como primer parámetro.

$agi->hangup()

Termina la llamada.

Page 49: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

3.5.7. Descripción de archivos de audio

Las grabaciones fueron realizadas utilizando Asterisk, con la función

“Record” y llamando a la extensión 999. La función “Playback” nos

permite escuchar lo que acabamos de grabar. Estos archivos están

almacenados en la ruta /var/lib/asterisk/sounds y fueron grabados de la

siguiente manera:

exten => 999,1,Record(NombredelArchivo.gsm)

exten => 999,2,Playback(${RECORDED_FILE})

exten => 999,3,Hangup()

Los siguientes son los archivos de audio grabados utilizando Asterisk,

todos tienen el formato .gsm:

Bienvenida

SinDeudas

UstedTiene

Deudas

UstedDebe

DolaresCon

Centavos

ydebepagarantesde

de

Page 50: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

del

MensajeConfirmacion

CédulaNoReg

Despedida

Otros archivos de audio que se emplean en este proyecto vienen

pregrabados en Asterisk, y los utiliza la librería “phpagi.php” junto con la

función “text-to-sound” para reproducir texto a audio.

3.5.8. Sistema de administración de la base de datos

Se creó un sistema que administra la base de datos donde se encuentra

almacenada toda la información concerniente a los clientes y sus deudas.

Este sistema puede ingresar, modificar, consultar y eliminar los registros

de los clientes y sus deudas. Este sistema fue hecho en Java utilizando

la librería “mysql-connector-java5.1.5-bin.jar” y lo pueden utilizar los

administradores del sistema.

Page 51: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

Fig. 3.2 Pantalla de login del sistema de administración

Fig.3.3 Pantalla principal del sistema de administración

Page 52: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

Fig. 3.4 Consulta de deudas de un cliente

Fig. 3.5 Modificación de los datos de un cliente

Page 53: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

Fig. 3.6 Modificación de una deuda de un cliente

3.5.9. Configuración del teléfono IP Grandstream GXP2000

Para poder configurar este teléfono con los usuarios SIP para poder

realizar las llamadas, ingresamos a cualquier navegador de internet con

la dirección IP del teléfono, luego ingresamos la clave de administrador y

el usuario, y procedemos a configurar el teléfono con los usuarios SIP

previamente creados en el archivo sip.conf. A continuación se detalla la

configuración:

Account Name:901

SIP server: 901

Outbound proxy: direccion_ip_del_servidor_asterisk

Page 54: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

SIP user ID: 901

Authenticate ID: 901

Authenticate password: 901

Name: 901

Local Sip port: 5060

Page 55: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

CAPÍTULO IV

FUNCIONAMIENTO Y PRUEBAS

Page 56: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

4.1. ACTIVACIÓN DEL SERVICIO DE MYSQL

Para que el sistema pueda hacer las consultas pertinentes, MySQL debe

estar activado

Fig. 4.1 Activación del servicio de MySQL

4.2. INGRESO DE DOS USUARIOS

Antes de utilizar el sistema, ingresamos dos usuarios a la base de datos

desde el programa que administra la base de datos del sistema, para lo

cual tenemos que ingresar al sistema con el nombre de uno de los

administradores y su clave:

Page 57: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

Fig. 4.2 Login del administrador

Luego procedemos a ingresar usuarios en la base de datos:

Fig. 4.3 Ingreso del primer usuario a la base de datos

Page 58: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

Fig. 4.4 Ingreso del segundo usuario a la base de datos

4.3. INGRESO DE DEUDAS A UN USUARIO

Para este ejemplo se van a ingresar dos deudas a un usuario, y el otro

usuario quedará registrado en la base de datos pero sin deudas.

Page 59: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

Fig. 4.5 Ingreso de la primera deuda a un usuario

Fig. 4.6 Ingreso de la segunda deuda a un usuario

Con ambos usuarios registrados y con las deudas registradas para uno

de los usuarios ahora procedemos a probar el sistema.

Page 60: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

4.4. ACTIVACIÓN DE ASTERISK

Fig. 4.7 Activación de Asterisk

4.5. LLAMADA AL SISTEMA CONSULTAS

Se marca la extensión 789 y el sistema contestará la llamada. Luego el

sistema reproduce el mensaje de bienvenida y espera siete segundos

para que el usuario digite su cédula.

El sistema reproduce grabaciones de audio a los distintos casos de

ingreso de cédulas que se den, a continuación se mostrará el reporte que

emite Asterisk a cada uno de estos casos.

Page 61: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

4.5.1. Respuesta del sistema al ingreso de una cédula registrada

con deudas

Una vez que hemos llamado al sistema e ingresado una cédula

registrada, el sistema busca las deudas del cliente y reproduce las

grabaciones pertinentes de acuerdo al resultado.

Fig. 4.8 Respuesta del sistema al ingreso de una cédula en el servidor

Page 62: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

4.5.2. Confirmación del usuario

Cuando el usuario ha escuchado la deuda, el sistema reproduce una

grabación indicándole que digite uno si escuchó la grabación. Cuando el

usuario confirma que escuchó la deuda, se graba en la base de datos

que esa deuda sí fue escuchada.

Fig. 4.9 Confirmación del usuario

Page 63: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

Fig. 4.10 Confirmación del usuario en la base de datos

4.5.3. Respuesta del sistema a una cédula registrada sin deudas

El sistema reproducirá una grabación indicando que el usuario no posee

deudas pero si está registrado.

Page 64: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

Fig. 4.11 Respuesta del sistema a una cédula registrada sin deudas

4.5.4. Respuesta del sistema a una cédula no registrada

El sistema reproducirá una grabación indicando que el usuario no posee

deudas pero si está registrado.

Page 65: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

Fig. 4.12 Respuesta del sistema a una cédula no registrada

4.5.5. Fin de la llamada

La llamada termina cuando el usuario digita 999 o cuelga el teléfono.

Page 66: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

CONCLUSIONES Y RECOMENDACIONES

Conclusiones

1. La implementación de un sistema telefónico automatizado de consultas

de uso sencillo que satisfaga las necesidades del usuario, es fácil de

realizar con las funciones para crear IVR’s que nos ofrece asterisk.

2. Se pueden desarrollar funciones a medida de una institución usando la

interfaz de desarrollo de asterisk AGI, con el uso de la librería phpagi se

facilita en gran manera el desarrollo de aplicaciones complejas sobre

Asterisk, permitiéndonos trabajar con un motor de base de datos tan

utilizado como lo es MySQL.

3. El uso del software libre nos proporciona una gran variedad de

herramientas y librerías, tiempos menores de desarrollo lo que nos

permite la implementación de sistemas útiles, eficientes, robustos,

adaptables a la institución, escalables y a un bajo costo.

4. Para administrar la base de datos que maneja el sistema de consultas se

necesita desarrollar una aplicación que permita poder ejecutar todas las

operaciones sobre ella.

Page 67: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

Recomendaciones

1. Para utilizar este sistema con una red externa es necesario poner la

extensión del sistema en el contexto “incoming” y en el archivo

chan_dahdi.conf especificar que se trabaja con el contexto “incoming”.

2. Utilizar el sistema operativo CentOS puesto que es bastante estable y es

dedicado a los servidores.

3. Levantar los servicios que se utilizan con este sistema, tales como

MySQL, como administrador para poder acceder a los datos.

4. Descargar las voces en español que trabajan con este sistema y

colocarlas en la ruta var/lib/asterisk/sounds para su correcto

funcionamiento.

5. Renombrar la carpeta que contiene los archivos de audio de las voces en

ingles.

6. Ubicar la ruta donde se encuentre almacenado el compilador de php.

Page 68: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

Trabajo a futuro

Este sistema puede ser modificado en un corto o mediano plazo según

como vayan cambiando los requerimientos de los usuarios para hacer

distintas consultas. Por ejemplo, se podría añadir al sistema la opción de

consultar los seminarios que están próximos a ser dictados, consultar

cuándo se van a dictar y su costo y hasta cuándo se puede pagar.

También se puede añadir la opción de reservar un registro de un

seminario al digitar una tecla e inmediatamente se le indicaría al usuario

hasta cuando está vigente su cupo.

Page 69: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

APÉNDICE

Page 70: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

APÉNDICE A

Sistema administrador de la base de datos

Este sistema fue hecho con tres distintas capas para su funcionamiento: la

interfaz gráfica, el modelo de negocios y la capa que trabaja sobre la base de

datos.

La interfaz gráfica hace un llamado a una función del modelo de negocios y

el modelo de negocios a su vez llama a la capa que trabaja sobre la base de

datos.

Con esta distribución entre capas podemos organizar mejor el sistema y

hacerlo escalable, puesto que todas las capas son independientes entre sí.

El sistema tiene dos entidades: Cliente y Deuda, los cuales se encuentran en

el modelo de negocios.

/*

* To change this template, choose Tools | Templates

* and open the template in the editor.

*/

package BM;

/**

*

* @author edu

*/

public class Cliente {

private int IDCliente,edad,estado;

private String Nombres,

Apellidos,telefono,celular,domicilio,sexo,cédula;

public Cliente(){}

Page 71: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

public Cliente(int id,String Nombres,String Apellidos,int

edad,String sexo,String telefono,

String celular,String dir,String cedula,int

estado){

this.IDCliente=id;

this.Nombres=Nombres;

this.Apellidos=Apellidos;

this.edad=edad;

this.sexo=sexo;

this.telefono=telefono;

this.celular=celular;

this.domicilio=dir;

this.estado=estado;

this.cédula=cedula;

}

public void setCampos(int id,String Nombres,String

Apellidos,int edad,String sexo,String telefono,

String celular,String dir,String cedula,int

estado){

this.IDCliente=id;

this.Nombres=Nombres;

this.Apellidos=Apellidos;

this.edad=edad;

this.sexo=sexo;

this.telefono=telefono;

this.celular=celular;

this.domicilio=dir;

this.estado=estado;

this.cédula=cedula;

}

public int getId(){

return this.IDCliente;

}

public String getNoms(){

return this.Nombres;

}

public String getApe(){

return this.Apellidos;

}

public int getEdad(){

return this.edad;

}

public String getSexo(){

return this.sexo;

}

public String getTelf(){

return this.telefono;

}

Page 72: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

public String getCel(){

return this.celular;

}

public String getDir(){

return this.domicilio;

}

public int getEstado(){

return this.estado;

}

public String getCedula(){

return this.cedula;

}

}

/*

* To change this template, choose Tools | Templates

* and open the template in the editor.

*/

package BM;

import java.util.*;

/**

*

* @author edu

*/

public class Deuda {

private int IDDeuda,IDCliente,cancelado,estado,confirmacion;

private double monto;

private String descripcion;

private Date FechaPago;

public Deuda(){}

public Deuda(int IDDeuda,int IDCliente,int cancelado,int

estado,double monto,String descripcion,

Date FechaPago,int confirmacion){

this.IDDeuda=IDDeuda;

this.IDCliente=IDCliente;

this.cancelado=cancelado;

this.estado=estado;

this.monto=monto;

this.descripcion=descripcion;

this.FechaPago=FechaPago;

this.confirmacion=confirmacion;

Page 73: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

}

public void setCampos(int IDDeuda,int IDCliente,int

cancelado,int estado,double monto, Date FechaPago,int

confirmacion,String desc){

this.IDDeuda=IDDeuda;

this.IDCliente=IDCliente;

this.cancelado=cancelado;

this.estado=estado;

this.monto=monto;

this.FechaPago=FechaPago;

this.confirmacion=confirmacion;

this.descripcion=desc;

}

public int getIDDeuda(){ return this.IDDeuda;}

public int getIDCliente(){ return this.IDCliente;}

public double getMonto(){ return this.monto;}

public String getDescripcion(){ return this.descripcion;}

public int getCancelado(){ return this.cancelado;}

public int getConfirmacion(){ return this.confirmacion;}

public Date getFechaPago(){ return this.FechaPago;}

}

A continuación se muestran los pasos que sigue el sistema para registrar una

deuda a un cliente.

1. Interfaz gráfica: Nombre de la ventana: VentanaCrearDeuda

/*

* VentanaCrearDeuda.java

*

* Created on 16 de enero de 2010, 18:41

*/

package UI;

import BM.*;

import java.util.*;

import javax.swing.JOptionPane;

/**

*

* @author edu

*/

Page 74: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

public class VentanaCrearDeuda extends javax.swing.JFrame {

/** Creates new form VentanaCrearDeuda */

public VentanaCrearDeuda() {

initComponents();

}

/** This method is called from within the constructor to

* initialize the form.

* WARNING: Do NOT modify this code. The content of this

method is

* always regenerated by the Form Editor.

*/

@SuppressWarnings("unchecked")

// <editor-fold defaultstate="collapsed" desc="Generated

Code">//GEN-BEGIN:initComponents

private void initComponents() {

jLabel1 = new javax.swing.JLabel();

jSeparator1 = new javax.swing.JSeparator();

jLabel2 = new javax.swing.JLabel();

jLabel4 = new javax.swing.JLabel();

jLabel5 = new javax.swing.JLabel();

jLabel6 = new javax.swing.JLabel();

Cedula = new javax.swing.JTextField();

Cantidad = new javax.swing.JTextField();

jScrollPane1 = new javax.swing.JScrollPane();

Descripcion = new javax.swing.JTextArea();

Crear = new javax.swing.JButton();

jButton2 = new javax.swing.JButton();

jLabel7 = new javax.swing.JLabel();

jLabel8 = new javax.swing.JLabel();

jLabel9 = new javax.swing.JLabel();

C_Dia = new javax.swing.JComboBox();

C_Mes = new javax.swing.JComboBox();

C_Año = new javax.swing.JComboBox();

setTitle("Crear Deuda");

setBounds(new java.awt.Rectangle(280, 260, 0, 0));

jLabel1.setText("Crear Deuda");

jLabel2.setText("Cédula del Cliente: ");

jLabel4.setText("Cantidad: ");

jLabel5.setText("Fecha de Pago: ");

jLabel6.setText("Descripcion: ");

Descripcion.setColumns(20);

Page 75: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

Descripcion.setRows(5);

jScrollPane1.setViewportView(Descripcion);

Crear.setText("Crear");

Crear.addActionListener(new

java.awt.event.ActionListener() {

public void

actionPerformed(java.awt.event.ActionEvent evt) {

CrearActionPerformed(evt);

}

});

jButton2.setText("Borrar");

jButton2.addActionListener(new

java.awt.event.ActionListener() {

public void

actionPerformed(java.awt.event.ActionEvent evt) {

jButton2ActionPerformed(evt);

}

});

jLabel7.setText("Dia");

jLabel8.setText("Mes");

jLabel9.setText("Año");

C_Dia.setModel(new javax.swing.DefaultComboBoxModel(new

String[] { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10",

"11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21",

"22", "23", "24", "25", "26", "27", "28", "29", "30", "31" }));

C_Mes.setModel(new javax.swing.DefaultComboBoxModel(new

String[] { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10",

"11", "12" }));

C_Año.setModel(new javax.swing.DefaultComboBoxModel(new

String[] { "2010", "2011", "2012", "2013", "2014", "2015",

"2016", "2017", "2018", "2019", "2020" }));

javax.swing.GroupLayout layout = new

javax.swing.GroupLayout(getContentPane());

getContentPane().setLayout(layout);

layout.setHorizontalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEAD

ING)

.addComponent(jSeparator1,

javax.swing.GroupLayout.DEFAULT_SIZE, 400, Short.MAX_VALUE)

.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,

layout.createSequentialGroup()

Page 76: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

.addContainerGap(169, Short.MAX_VALUE)

.addComponent(jLabel1)

.addGap(164, 164, 164))

.addGroup(layout.createSequentialGroup()

.addGap(39, 39, 39)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alig

nment.LEADING)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alig

nment.LEADING)

.addGroup(layout.createSequentialGroup()

.addComponent(jLabel6)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELAT

ED)

.addComponent(jScrollPane1,

javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.PREFERRED_SIZE))

.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,

layout.createSequentialGroup()

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELAT

ED, 85, javax.swing.GroupLayout.PREFERRED_SIZE)

.addComponent(Crear)

.addGap(29, 29, 29)

.addComponent(jButton2)

.addGap(84, 84, 84)))

.addGroup(layout.createSequentialGroup()

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alig

nment.LEADING)

.addComponent(jLabel4)

.addComponent(jLabel5)

.addComponent(jLabel2))

.addGap(25, 25, 25)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alig

nment.LEADING)

.addComponent(Cedula,

javax.swing.GroupLayout.PREFERRED_SIZE, 118,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addComponent(Cantidad,

javax.swing.GroupLayout.PREFERRED_SIZE, 118,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addGroup(layout.createSequentialGroup()

Page 77: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alig

nment.LEADING)

.addComponent(jLabel7)

.addComponent(C_Dia,

javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.PREFERRED_SIZE))

.addGap(31, 31, 31)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alig

nment.LEADING)

.addComponent(jLabel8)

.addComponent(C_Mes,

javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.PREFERRED_SIZE))

.addGap(31, 31, 31)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alig

nment.LEADING)

.addComponent(C_Año,

javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addComponent(jLabel9))))))

.addContainerGap(31, Short.MAX_VALUE))

);

layout.setVerticalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEAD

ING)

.addGroup(layout.createSequentialGroup()

.addContainerGap()

.addComponent(jLabel1)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELAT

ED)

.addComponent(jSeparator1,

javax.swing.GroupLayout.PREFERRED_SIZE, 10,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELAT

ED)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alig

nment.BASELINE)

.addComponent(jLabel2)

.addComponent(Cedula,

javax.swing.GroupLayout.PREFERRED_SIZE,

Page 78: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.PREFERRED_SIZE))

.addGap(30, 30, 30)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alig

nment.BASELINE)

.addComponent(jLabel4)

.addComponent(Cantidad,

javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.PREFERRED_SIZE))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELAT

ED)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alig

nment.LEADING)

.addComponent(jLabel5)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alig

nment.BASELINE)

.addComponent(C_Dia,

javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addComponent(C_Mes,

javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addComponent(C_Año,

javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.PREFERRED_SIZE)))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELAT

ED)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alig

nment.LEADING)

.addComponent(jLabel7)

.addComponent(jLabel9)

.addComponent(jLabel8))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELAT

ED, 22, Short.MAX_VALUE)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alig

nment.LEADING)

.addComponent(jLabel6)

.addComponent(jScrollPane1,

javax.swing.GroupLayout.PREFERRED_SIZE,

Page 79: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.PREFERRED_SIZE))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELAT

ED)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alig

nment.BASELINE)

.addComponent(Crear)

.addComponent(jButton2))

.addContainerGap())

);

pack();

}// </editor-fold>//GEN-END:initComponents

private void jButton2ActionPerformed(java.awt.event.ActionEvent

evt) {//GEN-FIRST:event_jButton2ActionPerformed

// TODO add your handling code here:

}//GEN-LAST:event_jButton2ActionPerformed

private void CrearActionPerformed(java.awt.event.ActionEvent evt)

{//GEN-FIRST:event_CrearActionPerformed

// TODO add your handling code here:

if(TodosCamposCorrectos())

{

BMClientes bmc = new BMClientes();

BMDeudas bmd = new BMDeudas();

Date fechaPago =

bmd.parseFecha((String)C_Dia.getSelectedItem(),(String)C_Mes.getS

electedItem()

,(String)C_Año.getSelectedItem());

try

{

Cliente cli = bmc.BMconsultarxCI(Cédula.getText());

//el IDDeuda se genera en la base, cancelado=0 es

decir no se ha pagado, y el estado es 1

Deuda d = new

Deuda(1,cli.getId(),0,1,Double.parseDouble(Cantidad.getText()),De

scripcion.getText(),fechaPago,0);

try

{

bmd.Registrar(d);

JOptionPane.showMessageDialog(this,"Deuda

registrada exitosamente");

this.setVisible(false);

}

Page 80: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

catch(Exception e2)

{

JOptionPane.showMessageDialog(this,e2.getMessage());}

}//si entra a este catch es xq el cliente no esta

registrado o hubo algun error en la base

catch(Exception e1)

{ JOptionPane.showMessageDialog(this,"Cliente no

registrado"); }

}

}

public boolean TodosCamposCorrectos(){

int errores=0;

if( (Validaciones.IngresoVacio(Cedula.getText())) ||

(!Validaciones.ingresoIntcorrecto(Cédula.getText()))

|| Cédula.getText().length()>10)

{

JOptionPane.showMessageDialog(this,"Campo cédula mal

ingresado");

Cédula.selectAll();

errores++;

}

if( (Validaciones.IngresoVacio(Cantidad.getText())) ||

(!Validaciones.DoubleCorrecto(Cantidad.getText())) )

{

JOptionPane.showMessageDialog(this,"Cantidad mal

ingresada, se permiten maximo dos decimales y cinco enteros");

Cantidad.selectAll();

errores++;

}

if( (Validaciones.IngresoVacio(Descripcion.getText())) )

{

JOptionPane.showMessageDialog(this,"Descripcion mal

ingresada");

Descripcion.selectAll();

errores++;

}

if(

!Validaciones.DiaCorrecto((String)C_Dia.getSelectedItem(),(String

)C_Mes.getSelectedItem() ))

{

JOptionPane.showMessageDialog(this,"Mal ingreso de la

fecha");

errores++;

Page 81: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

}

if (errores>0) return false;

else return true;

}//GEN-LAST:event_CrearActionPerformed

/**

* @param args the command line arguments

*/

/*public static void main(String args[]) {

java.awt.EventQueue.invokeLater(new Runnable() {

public void run() {

new VentanaCrearDeuda().setVisible(true);

}

});

}*/

// Variables declaration - do not modify//GEN-BEGIN:variables

private javax.swing.JComboBox C_Año;

private javax.swing.JComboBox C_Dia;

private javax.swing.JComboBox C_Mes;

private javax.swing.JTextField Cantidad;

private javax.swing.JTextField Cedula;

private javax.swing.JButton Crear;

private javax.swing.JTextArea Descripcion;

private javax.swing.JButton jButton2;

private javax.swing.JLabel jLabel1;

private javax.swing.JLabel jLabel2;

private javax.swing.JLabel jLabel4;

private javax.swing.JLabel jLabel5;

private javax.swing.JLabel jLabel6;

private javax.swing.JLabel jLabel7;

private javax.swing.JLabel jLabel8;

private javax.swing.JLabel jLabel9;

private javax.swing.JScrollPane jScrollPane1;

private javax.swing.JSeparator jSeparator1;

// End of variables declaration//GEN-END:variables

}

Para poder registrar una deuda vemos que primero se valida si todos los

campos ingresado fueron correctos mediante la función

TodosCamposCorrectos, si esto no es válido entonces se muestra un

mensaje de error que indica el campo que fue mal ingresado, de lo contrario

se procede a verificar si la cédula ingresada está registrada en el sistema,

Page 82: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

sino, se muestra un mensaje de error que indica que la cédula no está

registrada, de lo contrario se procede a registrar la deuda con el identificador

del cliente que se ingresó su cédula. Esta ventana hace un llamado a la

función Registrar del modelo de negocios. En caso de que se haya producido

alguna excepción con el sistema, se muestra en pantalla.

2. Modelo de negocios: Registrar

public void Registrar(Deuda d) throws Exception

{

DBDeuda dbd = new DBDeuda();

try{ dbd.Registrar(d);}

catch(Exception e){ throw new Exception(e.getMessage());}

}

Esta función crea una instancia de la capa que trabaja sobre la base de datos

y utiliza una de sus funciones, en este caso, la función Registrar.

3. Capa de la base de datos

public void Registrar(Deuda d)throws Exception

{

Conexion cnx = new Conexion();

PreparedStatement ps=null;

SimpleDateFormat formato = new SimpleDateFormat("yyyy-MM-

dd");

try{con=cnx.conectar();}

catch(Exception e){throw new Exception(e.getMessage());}

if(con!=null)

{

try

{

String query="insert into Deudas

(IDCliente,monto,FechaPago,descripcion,cancelado,estado,Confirmac

ion) values

("+d.getIDCliente()+","+d.getMonto()+",'"+formato.format(d.getFec

haPago())+"','"+d.getDescripcion()+"',0,1,0)";

ps = con.prepareStatement(query);

ps.executeUpdate();

Page 83: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

ps.close();

}

catch(SQLException o){

throw new Exception(o.getSQLState());

}

finally{ con.close();}

}

}

Este procedimiento registra una deuda en la base de datos con toda la

información que viene desde la interfaz gráfica que fue ingresada por el

administrador del sistema. Vemos que este procedimiento puede arrojar una

excepción la cual se propaga hasta la interfaz gráfica y le muestra al usuario

el mensaje de error que se produjo o un mensaje de éxito.

Page 84: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

GLOSARIO

Page 85: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

AGI.- AGI es una interfaz de gateway para el Asterisk similar al CGI usado

por los servidores Web. Este permite el uso de diferentes lenguajes de

programación como el Perl, PHP, C a su elección. AGI es llamado a partir del

plan de discado definido en extensions.conf. La aplicación principal para el

AGI es URA con acceso a banco de datos.

Asterisk.- Es software código abierto en su totalidad, liberado bajo licencia

GPL. Soporta todas las funcionalidades de las centralitas tradicionales/IP.

Analógico.- Se refiere a las magnitudes o valores que varían con el tiempo

en forma continua (distancia, temperatura, velocidad, voltaje, frecuencia,

amplitud, etc.) y pueden representarse en forma de ondas. Las

computadoras emplean lo digital y, por lo tanto, si entra información

analógica, se debe convertir; este es el caso de la conexión a Internet por

Dial up, donde un módem convierte la señal analógica (el sonido) en digital.

CDMA.- (Code didivison Multiple Access) Acceso Múltiple de División de

Código. Norma de transferencia de información por teléfonos inalámbricos.

CLI.- (Línea de comandos, Intérprete de comandos, Terminal, Consola, Shell,

CLI, Command line interface). Tipo de interfaz para manipular un programa

o sistema operativo con instrucciones escritas. Cada instrucción es escrita en

una línea de texto y suelen ejecutarse al presionar ENTER. También se suele

permitir archivos scripts para la ejecución automática de varias líneas de

comandos que cumplen alguna función. Si bien se siguen usando en algunos

ámbitos, este tipo de interfaz ha evolucionado hacia los GUI, que son

interfaces gráficas. Sistemas operativos de la familia DOS son ejemplos de

uso de interfaz CLI

CentOS.- Community ENTerprise Operating System. CentOS es una

distribución de Linux gratuita que está basada en la distribución Red Hat

Enterprise Linux (RHEL). CentOS es muy similar al RHEL, pero gratuito,

aunque no es mantenido por Red Hat.

Digital.- Cualquier señal o modo de transmisión que utiliza valores discretos

en lugar de un espectro continúo de valores (como las señales analógicas).

Los valores pueden medir voltaje, frecuencia, amplitud, ubicación, etc. En

informática se suele utilizar el sistema digital de unos y ceros (sistema

binario) para transmitir, procesar o almacenar información. Por ejemplo, el

reloj del microprocesador trabaja en dos voltajes distintos, cada uno

Page 86: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

representa un uno o un cero. Con la combinación de unos y ceros se puede

procesar todo tipo de información.

Digium.- Digium, empresa que promueve el Asterisk, invierte en ambos

aspectos, el desenvolvimiento de código fuente y en hardware de telefonía

de bajo costo que funciona con Asterisk.

E1.- E1 es un canal especial de alta velocidad de comunicación. Es de 32

canales: 2 canales de control y 30 canales de transmisión, tiene 64 Kbps por

canal.E1=2.048 Mbps.

FXO.- Los dispositivos FXO permiten manejar una línea telefónica externa,

los dispositivos FXO solo “reciben” tono de marcado, es decir, son lo mismo

que los teléfonos análogos, necesitan de una línea (FXS) que les provea tono

para funcionar. En los jerga de los PBX se conocen como las entradas de las

troncales.

FXS.- los dispositivos FXS los cuales permiten simular el comportamiento de

una línea telefónica (voltaje, corriente, timbres…) a estos dispositivos se

conectan dispositivos FXO como los teléfonos convencionales o maquinas de

fax. En la jerga de los PBX están son las salidas de extensión.

Hardware.- En computación, término inglés que hace referencia a cualquier

componente físico tecnológico, que trabaja o interactúa de algún modo con la

computadora. No sólo incluye elementos internos como el disco duro, CD-

ROM, disquetera, sino que también hace referencia al cableado, circuitos,

gabinete, etc. E incluso hace referencia a elementos externos como la

impresora, el mouse, el teclado, el monitor y demás periféricos. El hardware

contrasta con el software, que es intangible y le da lógica al hardware

(además de ejecutarse dentro de éste). El hardware no es frecuentemente

cambiado, en tanto el software puede ser creado, borrado y modificado

sencillamente. (Excepto el firmware, que es un tipo de software que

raramente es alterado).

Internet.- Conocida como la red de redes, pues se trata de una de las redes

más grandes con un estimado de mil cien millones de usuarios (2007). Para

funcionar utiliza el conjunto de protocolos TCP/IP. Desde que fue creada la

WWW, el número de usuarios no paró de crecer; pero ese no es el único

servicio de internet: podemos acceder remotamente a otras máquinas (telnet

y SSH), transferir archivos (FTP), conversar con personas (chat y

mensajeros), servicio de correo electrónico (email), grupos de noticias, etc.

Page 87: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

IP.- Protocolo para la comunicación en una red a través de paquetes

conmutados, es principalmente usado en Internet. Los datos se envían en

bloques conocidos como paquetes (datagramas) de un determinado tamaño

(MTU). El envío es no fiable (conocido también como best effort o mejor

esfuerzo); se llama así porque el protocolo IP no garantiza si un paquete

alcanza o no su destino correctamente. Un paquete puede llegar dañado,

repetido, en otro orden o no llegar. Para la fiabilidad se utiliza el protocolo

TCP de la capa de transporte. Los paquetes poseen una cabecera con

información sobre la máquina de origen y la de destino (sus direcciones IP),

con esta información los enrutadores determinan por dónde enviar la

información. Cada paquete de un mismo archivo puede enviarse por

diferentes rutas dependiendo de la congestión del momento.

Java.- Lenguaje de programación orientado a objetos. Fue desarrollado por

James Gosling y sus compañeros de Sun Microsystems al principio de la

década de los 90.La programación en Java es compilada en bytecode, el

cuál es ejecutado por la máquina virtual Java. Usualmente se usa un

compilador JIT. El lenguaje es parecido a C y C++, aunque su modelo de

objetos es más sencillo, y fue influenciado también por Smalltalk, y Eiffel.

Kernel.- Núcleo. Parte esencial de un sistema operativo que provee los

servicios más básicos del sistema. Se encarga de gestionar los recursos

como el acceso seguro al hardware de la computadora. Se encarga también

del multiplexado, determinando qué programa accederá a un determinado

hardware si dos o más quieren usarlo al mismo tiempo. El kernel también

ofrece una serie de abstracciones del hardware para que los programadores

no tengan que acceder directamente al hardware, proceso que puede ser

complicado.

Linux.- Sistema operativo que posee un núcleo del mismo nombre. El código

fuente es abierto, por lo tanto, está disponible para que cualquier persona

pueda estudiarlo, usarlo, modificarlo y redistribuirlo. El término Linux se utiliza

para describir al sistema operativo tipo Unix que utiliza filosofías y

metodologías libres y que está constituido por la combinación del núcleo

Linux con las bibliotecas y herramientas del proyecto GNU, además de otros

proyectos libres y no libres. El término Linux también hace referencia al

kernel que utilizan múltiples sistemas operativos. Es ampliamente popular en

el mercado de servidores.

Page 88: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

Mail.- El correo electrónico (también conocido como e-mail, un término inglés

derivado de electronic mail) es un servicio que permite el intercambio de

mensajes a través de sistemas de comunicación electrónicos. El concepto se

utiliza principalmente para denominar al sistema que brinda este servicio vía

Internet mediante el protocolo SMTP (Simple Mail Transfer Protocol), pero

también permite nombrar a otros sistemas similares que utilicen distintas

tecnologías. Los mensajes de correo electrónico posibilitan el envío, además

de texto, de cualquier tipo de documento digital (imágenes, videos, audios,

etc.).

MD5.- (MD que significa Message Digest; en castellano, Resumen de

mensaje). Desarrollado por Rivest en 1991, el MD5 crea, a partir de un texto

cuyo tamaño es elegido al azar, una huella digital de 128 bits procesándola

en bloques de 512 bits. Es común observar documentos descargados de

Internet que vienen acompañados por archivos MD5: este es el hash del

documento que hace posible verificar su integridad.

MP3.- Formato de audio que combina gran calidad de sonido y poco tamaño.

Desarrollado en Alemania por Brandenburg, Popp y Grill, tres científicos del

instituto tecnológico de Fraunhofer en Ilemenau en el año 1986. Luego en

1992 la Moving Picture Experts Group (MPEG) aprobó oficialmente la

tecnología. El formato MP3 redujo el tamaño de los archivos de música

conocidos hasta diez veces casi sin perder calidad por la compresión. Su

nombre técnico es ISO MPEG Audio Layer 3.

Mysql.- MySQL es un sistema de gestión de bases de datos (SGBD)

multiusuario, multiplataforma y de código abierto. MySQL pertenece a la

compañía sueca MySQL AB, a la que le pertenece casi todos los derechos

del código fuente. La compañía desarrolla y mantiene el sistema, vendiendo

soporte y servicios, como también las licencias para usar MySQL.

ODBC.- En informática, el ODBC (Open Database Connectivity) es un

estándar de acceso a bases de datos, que permite mantener independencia

entre los lenguajes de programación, los sistemas de bases de datos (las

bases de datos y su software gestor), y los sistemas operativos. ODBC

inserta una "capa" entre la aplicación y el SGBD (sistema gestor de base de

datos). Esta capa es llamada "manejador de base de datos". El objetivo de la

capa es traducir las consultas a la base de datos (u otras acciones) por parte

de la aplicación a una consulta que el SGBD comprenda. Para que esto sea

Page 89: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

posible, tanto la aplicación como el SGBD deben ser compatibles con

ODBC.ODBC es desarrollado por Microsoft Corporation.

Open source.- Denominación para aquellas aplicaciones que tienen su

código fuente liberado. En general, los programas de código abierto suele ser

libres. Aunque existen aplicaciones de código abierto que no son libres.

Open Source es utilizado también para hacer referencia a un nuevo

movimiento de software, la Open Source Initative.

PBX.- (Private Branch Exchange) es una central telefónica privada. Permite

interconectar los teléfonos internos de una empresa. Selecciona la línea

saliente de forma (más o menos) Automática. Algunos permiten transferir

llamadas, realizar conferencias, llevar un control de los números marcados.

Es usado por empresas grandes y pequeñas para reducir costos. Hoy en día

muchos PBX soportan el protocolo IP.

PHP.- (PHP Hypertext Pre-processor). Lenguaje de programación usado

generalmente en la creación de contenidos para sitios web. Es un lenguaje

interpretado especialmente usado para crear contenido dinámico web y

aplicaciones para servidores, aunque también es posible crear aplicaciones

gráficas utilizando la biblioteca GTK+. Generalmente los scripts en PHP se

embeben en otros códigos como HTML, ampliando las posibilidades del

diseñador de páginas web enormemente. La interpretación y ejecución de los

scripts PHP se hacen en el servidor, el cliente (un navegador que pide una

página web) sólo recibe el resultado de la ejecución y jamás ve el código

PHP. Permite la conexión a todo tipo de servidores de base de datos como

MySQL, Postgres, Oracle, ODBC, DB2, Microsoft SQL Server, Firebird y

SQLite. PHP es una alternativa a otros sistemas como el

ASP.NET/C#/VB.NET de Microsoft o a ColdFusion de Macromedia, a

JSP/Java de Sun Microsystems, y a CGI/Perl. La ventaja con los de Microsoft

o Macromedia es que es totalmente gratuito, no hay que pagar licencias.

PHP-AGI.- Librería que encapsula las funciones de asterisk para que sea

mas fácil desarrollar programas en asterisk para php.

PSTN.- (Public switched telephone network o PSTN). Red telefónica para la

transferencia de voz y datos. No es efectiva para la transmisión de datos.

RSA.- Tipo de certificado digital para su uso en transmisiones seguras por

SSL, especialmente para la protección de sitios con acceso por HTTPS. Es

emitida por VeriSign.

Page 90: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

Script.- Grupo de lenguajes de programación que son típicamente

interpretados y pueden ser tipiados directamente desde el teclado. Los

scripts son un conjunto de instrucciones generalmente almacenadas en un

archivo de texto que deben ser interpretados línea a línea en tiempo real para

su ejecución, se distinguen de los programas, pues deben ser convertidos a

un archivo binario ejecutable para correrlos. Los scripts pueden estar

embebidos en otro lenguaje para aumentar las funcionalidades de este, como

es el caso los scripts PHP o Javascript en código HTML.

Servidor.- En redes, computadora central en un sistema de red que provee

servicios a otras computadoras. En internet, los servidores son los

proveedores de todos sus servicios, incluyendo la WWW (las páginas web),

el FTP, el correo electrónico, los grupos de noticias, etc. Básicamente, una

computadora conectada a internet emplea una dirección (dirección web,

dirección IP, dirección FTP, etc.) para poder comunicarse con el servidor al

que le corresponde. La computadora envía (utilizando el protocolo adecuado)

las distintas solicitudes al servidor, y el servidor responde (empleando el

protocolo adecuado) las solicitudes. El servidor también puede solicitar datos

de la computadora, y la computadora le responde.

Softphone.- software que realiza una simulación de teléfono en una

computadora, permitiendo así la comunicación con otras computadoras que

posean este mismo software, usando un VSP (VoIP Service Provider

Proveedor de Servicios de VoIP, carrier voip, etc). Lo más comunes son:

Skype, WengoPhone, Gizmo, XLite, el Aim, SjPhone, y últimamente Zoiper.

T1.- (T-carrier, T-CX). En telecomunicaciones, la portadora-T es la

designación de un sistema genérico de telecomunicaciones para los sistemas

digitales multiplexados. Fueron originalmente desarrollados por los

Laboratorios Bell y utilizados en Estados Unidos y Japón. La unidad básica

del sistema de portadoras-T es el DS0 que tiene una velocidad de

transmisión de 64 kbit/s y es normalmente usado para un circuito de voz. El

sistema de Portadoras–E, o sistema europeo de portadoras, es incompatible

con las Portadoras-T y se utiliza en el todo el mundo excepto en Japón y los

Estados Unidos.

Telefonía IP.- Hace referencia a comunicaciones telefónicas realizadas a

través de redes TCP/IP. A diferencia de PSTN, que se compone de señales

analógicas y digitales a través de una red con conmutación de circuitos, la

Page 91: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

telefonía IP utiliza conmutación de paquetes. Toda la información que se va a

transmitir a través de la red se divide en paquetes de datos.

Voz sobre IP.- Dice que es la tecnología que posibilita el uso de redes IPs

como medio de transmisión de voz. El concepto es simple y consiste en

convertir los paquetes de voz, analógicos, en paquetes digitales y hacerlos

transitar por internet. Con un relativo ancho de banda (128Kbps ya se

garantiza una buena calidad de voz, siendo de 256Kbps en adelante mejor)

es posible usar la capacidad de transporte del protocolo IP para transmitir

voz.

X86.- Nombre dado al grupo de microprocesadores de la familia de Intel y a

la arquitectura que comparten estos procesadores. Existen X86 tanto de 16

bits como de 32 bits, estos últimos llamados IA-32 (x86-32). Los

microprocesadores x86 fueron 8086, 80286, 80386, 80486. Luego continuó

con el Pentium. Su sucesor inmediato es el x86-64, creado por AMD (con el

nombre de AMD64), y luego Intel creó su propia versión llamada Intel 64.

Ambas implementan los 64 bits y son muy similares entre sí.

Zoiper.- Véase softphone.

Page 92: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

BIBLIOGRAFÍA

Page 93: “SISTEMA TELEFÓNICO AUTOMÁTICO PARA CONSULTAS DE ... · Figura 3.6 Modificación de una deuda de un cliente ... Por ejemplo, una institución comercial o de educación la cual

1. Matthew Asham,Pagina oficial de la clase phpagi,

http://phpagi.sourceforge.net, 2004.

2. asteriskguide.com, Integración de Asterisk usando AGI y AMI,

http://www.asteriskguide.com/mediawiki/index.php/Integraci%C3%B3n_d

e_Asterisk_usando_AGI_y_ AMI, 2010.

3. Loris Santamaria, Introducción a Asterisk y la telefonía IP,

http://www.solucionesit.com.ve/tisol/files/PresentacionAsterisk.pdf, 2010.

4. Portal de informática, internet, tecnologías y web,

http://www.alegsa.com.ar/, 2009.

5. asteriskguide.com, Introducción al Asterisk,

http://www.asteriskguide.com/

mediawiki/index.php/Introducc%C3%ADon_al_Asterisk, 2009.

6. Universidad de Quevedo, Sistemas de Telecomunicaciones,

http://www.uteq.edu.ec/facultades/empresariales/informatica/tutoriales/sis

comunicacionesii2004/materia/e1yt1.htm, 2004.

7. Proyecto de grado profesional de un estudiante de la UNAD,

Diferencia entre puertos FXS y FXO,

http://proyectopica.wordpress.com/2008/11/27/diferencia-entre-puertos-

fxs-y-fxo/, 2008.

8. Kioskea, Firmas electrónicas,

http://es.kioskea.net/contents/crypto/signature.php3, 2010.

9. Entender VoIP (Voz sobre IP), Conceptos de Voz sobre IP,

http://www.informatica-hoy.com.ar/voz-ip-voip/Entender-VoIP-Voz-sobre-

IP.php, 2010.

10. VOIP-Info.org, Asterisk AGI, http://www.voip-

info.org/wiki/view/Asterisk+AGI, 2003.

11. Wikipedia, Asterisk, http://es.wikipedia.org/wiki/Asterisk, 2010.

12. asterisk_agi[VoIP en español], Asterisk AGI,

http://voip.megawan.com.ar/doku.php/asterisk_agi, 2006.

13. Van Meggelen J., Smith J. y Madsen L., Conceptos de Asterisk,

Asterisk The Future of Telephony, Editorial O’Relly Media, 2005.