Memoria PDF
Memoria PDF
Memoria PDF
Estudis:
Enginyeria de Telecomunicaci
Autor:
2014
A Isaac y a mi familia,
por la infinita paciencia que han
demostrado a lo largo de este viaje
II
Resumen
iii
IV
CONTENIDO
1 Introduccin
1.1 P LATAFORMA DE V O IP . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2 C ASOS DE USO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
10
11
2 Conceptos Generales
2.1 V O IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.1.1 Q U ES LA V O IP? . . . . . . . . . . . . . . . . . . . . . . . .
2.1.2 A RQUITECTURA . . . . . . . . . . . . . . . . . . . . . . . . . .
2.1.2.1 C OMPONENTES FUNDAMENTALES DE UNA RED V O IP .
2.1.2.2 T RANSMISIN DE LA V O IP POR LA RED . . . . . . . .
2.1.3 C DECS DE AUDIO . . . . . . . . . . . . . . . . . . . . . . . .
2.1.4 P ROTOCOLOS . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.1.4.1 SIP . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.1.4.1.1 E JEMPLO DE UNA COMUNICACIN SIP/RTP
2.1.4.2 H.323 . . . . . . . . . . . . . . . . . . . . . . . . .
2.1.4.3 IAX . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2 A STERISK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2.1 Q U ES A STERISK ? . . . . . . . . . . . . . . . . . . . . . . .
2.2.2 C ONCEPTOS BSICOS . . . . . . . . . . . . . . . . . . . . . . .
2.2.3 A RQUITECTURA . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2.3.1 S ERVICIOS Y FUNCIONALIDADES QUE OFRECE . . . . .
2.2.4 I NTEGRACIN CON LA RED CONMUTADA DE TELEFONA . . . . .
2.2.4.1 TARJETAS ANALGICAS . . . . . . . . . . . . . . . . .
2.2.4.2 TARJETAS DIGITALES . . . . . . . . . . . . . . . . . .
2.3 A NDROID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3.1 Q U ES A NDROID ? . . . . . . . . . . . . . . . . . . . . . . . .
13
13
13
14
14
15
16
17
17
18
20
20
21
21
22
23
25
26
26
26
27
27
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
2.3.2
2.3.3
2.3.4
2.3.5
2.3.6
2.3.7
2.3.8
2.3.1.1 A RQUITECTURA . . . . . . . . . . . . . .
2.3.1.2 A PLICACIONES . . . . . . . . . . . . . .
2.3.1.2.1 A NATOMA DE UNA APLICACIN
2.3.1.2.2 A NDROID M ANIFEST . . . . . .
A CTIVIDADES . . . . . . . . . . . . . . . . . . . .
2.3.2.1 C ICLO DE VIDA DE UNA A CTIVIDAD . . .
I NTENTS . . . . . . . . . . . . . . . . . . . . . . .
I NTERFAZ DE U SUARIO . . . . . . . . . . . . . . .
2.3.4.1 C OMPONENTES DE LA PANTALLA . . . . .
2.3.4.1.1 V ISTAS . . . . . . . . . . . . .
2.3.4.1.2 L AYOUTS . . . . . . . . . . . .
2.3.4.2 M ENS . . . . . . . . . . . . . . . . . .
2.3.4.3 D ILOGOS . . . . . . . . . . . . . . . . .
2.3.4.4 N OTIFICACIONES . . . . . . . . . . . . .
S ERVICIOS . . . . . . . . . . . . . . . . . . . . . .
B ROADCAST R ECEIVERS . . . . . . . . . . . . . .
P ERSISTENCIA DE D ATOS . . . . . . . . . . . . . .
2.3.7.1 S HARED P REFERENCES . . . . . . . . . .
2.3.7.2 B ASE DE DATOS LOCAL . . . . . . . . . .
LBS (L OCATION B ASED S ERVICES ) . . . . . . . .
3 Implementacin de la Centralita
3.1 O BJETIVO . . . . . . . . . . . . . . . . . .
3.2 E NTORNO DE SIMULACIN . . . . . . . . .
3.3 I NSTALACIN DEL ENTORNO . . . . . . . .
3.3.1 TARJETA D IGIUM TDM808 . . . . .
3.3.2 C ANCELADOR DE ECO O SLEC . . . .
3.3.3 G ESTOR DE CORREO . . . . . . . .
3.3.4 R ECONOCIMIENTO DE VOZ . . . . .
3.3.5 S OFTPHONE . . . . . . . . . . . . .
3.4 C ONFIGURACIONES . . . . . . . . . . . . .
3.4.1 TARJETA D IGIUM Y C ANCELADOR DE
3.4.2 C ANALES DAHDI . . . . . . . . . .
3.4.3 A STERISK . . . . . . . . . . . . . .
3.4.3.1 U SUARIOS . . . . . . . . .
3.4.3.2 D IALPLAN . . . . . . . . .
3.4.3.3 M SICA EN ESPERA . . . .
3.4.3.4 B UZN DE VOZ . . . . . .
3.4.3.5 F OLLOW M E . . . . . . .
3.4.3.6 S ALA DE C ONFERENCIAS .
3.4.3.7 C OLAS . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
ECO O SLEC
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
27
28
29
30
31
31
32
33
33
33
34
35
35
36
36
37
37
37
37
38
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
39
39
39
40
41
41
42
42
42
43
43
46
47
47
48
50
50
50
51
51
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
52
52
55
56
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
65
65
65
66
67
67
68
70
70
71
75
76
83
84
84
86
86
88
92
93
95
97
111
113
113
113
113
114
114
116
116
117
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
A.2.1
A.2.2
A.2.3
A.2.4
A.2.5
A.2.6
A.2.7
A.2.8
A.2.9
C ANALES DAHDI . . . . . . .
U SUARIOS . . . . . . . . . . .
D IALPLAN . . . . . . . . . . .
M SICA EN ESPERA . . . . . .
B UZN DE VOZ . . . . . . . .
A.2.5.1 G ESTOR DE CORREO
F OLLOW M E . . . . . . . . . .
S ALA DE C ONFERENCIAS . . .
C OLAS . . . . . . . . . . . . .
T RANSFERENCIA Y PARKING DE
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
LLAMADAS
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
117
118
119
125
125
126
127
127
127
127
LISTA DE FIGURAS
11
2.1
2.2
2.3
2.4
2.5
2.6
2.7
15
18
19
23
29
32
40
58
59
60
61
62
63
64
68
3.1
3.2
3.3
3.4
3.5
3.6
3.7
3.8
34
72
73
74
LISTA DE FIGURAS
4.5 Pantalla mostrada durante las llamadas en las aplicaciones. . . . . . . . 75
4.6 a) Notificacin que aparece cuando no hay ninguna cuenta activa. b)
Notificacin permanente que aparece cuando hay una cuenta logada en
el servidor SIP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
4.7 a) Notificacin que aparece al no poder registrar la cuenta especificada
en el servidor SIP. b) Notificacin que indica la existencia de llamadas
perdidas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
4.8 Listado de cuentas con acceso protegido por contrasea. . . . . . . . . . 85
4.9 Men principal del softphone para la recepcin del centro. . . . . . . . . 93
4.10 a) Notificacin de alertas de batera. b) Listado de alertas de batera. . . 95
4.11 a) Mapa de alertas con 2 usuarios (mostrando la informacin de uno de
ellos). b) Mapa con 2 usuarios fuera de la zona permitida (rojos) y un
usuario en seguimiento (verde). . . . . . . . . . . . . . . . . . . . . . . . 98
4.12 Dilogo mostrado cuando no hay alertas de posicionamiento en el mapa. 100
4.13 a) Men del mapa de alertas. b) Dilogo para iniciar un seguimiento. . . 104
B.1 Pantalla inicial del Android Manager. . . . . . . . . . . . . . . . . . . . .
B.2 Pantalla del Android Manager con todos los paquetes disponibles para
instalar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
B.3 Pantalla del Android Manager para instalar licencias. . . . . . . . . . . .
B.4 Ventana para instalar el plugin ADT en Eclipse. . . . . . . . . . . . . . .
B.5 Pantalla con los paquetes necesarios para instalar el plugin ADT. . . . . .
B.6 Pantalla para aceptar las licencias de los paquetes del plugin ADT. . . . .
B.7 Pantalla de Eclipse con las opciones del Android SDK instaladas. . . . . .
B.8 Definicin de la ubicacin de la base de datos con usuario y contrasea.
B.9 Pantalla inicial del cliente grfico MySQL Navigator. . . . . . . . . . . . .
B.10 Pantalla de creacin de la tabla de alertas MyAlerts. . . . . . . . . . . . .
B.11 Pantalla de creacin de la tabla de coordenadas MyCoordinates. . . . . .
B.12 Base de datos Alcatraz con sus dos tablas: MyAlerts y MyCoordinates. . .
131
131
132
132
133
134
135
136
137
138
139
140
LISTA DE TABLAS
25
28
48
76
. . . . . . . . . . .
LISTA DE TABLAS
1
Introduccin
la utilizacin de la VoIP ha tenido un gran crecimiento en el
mbito de las telecomunicaciones, pasando de ser algo lejano a ser una tecnologa
utilizada a diario. Sus mltiples caractersticas y ventajas son las que nos inspiraron
para realizar este proyecto, aunque los objetivos del mismo fueron cambiando y
amplindose a medida que avanzaba el proyecto.
La idea principal era realizar un proyecto basado en VoIP, cosa que se ha mantenido
a lo largo de todo el desarrollo. En principio, se empez con el estudio de Asterisk
con la idea de desarrollar una centralita telefnica, por ejemplo, para una empresa y
utilizarla como punto de partida. Al estudiar las posibilidades de Asterisk se decidi
realizar un cambio de direccin y crear algo que pudiera aprovechar el trabajo ya
realizado. Fue entonces cuando se decidi implementar una aplicacin Android que
utilizara la VoIP, como un softphone. Una vez terminada la aplicacin, se pens en
conseguir un valor aadido para el mismo, que acabara de redondear el proyecto y
que unificara la idea de la centralita con el softphone realizado.
Como ltimamente casi todas las aplicaciones Android utilizan de una forma u otra
la ubicacin del usuario, se decidi que el valor aadido de las aplicaciones estara
relacionado con el sensor GPS del smartphone. Para ello se enfoc el proyecto a un
hipottico caso real: una residencia de ancianos. Algunas residencias y centros de
da permiten a sus residentes salir a pasear o a comprar por sus alrededores. Como
algunos de ellos pueden perderse o desorientarse una vez en el exterior, se desea
mantener su ubicacin controlada cuando se alejan demasiado de la residencia.
As es como se consigui el proyecto final: una plataforma de VoIP diseada especialmente para su utilizacin en una residencia de ancianos. La centralita realizada
en Asterisk se convirti en la centralita de la residencia de ancianos. Por ltimo, a
partir del softphone inicial, se crearon dos softphones con distintas caractersticas: uno
CAPTULO 1. I NTRODUCCIN
diseado para los residentes del centro y el otro diseado especficamente para los
trabajadores, concretamente para el personal de la recepcin.
Los objetivos finales son:
* Implantacin de Asterisk.
* Centralita Asterisk con reconocimiento de voz para utilizar en la residencia de
ancianos. Se le aaden servicios de valor aadido como son: buzn de voz,
msica en espera, etc.
* Softphone para los residentes: softphone con un sistema de alertas de posicionamiento y de batera baja.
* Softphone para la recepcin del centro: softphone con un sistema que permita
gestionar las alertas generadas por los residentes.
* Implantacin de una base de datos LAMP para los sistemas de alertas.
Hoy en da, el sector de las telecomunicaciones es un mundo de evolucin rpida
y constante. Nuevas ideas y tecnologas salen al mercado en intervalos de tiempo
muy cortos. El desarrollo open source es mucho ms capaz de adaptarse a los rpidos
cambios tecnolgicos, lo que le proporciona una enorme ventaja competitiva. Por ese
motivo, todo el proyecto est basado en tecnologa open source.
1.1
P LATAFORMA
DE
V O IP
10
1.2. C ASOS
DE USO
1.2
C ASOS
DE USO
11
CAPTULO 1. I NTRODUCCIN
recepcin est ocupado y no se pueda atender la llamada, se muestra igualmente el
mapa con las coordenadas.
Residente entra en la zona permitida
Cuando el residente vuelve a acercarse a la residencia, la aplicacin del residente
realiza de forma automtica una llamada SIP (perdida) a una extensin especial de
Asterisk. Entonces, Asterisk pone en contacto, mediante otra llamada, al residente
con el softphone de recepcin para informar del evento. A la vez, la aplicacin del
residente deja de enviar sus coordenadas GPS.
Cuando se cuelga la llamada, la aplicacin de recepcin muestra un mapa de los
alrededores de la residencia. Si quedan residentes fuera de la zona permitida, se
siguen mostrando sus coordenadas en el mapa. Si era el nico residente fuera de la
zona, aparece un dilogo en la pantalla informando de que no hay ningn residente
que localizar.
Recepcin pide un seguimiento
Desde la aplicacin de recepcin se puede solicitar la ubicacin de un residente que
no est fuera de la zona permitida. Al hacer la peticin, la aplicacin de recepcin
lanza una llamada a una extensin especial de Asterisk, especificando la identificacin
del residente que se quiere seguir. Entonces, Asterisk realiza una llamada perdida al
softphone del residente, que sirve para que ste empiece a enviar sus coordenadas
GPS a la base de datos. En el mapa de la aplicacin de recepcin se muestran tanto la
ubicacin de este residente como las de los que estn fuera de la zona permitida.
Cuando se desea finalizar el seguimiento, la aplicacin de recepcin lanza una
llamada a otra extensin especial de Asterisk indicando, igual que antes, el identificador del residente. Entonces, Asterisk realiza una llamada perdida al softphone
del residente, que sirve para que ste deje de enviar sus coordenadas a la base de datos.
Alerta de batera baja
Cuando el smartphone del residente detecta que el nivel de batera est por debajo del
15%, la aplicacin registra este hecho en la base de datos. La aplicacin de recepcin
comprueba, de forma peridica, la informacin sobre las alertas de batera en la base
de datos. Si hay alguna, muestra un listado de los residentes que se encuentran en esta
situacin.
12
2
Conceptos Generales
2.1
2.1.1
V O IP
Q U ES LA V O IP?
13
2.1.2
A RQUITECTURA
2.1.2.1
C OMPONENTES
V O IP
14
2.1. V O IP
FIGURA 2.1: Principales componentes de una red VoIP.
2.1.2.2
T RANSMISIN
DE LA
V O IP
POR LA RED
Los paquetes de VoIP se transmiten sobre la red IP utilizando el modelo TCP/IP con
algunas diferencias. Estas diferencias residen en los protocolos utilizados en cada capa
por los paquetes de datos y los paquetes de VoIP. En algunas capas se utilizan los
mismos para ambos; en otras, se utilizan protocolos propios para cada tipo.
A continuacin se detallan las funciones de las cinco capas del modelo TCP/IP con
los protocolos utilizados en los paquetes de VoIP:
* Aplicacin: Asegura la calidad y entregabilidad de los paquetes VoIP. Se utilizan
los siguientes protocolos:
NTP: Network Time Protocol. Permite sincronizacin, lo que nos asegura que
las seales son transmitidas y recibidas en el margen de tiempo adecuado
para asegurar calidad.
RTP: Real-time Transport Protocol. Proporciona funciones de transporte de
red extremo-a-extremo para las seales de voz digitales encapsuladas en los
paquetes VoIP.
RTCP: Real-time Transport Control Protocol. Monitoriza la entrega de las
seales de voz y proporciona funciones mnimas de control para asegurar la
entrega de los paquetes.
* Transporte: El protocolo UDP2 transporta los paquetes desde el origen al destino.
2
15
2.1.3
C DECS DE AUDIO
Los cdecs5 son los medios por los cuales se puede convertir la seal de voz analgica a
digital para poder transportarla por la red. Se pueden definir como modelos matemticos usados para codificar y comprimir digitalmente informacin de audio analgica.
La mayora tienen en cuenta la capacidad del cerebro humano de interpretar la
informacin recibida a pesar de que est incompleta. Los algoritmos de compresin de
voz se aprovechan de nuestra tendencia a interpretar lo que creemos que debemos or
en vez de lo que realmente omos. El propsito de los algoritmos de codificacin es
encontrar un equilibrio entre eficiencia y calidad.
En VoIP se pueden utilizar una gran variedad de cdecs de audio. La eleccin para
cada caso vara en funcin de los requerimientos de calidad de sonido, ancho de banda
necesario y carga computacional. A continuacin se enumeran y describen algunos de
los ms utilizados.
G.711 Cdec fundamental de la PSTN estandarizado por la ITU en 1972. Tiene una
frecuencia de muestreo de 8 kHz y utiliza la modulacin PCM6 . Existen dos
mtodos de compansin7 : law en Amrica del Norte y Japn y a law en
el resto del mundo. La principal diferencia radica en el nmero de muestras
3
16
2.1. V O IP
por palabra (de 8 bits) que se utilizan: 14 muestras ( law) y 13 muestras a law. Ambos tienen un bit rate de 64 kbps. G.711 es el cdec base del
que derivan todos los dems y es el que conlleva una menor carga computacional.
G.729A Este cdec presenta una calidad de sonido muy buena teniendo en cuenta
el poco ancho de banda que utiliza, slo 8 kbps. Para ello utiliza el mtodo de
compresin de habla CS-ACELP8 . Debido a patentes, este cdec no se puede usar
sin pagar una licencia. Adems, la carga computacional de este algoritmo es
bastante elevada.
GSM9 Este cdec, que opera a 13 kbps, es el preferido de Asterisk. No requiere licencia
y ofrece un gran rendimiento en relacin a los requerimientos de CPU. La calidad
de sonido se considera ligeramente peor que la obtenida con G.729A.
2.1.4
P ROTOCOLOS
Los protocolos propios de las redes IP no fueron diseados para soportar streaming
en tiempo real. Los terminales de estas redes suelen esperar la recepcin de paquetes
perdidos, piden retransmisiones o simplemente los ignoran. Obviamente, la forma en
la que hablamos es totalmente incompatible con la manera en que los protocolos de
Internet transportan los datos: no se puede aceptar la prdida de letras o palabras o
los retrasos apreciables entre emisor y receptor.
El mecanismo para llevar a cabo una conexin de VoIP consta de una serie de
intercambios de sealizacin entre los terminales (y gateways intermedios) que
culminan en dos flujos de media continuos que transportan la conversacin (uno para
cada direccin). Manejar esto es el objetivo de los protocolos de VoIP. A continuacin
se definen los ms relevantes y utilizados.
2.1.4.1
SIP10
Protocolo desarrollado por el IETF11 para establecer, modificar y terminar sesiones multimedia. Estas sesiones incluyen llamadas de voz y vdeo, conferencias multimedia, etc.
8
17
SIP es un protocolo de sealizacin de la capa de aplicaciones diseado especialmente para ser independiente de la capa de transporte; puede funcionar con los
protocolos UDP y TCP indistintamente. Est basado en texto, con una sintaxis similar
a la de otras familias de protocolos como HTTP y SMTP. La premisa de SIP es que cada
terminal de una conexin es un par; se utiliza una estructura cliente/servidor basada
en un modelo de peticin/respuesta para autenticar a sus usuarios.
Este protocolo utiliza el puerto 5060 para la sealizacin. No transporta medios
(voz y/o vdeo) entre extremos, para ello se utiliza el protocolo RTP. Se necesitan dos
puertos RTP para cada conexin (normalmente entre el 10.000 y el 20.000). Una
tipologa corriente para ilustrar la utilizacin de estos dos protocolos, conocida como
Trapezoide SIP, se puede observar en la figura 2.2. Cuando se desea realizar una
llamada de A a B, el establecimiento de la llamada y toda su sealizacin se realiza a
travs de servidores proxy mediante el protocolo SIP. En cuanto se inicia la llamada,
los terminales se comunican directamente entre ellos (si es posible), utilizando el
protocolo RTP, para que los datos no consuman recursos de los proxys. Debido a esta
separacin, SIP da problemas en infraestructuras de red con NAT12 y se suele necesitar
un servidor STUN para solucionarlos.
Las ventajas de este protocolo residen en su gran nivel de aceptacin y su arquitectura flexible. Actualmente, SIP ha reemplazado a H.323 como protocolo de eleccin
para la negociacin del transporte VoIP.
18
2.1. V O IP
FIGURA 2.3: Tramas SIP y RTP de una llamada telefnica de VoIP.
ejemplo hay tres agentes a tener en cuenta: los clientes 501 (IP 192.168.1.33) y 202
(IP 192.168.1.34), siendo el primero el que inicia y finaliza la llamada; y el servidor de
VoIP (IP 192.168.1.38). En la figura 2.3 se muestran las tramas ms relevantes de esta
llamada.
* Tramas 1-4: se realiza la negociacin inicial entre el llamante y el servidor. El
cliente 501 realiza una peticin al servidor (INVITE) para iniciar una comunicacin con el cliente 202. En esta peticin se especifica tambin la informacin
de la sesin: tipo de medio que se transportar (audio), puerto (4002) y protocolo (RTP), entre otros. El servidor confirma al cliente 501 la posibilidad de la
conexin (OK) especificando a su vez la informacin de la sesin: audio, puerto
11706 y protocolo RTP.
* Tramas 5-7: se realiza la negociacin entre el servidor y el llamado. El servidor
indica al cliente 202 que el cliente 501 quiere establecer una comunicacin con
l mediante otro INVITE con informacin de sesin: audio, puerto 14046 y protocolo RTP. El cliente 202 recoge esta peticin y cuando est preparado lo indica
al servidor comunicando su estado (Ringing). En este momento, el telfono del
cliente 202 empieza a sonar.
* Tramas 8-9: El cliente 202 descuelga el telfono. Esto se indica al servidor mediante un paquete (OK) con la informacin de la sesin: audio, puerto 4006 y
protocolo RTP. A partir de este momento, se inicia la conversacin.
* Tramas 10-17: Estas tramas representan el intercambio de datos (audio) entre los
dos terminales. Como se ha indicado antes, el protocolo utilizado para ello es el
RTP.
19
2.1.4.2
H.323
Protocolo desarrollado por la ITU13 en 1996 como medio para transmitir comunicaciones de voz, vdeo, datos y fax sobre redes IP manteniendo conectividad con la PSTN.
Originalmente, fue diseado para proporcionar un mecanismo de transporte IP para
videoconferencias y desde entonces ha evolucionado para cubrir todas las necesidades
de la VoIP. La sealizacin de llamadas est basada en el protocolo Q.391 de la ITU-T
y es adecuada para transmitir llamadas a travs de redes utilizando una mezcla de IP,
PSTN y ISDN.
H.323 es un protocolo relativamente seguro que no necesita elementos de seguridad adicionales a los requeridos por cualquier conexin va Internet. Igual que SIP,
utiliza el protocolo RTP para transportar las comunicaciones de medios y por tanto,
presenta los mismos problemas en topologas de red con NAT. Uno de los factores de
su poca popularidad reside en su complejidad.
2.1.4.3
IAX14
Protocolo abierto desarrollado por Digium con el propsito de establecer comunicaciones entre servidores Asterisk. Pese a ello, IAX no est limitado slo a Asterisk:
cualquiera puede usarlo y es soportado por varios proyectos de telecomunicaciones
open source.
Su objetivo principal es minimizar el ancho de banda usado en las transmisiones de
datos, voz y vdeo sobre IP y proporcionar soporte nativo para ser transparente a NAT.
Con ese fin, IAX multiplexa la sealizacin de canal y el flujo de datos sobre un nico
stream UDP entre los extremos, utilizando el puerto 4569.
El protocolo IAX original ha quedado obsoleto en favor de su nueva versin, IAX2.
Este permite la utilizacin de un gran nmero de cdecs de audio y puede transportar
cualquier tipo de datos. Adems, est considerado uno de los protocolos ms sencillos
13
14
20
2.2. A STERISK
para implementar en redes seguras.
2.2
2.2.1
A STERISK
Q U ES A STERISK ?
Asterisk es un software open source que implementa las funciones de una central
telefnica PBX15 . Este proyecto de comunicaciones fue creado en 1999 por Mark
Spencer, miembro fundador de la compaa Digium, principal desarrolladora de
Asterisk. Est publicado como open source bajo la licencia GNU GPL16 . Aunque
originalmente fue diseado para funcionar en Linux, tambin existen versiones para
otros sistemas operativos como BSD, Mac OS X, Solaris y Windows.
El proyecto Asterisk, en combinacin con el proyecto de telefona Zapata17 , ha
evolucionado con los aos, pasando de simplemente conectar llamadas de telfono
a convertirse en una plataforma que puede manejar voz, vdeo y texto a travs de
docenas de interfaces tanto fsicos como virtuales.
El poder de Asterisk reside en su naturaleza customizable. Es muy flexible, dando al
usuario la libertad de decidir lo que quiere implementar en funcin de sus necesidades.
Separa las funcionalidades y caractersticas de varias PBXs en componentes que pueden
interconectarse de manera que cada usuario puede customizar su solucin como mejor
le convenga. Esto diferencia a Asterisk de otras soluciones corporativas cerradas que
aportan una solucin nica, dejando muchas veces funcionalidades deseadas fuera.
Asterisk cuenta con toda una comunidad, liderada por Digium, que lo desarrolla y
soporta. Esta comunidad ha sido valorada como factor clave para en el crecimiento de
la VoIP. Entre sus miembros se encuentran profesionales del mbito de las telecomunicaciones, de redes y de tecnologas de la informacin.
15
21
2.2.2
C ONCEPTOS BSICOS
Canales
Los canales son las conexiones que realizan una llamada entrante o saliente a la PBX
Asterisk. Cada llamada se realiza o recibe mediante un canal distinto. Asterisk no
hace ninguna distincin entre ellos. Entre los canales soportados ms importantes se
encuentran: SIP, IAX2, H323, MGCP, Console y DAHDI.
Dialplan
El dialplan es el corazn de Asterisk. Todos los canales que llegan al sistema pasan
por el dialplan, que contiene los scripts de flujo de llamadas que determinan el
manejo de las llamadas entrantes y salientes. Est dividido en secciones llamadas
contextos. Dentro de estos contextos encontramos las extensiones y la definicin de
las actuaciones o pasos que debe realizar el sistema al recibir una llamada para cada
extensin.
El dialplan puede escribirse de tres formas distintas: utilizando la sintaxis
tradicional de Asterisk (editanto extensions.conf); usando AEL18 (modificando
extensions.ael); o utilizando LUA (editando extensions.lua).
Contextos
Un contexto es, bsicamente, una coleccin de extensiones. Cuando se crean canales,
estos siempre deben ubicarse en un contexto. Esto implica que las llamadas originadas
desde ese canal se ubicarn en dicho contexto.
El objetivo ms importante de los contextos es ofrecer seguridad, evitando que las
diferentes secciones del dialplan interacten entre ellas. Los canales slo podrn
realizar llamadas hacia las extensiones incluidas en su contexto o acceder a funcionalidades propias del mismo.
Existen dos contextos especiales: general (define configuraciones generales para
todos los contextos) y globals (contiene variables disponibles para todo el dialplan).
Extensiones
Al contrario que en los sistemas telefnicos convencionales, donde las extensiones
se asocian a terminales, interfaces, mens, etc., en Asterisk las extensiones se
asocian a un listado de instrucciones a ejecutar. Estas instrucciones pueden tanto
llamar a un nmero de telfono como acceder al buzn de voz o cualquier otra funcin.
18
22
2.2. A STERISK
FIGURA 2.4: Arquitectura modular de Asterisk.
2.2.3
A RQUITECTURA
Asterisk est formado por un conjunto de bloques o mdulos que el usuario tiene
a su disposicin para crear aplicaciones de comunicacin. Por este motivo se hace
referencia a Asterisk con los trminos tool-kit o plataforma de desarrollo.
Estos mdulos son componentes que proporcionan una funcionalidad especfica,
por ejemplo, un driver para un canal o un recurso que permite la conexin con una
tecnologa externa. Estos pueden aadirse al sistema en funcin de las necesidades
del usuario/desarrollador. Los mdulos que se quieran utilizar suelen definirse en el
momento de la instalacin, aunque tambin pueden aadirse a posteriori, especificndolos en el archivo de configuracin adecuado.
En la figura 2.4 se representan los tipos de mdulos que se pueden encontrar en
Asterisk. A continuacin se incluye un listado con una breve descripcin de cada uno
de ellos y algunos ejemplos.
* Applications: Aplicaciones del dialplan. Se utilizan en el fichero extensions.conf
23
24
2.2. A STERISK
TABLA 2.1: Cdecs de audio y protocolos soportados en Asterisk.
Cdecs de audio
Protocolos
2.2.3.1
S ERVICIOS
25
2.2.4
TARJETAS
ANALGICAS
Las tarjetas analgicas permiten conectar el servidor Asterisk con la red conmutada de
telefona y/o con telfonos analgicos. Existen dos tipos:
* FXO (Foreign eXchange Office): permiten interactuar con los portadores de la red
de telefona.
* FXS (Foreign eXchange Station): permiten interactuar con telfonos analgicos.
Las tarjetas analgicas diseadas por Digium reciben el nombre de TDM y pueden
interactuar tanto con lneas externas como con telfonos analgicos en funcin de
los mdulos presentes en la tarjeta. Al inspeccionar visualmente estas tarjetas, se
diferencian los tipos de mdulos por el color: FXO (rojos); FXS (verdes).
2.2.4.2
TARJETAS
DIGITALES
Las tarjetas digitales permiten conectar Asterisk con una red digital RDSI. De esta clase
de tarjetas se encuentran dos tipos:
* Bsicas (BRI): cada puerto BRI tiene dos canales de voz ms uno de sealizacin,
permitiendo mantener dos conversaciones de forma simultnea.
* Primarios (PRI): cada primario tiene 30 canales de voz ms uno de sealizacin,
permitiendo establecer unas 30 conversaciones simultneas.
En un sistema Asterisk que requiera el uso de estas tarjetas para conectarse a la red
telefnica ser necesaria la instalacin de:
26
2.3. A NDROID
* DAHDI19 : Interfaz utilizado para controlar una gran cantidad de tarjetas analgicas y/o digitales.
* LibPRI: librera que implementa sealizacin para ISDN-PRI e ISDN-BRI, necesaria para las tarjetas digitales.
2.3
2.3.1
A NDROID
Q U ES A NDROID ?
A RQUITECTURA
27
* Linux Kernel: kernel en el que se basa Android. Esta capa contiene todos los
drivers de bajo nivel para los componentes hardware de un terminal.
* Libreras: contiene todo el cdigo que proporciona las caractersticas principales
del SO Android.
* Android Runtime: Contiene una conjunto de libreras que permiten a los desarrolladores escribir aplicaciones Android usando el lenguaje Java. Tambin incluye
la mquina virtual Dalvik, que est diseada y optimizada especficamente para
terminales Android.
* Application Framework: expone las diversas capacidades del SO Android a los
desarrolladores para que puedan utilizarlas en sus aplicaciones.
* Aplicaciones: todas las aplicaciones instaladas en un terminal: aplicaciones incluidas en el propio terminal (telfono, contactos, navegador, etc.), aplicaciones
descargadas e instaladas a travs de Google Play (antiguo Android Market) y
aplicaciones desarrolladas por el propio usuario.
2.3.1.2
A PLICACIONES
Las aplicaciones Android se escriben en lenguaje Java. Las herramientas Android SDK
compilan el cdigo, junto con los datos y archivos necesarios, en un paquete Android
(archivo con extensin .apk). Este archivo es lo que utilizan los dispositivos Android
28
2.3. A NDROID
FIGURA 2.5: Esquema de la arquitectura del sistema Android.
29
30
2.3. A NDROID
2.3.2
A CTIVIDADES
C ICLO
DE VIDA DE UNA
A CTIVIDAD
La clase Actividad define una serie de mtodos imprescindibles que gobiernan su ciclo
de vida y cuya implementacin es crucial para desarrollar aplicaciones flexibles y
robustas.
El ciclo de vida de una actividad y los mtodos que lo definen pueden observarse en
la figura 2.6.
* onCreate(): se llama cuando una actividad se crea por primera vez. Aqu se
deben inicializar los componentes esenciales de la actividad, as como especificar
el layout que se usar como IU. Este mtodo tambin recupera el estado previo
de la actividad, en caso de haber sido guardado en una ejecucin anterior.
* onStart(): se llama cuando la actividad aparece en la pantalla del usuario.
* onResume(): se llama cuando la actividad empieza a interactuar con el usuario.
En este estado, la actividad est activa, al frente de la pantalla.
* onPause(): se llama cuando la actividad actual se pausa y se reanuda la actividad anterior. En este estado la actividad actual sigue viva, mantiene su estado
y su informacin, pero puede destruirse por el sistema en caso de problemas de
memoria. Aqu se debe guardar cualquier cambio que se haya hecho y que se
quiera conservar, en caso de que la actividad sea destruida. Tambin se deben
detener animaciones u otras cosas que puedan consumir CPU.
* onStop(): se llama cuando la actividad deja de ser visible por el usuario. En este
estado, igual que onPause(), el sistema puede destruir la actividad en caso de
necesitar la memoria ocupada por sta.
31
2.3.3
I NTENTS
32
2.3. A NDROID
En funcin de las necesidades del usuario, los objetos de tipo Intent pueden
utilizarse para pasar informacin necesaria al componente que los recibe o al sistema
Android.
Los parmetros principales son los siguientes:
* component name: nombre del componente que recibir el intent (componente
que se quiere lanzar).
* action: descripcin de la accin que se quiere realizar.
* data: la informacin requerida para realizar la accin, expresada en forma de Uri.
* extras: pares de tipo key/value para pasar informacin adicional al componente
que recibir el intent.
Por otra parte, el intent filter sirve para especificar los tipos de intents que un
componente puede recibir. Estos filtros no se definen en el cdigo, sino en el Android
Manifest. Los parmetros principales son: action, category y data.
Todas las categoras aadidas a un objeto Intent tienen que coincidir con el Intent
Filter para que el componente deseado pueda ser invocado.
2.3.4
I NTERFAZ DE U SUARIO
Una actividad, por si misma, no tiene presencia en la pantalla, sino que debe dibujar
los elementos de la IU utilizando objetos de tipo View (vistas) y ViewGroup (layouts).
Normalmente, la IU se define mediante un archivo XML, donde se especifican todos sus
componentes. Dependiendo de las necesidades del usuario, la IU puede programarse
dinmicamente, en tiempo de ejecucin.
2.3.4.1
C OMPONENTES
DE LA PANTALLA
2.3.4.1.1 V ISTAS
Una vista es un widget que tiene presencia en la pantalla. Una ViewGroup proporciona el layout en el que se ordenan todas las vistas que aparecen en la pantalla de una
actividad. A travs de las vistas, el usuario es capaz de interactuar con la actividad.
Las vistas ms comunes son:
* TextView: se utiliza para mostrar texto al usuario.
* EditText: muestra texto y permite al usuario editar su contenido.
33
34
2.3. A NDROID
* Table Layout: agrupa las vistas en forma de tabla (filas y columnas).
* Relative Layout: permite especificar la posicin de las vistas en relacin a otras o
al propio layout.
En la prctica, es comn combinar varios layouts en un sola actividad para disear
la apariencia deseada para la IU.
No todos los componentes de la interfaz de usuario deben construirse mediante
objetos View y ViewGroup. Dentro de una aplicacin, Android proporciona varios
componentes que tienen un layout estndar predefinido de manera que el usuario slo
necesita definir su contenido, sin preocuparse de la forma. Entre estos componentes se
encuentran: los mens, los dilogos y las notificaciones.
2.3.4.2
M ENS
Los mens se utilizan en las actividades para mostrar opciones adicionales que no se
ven directamente en la IU. En Android nos encontramos con dos tipos:
* Options menu: muestra opciones relacionadas con la actividad actual. En la versin de Android 2.3 o inferior, este men se muestra en la parte baja de la pantalla
al pulsar la tecla MENU del terminal. A partir de la versin 3.0, estas opciones
se muestran en la Action Bar, que es una barra situada permanentemente en la
parte superior de la actividad. En esta barra aparecen accesos directos del men
y un listado de opciones.
* Context menu: muestra opciones relacionadas con una vista especfica de la actividad. Este men se activa al mantener pulsada una vista de la IU. Aparece como
una lista flotante de opciones en la pantalla. Se puede definir un context menu
diferente para cada elemento de la IU.
El aspecto de estos mens se puede observar en la pantalla mostrada en la figura 2.7.
2.3.4.3
D ILOGOS
Un dilogo es una ventana pequea que aparece al frente de la actividad actual. Los
dilogos interrumpen la actividad para notificar algo al usuario o para realizar algunas
tareas relacionadas con la actividad en curso.
Los tipos ms utilizados son:
* Alert Dialog: se usa desde las actividades para obtener una confirmacin del
usuario antes de ejecutar una accin.
35
N OTIFICACIONES
2.3.5
S ERVICIOS
36
2.3. A NDROID
2.3.6
B ROADCAST R ECEIVERS
2.3.7
P ERSISTENCIA DE D ATOS
2.3.7.1
S HARED P REFERENCES
Esta opcin consiste en un mecanismo ligero que permite guardar datos simples de
la aplicacin, por ejemplo, las preferencias de usuario. El objeto SharedPreferences
guarda, de forma automtica, en un archivo XML, los datos que se especifiquen con
el formato de pares key/value. Estos datos persisten aunque se finalice la aplicacin
(tanto de forma manual como forzada por el sistema).
2.3.7.2
B ASE
DE DATOS LOCAL
37
2.3.8
38
3
Implementacin de la Centralita
3.1
O BJETIVO
en la introduccin de este documento, uno de los objetivos del proyecto es la implantacin de un sistema de telefona VoIP con la
implementacin de una centralita telefnica para la residencia de ancianos. Para ello
se ha escogido Asterisk, ya que permite, de forma sencilla, construir una PBX en un
ordenador convencional.
OMO SE HA COMENTADO
3.2
E NTORNO
DE SIMULACIN
A IMPLEMENTACIN
39
CAPTULO 3. I MPLEMENTACIN
DE LA
C ENTRALITA
3.3
I NSTALACIN
DEL ENTORNO
40
3.3. I NSTALACIN
DEL ENTORNO
3.3.1
Para comunicar Asterisk con la red de telefona se instala en el servidor una tarjeta
analgica de Digium, la TDM808. Las tarjetas de la serie 800 soportan hasta ocho
conexiones por tarjeta utilizando sus ocho puertos. Estos puertos pueden tener dos
tipos de interfaces diferentes y se distinguen visualmente por su color: FXO (rojo) y
FXS (verde). La TDM808 est compuesta por ocho mdulos rojos, de tipo FXO.
Despus de instalar la tarjeta, se comprueba el listado de los dispositivos detectados por el bus PCI para ver si la tarjeta es detectada correctamente con el siguiente
comando:
> lspci -n
3.3.2
Por defecto, el cancelador de eco software para las lneas analgicas que maneja
DAHDI es el mg2. Dado que el rendimiento del cancelador por defecto no es
demasiado bueno, se decide utilizar Oslec en su lugar. Oslec es un cancelador de
eco de lnea open source de alto rendimiento que, aunque no viene incluido en el
paquete DAHDI, se puede integrar de forma fcil para que funcione con DAHDI. A
continuacin se detallarn los pasos a seguir para instalar Oslec en el sistema. La
41
CAPTULO 3. I MPLEMENTACIN
DE LA
C ENTRALITA
3.3.3
G ESTOR DE CORREO
SSMTP es un programa que sirve para enviar correos electrnicos desde un ordenador
local a un host de correo configurado (mailhub). Uno de sus principales usos es el
reenvo de correos electrnicos automatizados desde el ordenador a una direccin de
correo externa.
Este programa se utiliza con la funcionalidad de buzn de voz de Asterisk. Al
configurar las cuentas de buzn de voz, se especifica una direccin de correo electrnico para cada usuario. Al dejar un mensaje en el buzn de voz, se enva de forma
automtica un correo electrnico a esa direccin para avisar al usuario de que tiene
un mensaje nuevo. Este correo incluye adems un archivo de audio adjunto con el
mensaje de voz.
Para instalar SSMTP en el servidor, se utiliza el gestor de paquetes Synaptic incluido
en el sistema operativo.
3.3.4
R ECONOCIMIENTO DE VOZ
3.3.5
S OFTPHONE
42
3.4. C ONFIGURACIONES
utilizado para simular a los diversos usuarios conectados al servidor Asterisk.
Se escoge el softphone SFLphone para Linux, principalmente, porque es de cdigo
abierto y dispone de una comunidad muy activa, facilitando as la resolucin de
cualquier duda o problema que pueda surgir. Adems, permite la utilizacin de
mecanismos de securizacin (como SRTP) por si se quieren aadir en un futuro. Para
instalarlo en el servidor, se utiliza el gestor de paquetes Synaptics.
3.4
C ONFIGURACIONES
instalado en el servidor, ya se pueden realizar las configuraciones necesarias que permitirn poner en marcha todo el sistema de VoIP de
la residencia. Como en cualquier empresa, este sistema consta de una parte interna
(residentes y trabajadores de la residencia) y de una parte externa (PBX para las
llamadas procedentes del exterior).
ON TODO LO NECESARIO
3.4.1
Los mdulos FXO se definen con la nomenclatura contraria fxs. Estos mdulos usan sealizacin
ks (Kewlstart Signalling), que corresponde a sealizacin loopstart con supervisin de desconexin.
43
CAPTULO 3. I MPLEMENTACIN
DE LA
C ENTRALITA
= es
= es
A continuacin hay que cargar los drivers de DAHDI en el kernel mediante la siguiente instruccin. El driver adecuado para la serie 800 es el wctdm24xxp.
> cd / etc / dahdi
> modprobe wctdm24xxp
Para habilitar el cancelador de eco Oslec, hay que modificar las siguientes lneas en
dos archivos ubicados en el directorio /etc/dahdi del sistema:
> nano / etc / dahdi / init . conf
# Descomentamos esto :
DAHDI_UNLOAD_MODULES = " dahdi echo "
44
3.4. C ONFIGURACIONES
Las configuraciones de sealizacin y los cdigos utilizados para los tonos en la red
de telefona varan en funcin de la zona o el pas en el que nos encontremos. Por eso
hay que realizar unos cambios para conseguir que la configuracin de la tarjeta sea la
adecuada para operar en Espaa. Con este fin, se hacen las siguientes modificaciones
en estos archivos:
> nano / etc / asterisk / indications . conf
country = es
> nano / etc / modprobe . d / dahdi . conf
options wctdm24xxp opermode = SPAIN
Por ltimo, se verifica que la configuracin de los mdulos de la tarjeta sea la correcta y que se hayan aplicado correctamente todos los cambios. Para ello se utiliza
una instruccin que muestra por pantalla un resumen de los puertos de la tarjeta y su
configuracin.
> dahdi_cfg - vvv
DAHDI Tools Version - 2.5.0.2
DAHDI Version : 2.5.0.2
Echo Canceller ( s ) : HWEC , OSLEC
Configuration
======================
Channel map :
Channel 01: FXS Kewlstart ( Default ) ( Echo
Channel 02: FXS Kewlstart ( Default ) ( Echo
Channel 03: FXS Kewlstart ( Default ) ( Echo
Channel 04: FXS Kewlstart ( Default ) ( Echo
Channel 05: FXS Kewlstart ( Default ) ( Echo
Channel 06: FXS Kewlstart ( Default ) ( Echo
Channel 07: FXS Kewlstart ( Default ) ( Echo
Channel 08: FXS Kewlstart ( Default ) ( Echo
Canceler :
Canceler :
Canceler :
Canceler :
Canceler :
Canceler :
Canceler :
Canceler :
oslec ) ( Slaves :
oslec ) ( Slaves :
oslec ) ( Slaves :
oslec ) ( Slaves :
oslec ) ( Slaves :
oslec ) ( Slaves :
oslec ) ( Slaves :
oslec ) ( Slaves :
01)
02)
03)
04)
05)
06)
07)
08)
8 channels to configure .
Setting
Setting
Setting
Setting
Setting
Setting
Setting
Setting
echocan
echocan
echocan
echocan
echocan
echocan
echocan
echocan
for
for
for
for
for
for
for
for
channel
channel
channel
channel
channel
channel
channel
channel
1
2
3
4
5
6
7
8
to
to
to
to
to
to
to
to
oslec
oslec
oslec
oslec
oslec
oslec
oslec
oslec
Se hace una ltima comprobacin mediante la instruccin dmesg, que lista el buffer
de mensajes del ncleo, y se buscan las lneas relativas a las configuraciones que se han
45
CAPTULO 3. I MPLEMENTACIN
DE LA
C ENTRALITA
llevado a cabo. A continuacin se muestran estas lneas, donde vemos que se detecta
la tarjeta Digium con los puertos de tipo FXO configurados para funcionar con los tonos
de Espaa y que se han encontrado tambin los dos canceladores de eco: hardware
(HWEC VPMADT032) y software (Oslec).
wctdm24xxp 0000:07:04.0: Freed a Wildcard
wctdm24xxp 0000:07:04.0: PCI INT A disabled
dahdi : Telephony Interface Unloaded
dahdi : Telephony Interface Registered on major 196
dahdi : Version : 2.5.0.2
wctdm24xxp 0000:07:04.0: PCI INT A -> GSI 20 ( level , low ) -> IRQ 20
wctdm24xxp 0000:07:04.0: Port 1: Installed -- AUTO FXO ( SPAIN mode )
wctdm24xxp 0000:07:04.0: Port 2: Installed -- AUTO FXO ( SPAIN mode )
wctdm24xxp 0000:07:04.0: Port 3: Installed -- AUTO FXO ( SPAIN mode )
wctdm24xxp 0000:07:04.0: Port 4: Installed -- AUTO FXO ( SPAIN mode )
wctdm24xxp 0000:07:04.0: Port 5: Installed -- AUTO FXO ( SPAIN mode )
wctdm24xxp 0000:07:04.0: Port 6: Installed -- AUTO FXO ( SPAIN mode )
wctdm24xxp 0000:07:04.0: Port 7: Installed -- AUTO FXO ( SPAIN mode )
wctdm24xxp 0000:07:04.0: Port 8: Installed -- AUTO FXO ( SPAIN mode )
wctdm24xxp 0000:07:04.0: Booting VPMADT032
wctdm24xxp 0000:07:04.0: VPM present and operational ( Firmware
version 125)
wctdm24xxp 0000:07:04.0: Found a Wildcard TDM : Wildcard TDM800P (0
BRI spans , 8 analog channels )
wctdm24xxp 0000:07:04.0: Freed a Wildcard
wctdm24xxp 0000:07:04.0: PCI INT A disabled
dahdi : Telephony Interface Unloaded
dahdi : Telephony Interface Registered on major 196
dahdi : Version : 2.5.0.2
wctdm24xxp 0000:07:04.0: PCI INT A -> GSI 20 ( level , low ) -> IRQ 20
wctdm24xxp 0000:07:04.0: Port 1: Installed -- AUTO FXO ( SPAIN mode )
wctdm24xxp 0000:07:04.0: Port 2: Installed -- AUTO FXO ( SPAIN mode )
wctdm24xxp 0000:07:04.0: Port 3: Installed -- AUTO FXO ( SPAIN mode )
wctdm24xxp 0000:07:04.0: Port 4: Installed -- AUTO FXO ( SPAIN mode )
wctdm24xxp 0000:07:04.0: Port 5: Installed -- AUTO FXO ( SPAIN mode )
wctdm24xxp 0000:07:04.0: Port 6: Installed -- AUTO FXO ( SPAIN mode )
wctdm24xxp 0000:07:04.0: Port 7: Installed -- AUTO FXO ( SPAIN mode )
wctdm24xxp 0000:07:04.0: Port 8: Installed -- AUTO FXO ( SPAIN mode )
wctdm24xxp 0000:07:04.0: Found a Wildcard TDM : Wildcard TDM800P (0
BRI spans , 8 analog channels )
dahdi_echocan_oslec : Registered echo canceler ' OSLEC '
3.4.2
C ANALES DAHDI
46
3.4. C ONFIGURACIONES
Se definen los ocho canales disponibles dentro de un nico grupo (1), por lo
tanto, todos los canales tendrn las mismas caractersticas. Se especifica el tipo de
sealizacin (fxs_ks) y que el identificador de llamada de estos canales venga marcado
por el obtenido de la red telefnica. Tambin se define el contexto que utilizarn todos
los canales ([f rom pstn]). Esto quiere decir que todas las llamadas que utilicen estos
canales (entrantes desde la red telefnica) ejecutarn las instrucciones del dialplan
correspondientes a este contexto. Como se puede deducir, el contexto [f rom pstn] es
donde se ubica la definicin de la centralita (PBX).
La configuracin completa de este archivo puede encontrarse en el anexo A.2.1.
3.4.3
A STERISK
U SUARIOS
47
CAPTULO 3. I MPLEMENTACIN
DE LA
C ENTRALITA
[PermisosResidentes]
D IALPLAN
3.4. C ONFIGURACIONES
en los consiguientes contextos por el nmero de extensin que invoca. En este
caso, se utiliza una macro para realizar las llamadas locales (entre los usuarios
internos). Se comprueba que la extensin no est en la lista negra, si hay desvos
activos y entonces se realiza el marcado. Si no hay respuesta, salta el buzn de
voz.
* [Buzon_de_voz]: contiene la extensin 99, que da acceso al buzn de voz para
que los usuarios puedan escuchar sus mensajes.
* [grabadora]: contiene las extensiones que permiten grabar las locuciones de voz
para la PBX en formato WAV. Los archivos de audio grabados se guardan en el
directorio /var/lib/asterisk/sounds/custom.
* [android_V A]: contiene las extensiones que se utilizarn para notificar a los
usuarios internos de las alertas originadas por los softphones implementados en
Android. Su contenido se detalla en el captulo 4.
* [P C_a_RT C]: permite a los usuarios internos realizar llamadas a nmeros externos marcando previamente 00. Estas llamadas se transmiten por una de las lneas
analgicas conectadas a la tarjeta TMD808.
* [f rom pstn]: trata todas las llamadas entrantes procedentes del exterior.
Este contexto, junto con [centralita_ASR] y [menu privado] se explicarn
detalladamente ms adelante.
Asterisk permite el anidamiento de contextos, es decir, contextos dentro de contextos. Esto se utiliza para restringir el acceso a algunas funcionalidades dependiendo del usuario. Con este fin se crean los contextos [P ermisosResidentes] y
[P ermisosT rabajadores], que dan acceso a los contextos cuyas extensiones se pueden
utilizar por los diferentes usuarios:
* [P ermisosResidentes]: contexto donde se tratan las llamadas de los residentes
(usuarios 200, 201 y 202). ste da acceso a los contextos: [usuarios],
[Buzon_de_voz] y [Android_V A].
* [P ermisosT rabajadores]: contexto donde se tratan las llamadas de los trabajadores (usuarios del 500 al 509). ste da acceso a los contextos: [usuarios],
[Buzon_de_voz], [grabadora], [Android_V A], [P C_a_RT C] y [parkedcalls] (necesaria para poder transferir y aparcar llamadas). Tambin incluye las extensiones
que permiten activar/desactivar el desvo de llamadas y el acceso a la sala de
conferencias 600 (limitada a 3 usuarios y slo para empleados).
La configuracin completa del dialplan se puede encontrar en el anexo A.2.3.
49
CAPTULO 3. I MPLEMENTACIN
3.4.3.3
M SICA
DE LA
C ENTRALITA
EN ESPERA
B UZN
DE VOZ
F OLLOW M E
50
3.4. C ONFIGURACIONES
se realiza en el archivo /etc/asterisk/followme.conf. En l se especifican, por
orden, las extensiones a las que llamar y el tiempo que se debe esperar hasta pasar a
la siguiente destinacin. En este caso se utiliza en la extensin de la centralita que
contacta con la directora del centro. Primero se intenta en el despacho, y si no hay
respuesta, se llama al mvil y por ltimo, a su casa.
La configuracin completa del protocolo de seguimiento se puede encontrar en el
anexo A.2.6.
3.4.3.6
S ALA
DE
C ONFERENCIAS
Las salas de conferencia permiten crear conversaciones entre mltiples usuarios como
si estuvieran todos en una misma localizacin fsica. Algunas de las principales
caractersticas de este servicio incluyen: la creacin de varias salas distintas con
acceso protegido por contrasea, la posibilidad de regular el nmero de participantes
(fijando un nmero mximo, echando usuarios o bloqueando la sala), la capacidad de
enmudecer a uno o varios participantes, etc.
En este caso se crean dos salas de conferencias con diferentes contraseas. La sala
nmero 600 slo es accesible por los trabajadores de la residencia. La sala nmero
101 permite el acceso a usuarios tanto internos como externos. El acceso exterior se
encuentra en una extensin del men privado de la centralita. El acceso interior se
encuentra en el contexto [usuarios] disponible tanto para los residentes como para los
trabajadores.
La configuracin de las salas de conferencias se realiza en el archivo
/etc/asterisk/meetme.conf y se puede encontrar en el anexo A.2.7.
3.4.3.7
C OLAS
51
CAPTULO 3. I MPLEMENTACIN
DE LA
C ENTRALITA
prioridad. En este caso, los miembros sern las gerocultoras (usuarios 503, 504 y
505, en este orden). Tambin se pueden fijar varias opciones, como por ejemplo: tipo
de anuncios que se hacen al llamante mientras est en cola, msica que se escucha
mientras se espera a ser atendido, nmero de reintentos, tiempo mximo de espera en
cola, etc.
3.4.3.8
T RANSFERENCIA
Y PARKING DE LLAMADAS
3.4.4
C ENTRALITA PBX
52
3.4. C ONFIGURACIONES
pueden introducirse de forma oral (mediante reconocimiento de voz) o mediante el
teclado del telfono. Se dan dos oportunidades para especificar la extensin deseada
por voz. Si no se reconoce una extensin vlida, se pide la introduccin va teclado y
si no, se redirige la llamada a recepcin (extensin 0) para que se le pueda atender
o redireccionar a la extensin adecuada. Los pasos que sigue una llamada entrante
desde que llega a la centralita hasta que se escoge una extensin vlida se pueden ver
en el diagrama de la figura 3.2.
A continuacin se hace un breve resumen de las extensiones disponibles desde este
contexto y su funcionamiento:
* Extensin 0: Recepcin. Se realiza una llamada al usuario recepcin (501).
Desde aqu se puede atender la llamada y transferirla a la extensin o usuario
adecuados. A esta extensin se puede llegar directamente desde el men o al
agotar el nmero mximo de intentos de introducir una extensin vlida. Su
funcionamiento se puede observar en el diagrama de la figura 3.3.
* Extensin 1: Trabajadora social. Se realiza una llamada a la trabajadora social
(502). Si no est disponible, se pasa la llamada al buzn de voz, como se puede
ver en el diagrama de la figura 3.4.
* Extensin 2: Enfermera. Se realiza una llamada a la jefa de enfermeras (500)
y si est ocupada se pasa la llamada a la cola donde ser atendida por alguna de
las gerocultoras, como se puede ver en el diagrama de la figura 3.5.
* Extensin 3: Direccin. Se realiza una llamada al despacho de la directora del
centro (506). Si no hay respuesta, se inicia el protocolo de seguimiento follow
me para intentar ubicarla en otros emplazamientos (el mvil y su casa). Se pide
el nombre del llamante para anunciarlo al llamado en cada ubicacin. Si no se
consigue contactar con la directora, se dirige la llamada al buzn de voz correspondiente. Este comportamiento se puede ver en el diagrama de la figura 3.6.
* Extensin 4: Psicloga. Se realiza una llamada a la psicloga del centro (509).
La psicloga puede redirigir su telfono a la recepcin si no quiere ser molestada
durante las sesiones. Primero se comprueba si hay una redireccin y despus se
llama a la extensin adecuada, como se puede ver en el diagrama de la figura 3.7.
* Extensin 5: Llamada exterior. Permite llamar a cualquier nmero del exterior
pasando por Asterisk. En este caso, el nmero debe tener un mximo de 5 cifras.
* Extensin 6: Men privado. Permite el acceso al men privado, que se explicar
ms adelante. Esta extensin no se nombra en el men de inicio ya que est
pensada para que slo trabajadores autorizados de la residencia puedan acceder.
53
CAPTULO 3. I MPLEMENTACIN
DE LA
C ENTRALITA
De todas formas, aunque se entrara por error, el acceso est protegido por una
contrasea.
* Extensin #: Colgado. Despus de pasar por cualquier extensin, todas las llamadas son dirigidas a sta. Aqu se despide al llamante mediante una locucin
de voz y se cuelga la llamada.
* Extensin i: Extensin incorrecta. Se llega a esta extensin de forma automtica
al marcar una extensin incorrecta (no existente). Despus de informar del
error, se reenva la llamada al men de extensiones del inicio. Si se ha alcanzado el nmero mximo de errores, se enva la llamada a recepcin (extensin 0).
En el contexto [menu privado] se encuentra la definicin de la parte privada de
la PBX. El men privado est pensado para uso exclusivo de la directora del centro
y permite entrar en la sala de conferencias 101 y realizar escuchas desde cualquier
telfono exterior a la residencia. El acceso est controlado mediante contrasea
para que nadie pueda entrar por error. Se dan tres oportunidades de introducir la
contrasea correcta, si no, se cuelga la llamada automticamente. Al acceder a esta
zona, se reproduce la locucin de voz que informa de las opciones del men privado
y se espera la introduccin por teclado de la extensin deseada. Su funcionamiento se
puede ver en el diagrama de la figura 3.8.
Las extensiones disponibles en este contexto son las siguientes:
* Extensin 1: Sala de conferencias. Da acceso a la sala de conferencias 101
mediante la contrasea correspondiente. A esta sala tambin tienen acceso los
usuarios internos. Se especifican las siguientes opciones: se reproduce msica si
slo hay una persona en la sala y se puede salir de ella pulsando la tecla #.
* Extensin 2: Escucha de llamadas. Permite espiar cualquier conversacin que
se est realizando entre extensiones internas de la residencia. Pulsando la tecla *
se detiene el espionaje del canal actual y se cambia a una conversacin diferente.
Pulsando la tecla # se sale de la extensin de escuchas y se llega a la extensin
de colgado de la centralita.
* Extensin i: Extensin incorrecta. Se llega a esta extensin de forma automtica
al marcar una extensin incorrecta (no existente). Despus de informar del error,
se reenva la llamada al men de extensiones privado.
La configuracin completa de la PBX se puede encontrar en el anexo A.2.3.
54
3.4. C ONFIGURACIONES
3.4.4.1
I NTEGRACIN
10
11
12
13
14
15
16
17
18
19
20
55
CAPTULO 3. I MPLEMENTACIN
DE LA
C ENTRALITA
# ! / bin / sh
dir = " / var / lib / asterisk / sounds / custom / recon "
pocketsphinx_continuous - hmm en / tidigits - lm en / tidigits . DMP - dict
en / tidigits . dic - infile $ { dir }/ voz . wav - samprate 8000 | tail -c +12
> $ { dir }/ out . txt
cat $ { dir }/ numbers . txt | agrep -f $ { dir }/ out . txt | head -c 1 >
$ { dir }/ num . txt
Primero se realiza el reconocimiento de voz del fichero voz.wav mediante la aplicacin pocketsphinx_continuous, utilizando el modelo acstico y diccionario tidigits.
Este diccionario permite el reconocimiento de dgitos del 0 al 9 en ingls. La salida del
reconocimiento devuelve mucha informacin y con la instruccin tail se obtiene slo
el dato deseado, el nombre del dgito reconocido, que se guarda en el archivo out.txt.
Por ltimo se obtiene el dgito reconocido en formato numrico para que Asterisk
pueda utilizarlo para especificar la extensin. Esto se hace con la ayuda del fichero
numbers.txt, convirtiendo el nombre del nmero en su dgito correspondiente y
guardando el resultado en el fichero num.txt. El fichero numbers.txt es simplemente
un archivo de texto que contiene once lneas (una para cada palabra posible) con la
siguiente nomenclatura:
3.4.5
E JECUCIN
Una vez instalados y configurados todos los componentes necesarios se debe poner en
marcha todo el sistema. Para ello hay que iniciar los servicios DAHDI y Asterisk (en ese
orden) mediante las siguientes instrucciones:
> service dahdi start
> service asterisk start
56
3.4. C ONFIGURACIONES
en tiempo real, como por ejemplo: logado/deslogado de usuarios en el servidor,
instrucciones ejecutadas en el dialplan, errores producidos, etc.
Despus de realizar cualquier cambio en los archivos de configuracin se deben
volver a cargar los mdulos afectados para que Asterisk opere con la versin ms
actual de los mismos. Esto puede hacerse con los comandos adecuados en la consola
CLI o reiniciando el servicio Asterisk desde cualquier terminal.
57
CAPTULO 3. I MPLEMENTACIN
DE LA
58
C ENTRALITA
3.4. C ONFIGURACIONES
59
CAPTULO 3. I MPLEMENTACIN
DE LA
C ENTRALITA
60
3.4. C ONFIGURACIONES
FIGURA 3.5: Diagrama de flujo de la extensin 2 de la centralita (Enfermera).
61
CAPTULO 3. I MPLEMENTACIN
DE LA
C ENTRALITA
62
3.4. C ONFIGURACIONES
63
CAPTULO 3. I MPLEMENTACIN
DE LA
C ENTRALITA
64
4
Implementacin de los Softphones
4.1
O BJETIVO
OMO SE HA COMENTADO
4.2
I NSTALACIN
TRABAJO
65
CAPTULO 4. I MPLEMENTACIN
DE LOS
S OFTPHONES
* Unas extensiones especiales en Asterisk que servirn para comunicar las situaciones de emergencia entre los residentes y la recepcin. Estas extensiones estn
definidas en el dialplan de Asterisk bajo el contexto [android_V A].
4.2.1
Para poder implementar cualquier aplicacin Android hay que instalar el entorno
de programacin y simulacin adecuado. Todas las herramientas necesarias para
desarrollar aplicaciones Android son gratuitas (libres) y estn disponibles para todas
las plataformas (Linux, Mac, Windows). En este caso se utilizarn las herramientas
recomendadas en Android Developers: Eclipse + Android SDK + ADT.
Eclipse
El primer paso para desarrollar cualquier aplicacin es obtener un entorno de desarrollo integrado (IDE). Un IDE es un programa compuesto por un conjunto de
herramientas de programacin y normalmente consiste en: un editor de cdigo,
herramientas de compilacin y un depurador. En el caso de aplicaciones Android,
el IDE recomendado es Eclipse, un entorno de programacin multi-lenguaje con un
extensible sistema de plug-in. La ltima versin disponible al iniciar este proyecto, y
por tanto la versin instalada, es la Helios.
Android SDK
El SDK1 es un conjunto de herramientas de desarrollo que permite a un programador
crear aplicaciones para un sistema concreto, por ejemplo ciertos paquetes de software,
frameworks, plataformas de hardware, videoconsolas, sistemas operativos, etc. Es
algo tan sencillo como una interfaz de programacin de aplicaciones (API) creada
para permitir el uso de cierto lenguaje de programacin, o puede, tambin, incluir
hardware sofisticado para comunicarse con un determinado sistema embedido.
El Android SDK contiene un depurador, libreras, un emulador, documentacin,
ejemplos de cdigo y tutoriales. Se puede descargar desde la pgina web de Android
Developers: http://developer.android.com/sdk/index.html. La versin instalada es
la 14.
ADT
El plug-in ADT2 para Eclipse es una extensin del entorno de desarrollo que permite la
creacin y depuracin de aplicaciones Android. Gracias a este plugin se puede hacer
1
2
66
4.2. I NSTALACIN
4.2.2
Se instala una base de datos en el servidor que se utilizar para los sistemas de alerta
de los residentes: de posicionamiento y batera baja. Para crear la base de datos se
instala el paquete LAMP4 en el servidor. Con la idea de facilitar la tarea de creacin
y gestin de la base de datos, se instala tambin el programa MySQL Navigator, que
permite manejar la base de datos mediante una interfaz grfica.
El acceso desde las aplicaciones Android a esta base de datos se hace de la siguiente
manera: las aplicaciones hacen peticiones HTTP contra Apache, que ejecuta los
script PHP correspondientes, accediendo a la base de datos MySQL y devolviendo los
resultados obtenidos en formato JSON a las aplicaciones.
La instalacin del paquete LAMP, y la creacin de la base de datos mediante MySQL
Navigator se encuentra en el anexo B.2.1.
4.2.2.1
E STRUCTURA
DE LA BASE DE DATOS
Como puede verse en la figura 4.1, la base de datos est formada por dos tablas:
MyAlerts y MyCoordinates.
* MyAlerts: Esta tabla se utiliza para controlar el estado de los residentes. Al dar
3
67
CAPTULO 4. I MPLEMENTACIN
DE LOS
S OFTPHONES
4.2.2.2
S CRIPTS PHP
El acceso a la base de datos MySQL se hace mediante scripts PHP. Estos scripts permiten
realizar consultas y/o modificar los atributos de la base de datos desde las aplicaciones
Android.
A continuacin se explica la funcin y utilizacin de los scripts implementados en
este proyecto, diferenciando los utilizados por cada aplicacin. El cdigo de estos
scripts se encuentra en el anexo B.2.2.
Softphone A: residentes
68
4.2. I NSTALACIN
get_alert_coordinates.php
Se utiliza desde el mapa de localizacin de la aplicacin y afecta a ambas tablas. Obtiene un listado con todos los residentes que se encuentran en estado de alerta (fuera
de la zona permitida, con alert_flag=1) y la ltima coordenada GPS introducida por
cada uno de ellos.
get_user_coordinates.php
Se utiliza desde el mapa de localizacin de la aplicacin y afecta a ambas tablas. Obtiene la ltima coordenada introducida en la base de datos por el usuario especificado.
check_battery_alert.php
Se utiliza desde un servicio de la aplicacin y afecta a la tabla de alertas MyAlerts.
Comprueba si hay alguna alerta de batera baja activada (battery_flag=1).
get_battery_alerts.php
Se utiliza desde el listado de alertas de batera de la aplicacin y afecta a la tabla de
alertas MyAlerts. Obtiene un listado con todos los residentes que se encuentran en
estado de alerta por batera baja (nmero y nombre de usuario) ordenados por nombre.
69
CAPTULO 4. I MPLEMENTACIN
4.2.3
DE LOS
S OFTPHONES
4.3
D ESARROLLO
DE LAS APLICACIONES
AS APLICACIONES FINALES
70
4.3. D ESARROLLO
DE LAS APLICACIONES
mismo.
Primero se ha desarrollado un softphone bsico, con unas prestaciones que
cualquier softphone en el mercado puede ofrecer: realizar y recibir llamadas, listado
de cuentas y contactos, registro de llamadas, etc. Aunque esta aplicacin tambin
puede instalarse en un terminal, se ha declarado como librera para facilitar la herencia
en las otras dos aplicaciones.
Las otras aplicaciones heredan de este softphone bsico, aadiendo funcionalidades
y caractersticas diferentes para cada una de ellas:
* Softphone A: destinado para el uso de los residentes del centro. Aade dos funcionalidades: sistema de alerta en caso de batera baja y sistema de alerta en
caso de que el residente salga de una zona permitida (se aleje demasiado de la
residencia) utilizando el sensor GPS del dispositivo fsico.
* Softphone B: destinado para el uso de la recepcin del centro. Aade tres
funcionalidades: mapa con la ubicacin de los residentes que estn fuera de la
zona permitida, peticin de seguimiento de cualquier residente (ubicacin del
residente) y comprobacin de alertas por batera baja en los softphones de los
residentes.
4.3.1
S OFTPHONE BSICO
71
CAPTULO 4. I MPLEMENTACIN
DE LOS
S OFTPHONES
72
4.3. D ESARROLLO
DE LAS APLICACIONES
FIGURA 4.3: a) Men principal de la aplicacin para los residentes. b) Dilogo que
aparece al cerrar las aplicaciones.
(entrante, saliente, perdida), fecha, hora y duracin de la llamada, como se puede ver
en la figura 4.2(c). Al pulsar sobre una llamada del registro, se ofrece la posibilidad de
rellamar o devolver una llamada a ese nmero de forma directa (sin tener que marcar).
Como se puede ver en la figura 4.3(a), el men de la pantalla principal permite:
acceder al listado de cuentas SIP, aadir un nuevo contacto y cerrar la aplicacin. La
aplicacin puede cerrarse de dos formas: mediante la tecla BACK del dispositivo o
mediante la opcin Cerrar del men. La primera opcin permite seguir recibiendo
llamadas SIP aunque la aplicacin no sea visible en pantalla. La segunda, en cambio,
cierra por completo la aplicacin y por tanto no se pueden recibir llamadas. Por eso,
al cerrar la aplicacin desde el men, se muestra al usuario un dilogo de advertencia
informndole de este hecho (figura 4.3(b)).
La lista de cuentas aparece en la figura 4.4(a) y muestra los datos de las cuentas
SIP (nmero y nombre) que el usuario puede utilizar para registrarse en el servidor
de VoIP. Los datos que se guardan para cada cuenta son: nmero y nombre de
usuario, direccin del servidor de VoIP y contrasea requerida por el servidor para
logarse. Desde esta pantalla pueden crearse cuentas nuevas, as como modificar o
73
CAPTULO 4. I MPLEMENTACIN
DE LOS
S OFTPHONES
FIGURA 4.4: a) Listado de cuentas con men abierto. b) Men context de una cuenta
(opciones de la cuenta).
eliminar los datos de las ya existentes. La aplicacin est programada para logarse
automticamente en el servidor con la ltima cuenta que se utiliz, por lo que si el
usuario desea cambiar de cliente SIP (cambiar la cuenta activa), debe hacerlo desde
esta pantalla, mediante el men context de la figura 4.4(b).
Al realizar o recibir una llamada, aparecer en el dispositivo la pantalla de la
figura 4.5, donde se muestra el nmero o identificador del llamante/llamado y varios
botones que permiten: descolgar/colgar la llamada, activar/desactivar la funcin de
altavoz y acceder a un teclado para poder introducir tonos DTMF durante la llamada,
permitiendo al usuario interactuar con el servidor, por ejemplo, para navegar por el
buzn de voz. La aplicacin utiliza el sensor de proximidad del terminal fsico para
bloquear y apagar la pantalla si sta se acerca demasiado a la cara. Este mecanismo se
utiliza para evitar tocar los botones de la pantalla con la cara o la oreja durante una
llamada.
Las notificaciones son muy importantes en esta aplicacin, ya que informan al
usuario del estado del softphone y de las posibles incidencias relacionadas con el
servidor SIP, permitiendo la interaccin del mismo para solventarlas. Al abrir la apli-
74
4.3. D ESARROLLO
DE LAS APLICACIONES
I NTEGRACIN
DE LA
V O IP
EN LA APLICACIN
75
CAPTULO 4. I MPLEMENTACIN
DE LOS
S OFTPHONES
SipProfile
SipProfile.Builder
SipSession
SipSession.Listener
SipSession.State
SipRegistrationListener
Descripcin
Maneja las llamadas SIP.
Listener para eventos relacionados con llamadas SIP.
Define cdigos de error retornados durante acciones SIP.
Proporciona APIs para tareas SIP, como iniciar conexiones
SIP, y proporciona acceso a servicios SIP relacionados.
Define un perfil SIP, incluyendo informacin de una cuenta
SIP, dominio y servidor.
Clase de ayuda para crear un SipProfile.
Representa una sesin SIP asociada a una dilogo SIP o a
una transaccin independiente fuera del dilogo.
Listener para eventos relacionados con sesiones SIP.
Define estados de la sesin SIP.
Interface, listener para eventos del registro SIP.
76
4.3. D ESARROLLO
DE LAS APLICACIONES
Al iniciar el servicio por primera vez, se crea un objeto de tipo SipManager, propio
de la API SIP de Android y se registra la cuenta de usuario (cliente SIP) que se va a
utilizar para logarse en el servidor SIP. A travs de este objeto se podrn realizar las
siguientes acciones: iniciar sesiones SIP, realizar y recibir llamadas, registrar/desregistrar cuentas SIP en el servidor y verificar la conectividad de la sesin.
Para registrar la cuenta de usuario SIP en el servidor se utiliza el mtodo
initiateLocalProfile, cuyas variables de entrada son los datos de la cuenta (nombre
o nmero, direccin del servidor y contrasea de acceso). Al iniciar la aplicacin,
se intenta recuperar la informacin de la ltima cuenta utilizada para registrarse de
nuevo. Si no es posible, se muestra la notificacin de la figura 4.6(a) para informar al
usuario de que no hay cuenta activa y no se ejecuta este mtodo. Hasta que el usuario
no especifique una cuenta vlida para registrarse en el servidor SIP, la aplicacin no
podr enviar ni recibir llamadas SIP.
Al utilizar la API SIP, cada cuenta SIP est representada por un objeto de tipo
SipProfile. Por tanto, para registrar una cuenta, primero se crea el objeto SipProfile
con los datos de las variables de entrada.
SipProfile . Builder builder = new SipProfile . Builder ( username , domain ) ;
builder . setPassword ( password ) ;
me = builder . build () ;
77
CAPTULO 4. I MPLEMENTACIN
DE LOS
S OFTPHONES
FIGURA 4.6: a) Notificacin que aparece cuando no hay ninguna cuenta activa. b)
Notificacin permanente que aparece cuando hay una cuenta logada en el servidor SIP.
mediante el pending intent (pi), el broadcast receiver que se encargar de recibir las
llamadas entrantes.
manager . open ( me , pi , null ) ;
78
4.3. D ESARROLLO
DE LAS APLICACIONES
}) ;
79
CAPTULO 4. I MPLEMENTACIN
DE LOS
S OFTPHONES
80
4.3. D ESARROLLO
DE LAS APLICACIONES
};
/* * se realiza la llamada SIP */
call = manager . makeAudioCall ( me . getUriString () , sipAddress ,
listener , 30) ;
}
catch ( Exception e ) {
Log . i ( " ServiceSIP / InitiateCall " , " Error when trying to
close manager . " , e ) ;
if ( me != null ) {
try {
/* * desloga la cuenta SIP */
manager . close ( me . getUriString () ) ;
} catch ( Exception ee ) {
Log . i ( " ServiceSIP / InitiateCall " , " Error when
trying to close manager . " , ee ) ;
ee . printStackTrace () ;
}
}
/* * si hay una llamada en curso , la cierra */
if ( call != null ) {
call . close () ;
}
}
Para ejecutar este mtodo se necesitan tres cosas: un SipProfile local registrado
(cuenta activa del softphone logada correctamente al servidor SIP), una direccin SIP
vlida para recibir la llamada y un objeto de tipo SipManager.
Primero se crea un listener de tipo SipAudioCall.Listener que se encarga de
monitorizar y manejar los eventos relacionados con la llamada SIP saliente. Como se
ver ms adelante, el listener encargado de las llamadas entrantes se encuentra en el
broadcast receiver CallReceiverSIP. En este listener se define el comportamiento de
la aplicacin al establecer y colgar la llamada. Al establecerse la llamada, se guardan
81
CAPTULO 4. I MPLEMENTACIN
DE LOS
S OFTPHONES
82
4.3. D ESARROLLO
DE LAS APLICACIONES
83
CAPTULO 4. I MPLEMENTACIN
DE LOS
S OFTPHONES
Una vez recogida, se pasa la llamada al servicio, se obtiene el identificador de llamada y se lanza la actividad CallDisplay, cuya pantalla es la que permitir al usuario
interactuar con la llamada entrante (colgar/descolgar la llamada, activar/desactivar
altavoz, etc.). Esta pantalla es la mostrada en la figura 4.5.
La aplicacin est programada de manera que slo se puede llevar a cabo una
conversacin a la vez. Si se recibe una nueva llamada entrante cuando ya hay una en
curso, la nueva llamada se cuelga automticamente (desviando al llamante al buzn
de voz correspondiente) y no se refleja en el registro de llamadas.
4.3.2
84
4.3. D ESARROLLO
DE LAS APLICACIONES
85
CAPTULO 4. I MPLEMENTACIN
4.3.2.1
A LERTAS
DE LOS
S OFTPHONES
DE BATERA
El sistema Android genera dos eventos relacionados con el nivel de batera del
terminal: cuando la batera est baja (por debajo del 15%) y cuando la batera se
encuentra en proceso de carga (cargando y por encima del 20% de su capacidad). En
esta aplicacin se capturan estos eventos y se acta acorde a la situacin, evitando as
que la aplicacin tenga que monitorizar el nivel de batera del dispositivo de forma
continua, lo que resulta ineficiente.
Con este objetivo, se crea BatteryLevelReceiver, un broadcast receiver que se
encargar de manejar las alertas de batera generadas por el propio terminal. Para
que la aplicacin sea capaz de capturar estos eventos, se define el broadcast receiver
en el AndroidManifest de la siguiente manera, indicando el nombre de los eventos a recoger (BATTERY_LOW, BATTERY_OK) y la clase que se encargar de manejarlos
(BatteryLevelReceiver).
< receiver
android:name = " . battery . BatteryLevelReceiver " >
< intent - filter >
< action android:name = " android . intent . action . BATTERY_LOW " / >
< action android:name = " android . intent . action . BATTERY_OKAY " / >
</ intent - filter >
</ receiver >
A LERTAS
DE POSICIONAMIENTO
Esta aplicacin est diseada para utilizar el sensor GPS del terminal fsico donde est
instalada para controlar la ubicacin de su usuario (en este caso, el residente) y evitar
as que ste salga de una zona marcada como segura o permitida. Tambin se aade
la opcin de monitorizar la ubicacin de un residente en el interior de esta zona de
manera temporal, referido en este documento como seguimiento. Los pasos seguidos
para lograr esto se detallan a continuacin.
Para poner en marcha las alertas de posicionamiento ha sido necesario modificar parte del softphone bsico as como aadir un nuevo servicio a la aplicacin,
86
4.3. D ESARROLLO
DE LAS APLICACIONES
87
CAPTULO 4. I MPLEMENTACIN
DE LOS
S OFTPHONES
88
4.3. D ESARROLLO
DE LAS APLICACIONES
El siguiente paso es definir la forma de actuar del sistema en funcin del tipo de
alerta (entrada/salida o seguimiento) y del estado anterior del servicio. Esto ltimo
se tiene en cuenta a fin de corregir los errores derivados de la utilizacin de las
coordenadas GPS obtenidas del dispositivo, que pueden generar varias alertas del
mismo tipo seguidas, debiendo actuar slo la primera vez e ignorando las siguientes.
Alertas generadas por una alerta de proximidad (entrada/salida de la zona permitida)
Si el residente sale de la zona permitida (y este servicio no est corriendo ya), se
prepara el servicio para que monitorice los cambios de posicionamiento del dispositivo.
Como se ha comentado anteriormente, la obtencin de las coordenadas GPS del terminal se realiza mediante un objeto de tipo LocationManager. Este objeto dispone de un
mtodo (requestLocationUpdates) que permite realizar acciones siempre que se produzcan cambios de posicionamiento definidos con los siguientes parmetros: proveedor de
localizacin (GPS), intervalo mnimo entre notificaciones en milisegundos (30.000) y
metros (5) y listener para gestionar los eventos (locListener).
/* * se ejecuta si se sale de la zona permitida y el servicio no esta
corriendo ya o si se ha solicitado un seguimiento */
private void checkExitingZone () {
if (! isEntering & ! isAlreadyOn ) {
/* * crea el enlace con el servicio ServiceSIPA */
doBindService () ;
/* * inicializa el objeto que sirve para obtener las
coordenadas de localizacion */
lm = ( LocationManager )
getSystemService ( Context . LOCATION_SERVICE ) ;
/* * crea el listener que nos servira para monitorizar los
cambios de posicionamiento y definir la actuacion */
locListener = new MyLocationListener () ;
/* * se usa este metodo para que se notifiquen los cambios en
la localizacion */
lm . requestLocationUpdates ( LocationManager . GPS_PROVIDER , 30000 ,
5 , locListener ) ;
89
CAPTULO 4. I MPLEMENTACIN
DE LOS
S OFTPHONES
isAlreadyOn = true ;
A continuacin, se realiza de forma automtica una llamada a la extensin de emergencia de Asterisk (033, alerta de localizacin). Esta llamada pondr en contacto al residente que ha generado la alarma con el softphone de recepcin mediante una llamada
90
4.3. D ESARROLLO
DE LAS APLICACIONES
SIP. Mientras tanto, se activa el flag de alerta de la base de datos remota y se enva
la primera coordenada. De esta forma, se asegura que siempre habr una coordenada
introducida en la base de datos para ese residente, evitando problemas al obtener las
coordenadas desde el softphone de recepcin (si se intentan obtener coordenadas antes
de que el listener haya podido insertarlas).
protected void iniciarProtocolo () {
/* * obtiene el numero de usuario que ha generado la alerta */
user = sb . getBinder () . whoAmI () ;
/* * realiza la llamada perdida a la extension de emergencia */
sb . getBinder () . initiateLostCall ( ConstA . sipEmergencyAddress ) ;
/* * si se ha producido una salida de la zona permitida , se activa
el flag de alerta del usuario en la DB remota y se envia la
ultima posicion conocida del usuario a la DB remota */
if (! isEntering ) {
dbR . updateFlag ( " alert " , user , true ) ;
sendFirstCoordinate () ;
}
/* * si se ha producido una entrada en la zona permitida , se
desactiva el flag de alerta del usuario en la DB remota y se
detiene el servicio */
else {
dbR . updateFlag ( " alert " , user , false ) ;
stopSelf () ;
}
}
91
CAPTULO 4. I MPLEMENTACIN
DE LOS
S OFTPHONES
4.3.3
92
4.3. D ESARROLLO
DE LAS APLICACIONES
FIGURA 4.9: Men principal del softphone para la recepcin del centro.
Se aaden al men principal dos opciones que permiten al usuario acceder a las
pantallas que le permitirn comprobar si hay alertas de posicionamiento o batera
activadas. Por tanto, el aspecto del men de la pantalla principal de esta aplicacin es
el mostrado en la figura 4.9.
4.3.3.1
C OMPROBACIN
DE ALERTAS DE BATERA
Los terminales fsicos de los residentes no deben quedarse nunca sin batera, ya que
esto inutilizara el sistema de alertas de posicionamiento detallado en la aplicacin
anterior. Para evitarlo, se disea un mecanismo que permita a los trabajadores del
centro (en este caso, al personal de recepcin) comprobar el estado de la batera de
los terminales de los residentes mediante consultas a los flags de alerta battery_flag de
la base de datos remota.
El sistema Android proporciona una herramienta que permite activar una especie
de alarma que se utiliza, en este caso, para comprobar de forma peridica si hay alertas
por batera baja en la base de datos remota. Esta alarma se activa mediante el siguiente
mtodo, que se ejecuta al iniciarse la aplicacin:
/* * Activa una alarma cada 30 minutos que comprueba si hay alertas de
bateria baja en la DB remota */
93
CAPTULO 4. I MPLEMENTACIN
DE LOS
S OFTPHONES
94
4.3. D ESARROLLO
DE LAS APLICACIONES
un listado con los nombres y nmeros de usuario de los residentes cuyos terminales
tienen un nivel de batera por debajo del 15% de su capacidad. Este listado, que se
muestra en la figura 4.10(b), no se actualiza de forma automtica, por lo que si se
deja visible esta pantalla por tiempo indefinido, la informacin mostrada puede ser
falsa. Por ello se incluye, en la parte superior de la pantalla, una lnea de texto donde
se indica la fecha y hora de la ltima actualizacin. La actualizacin de los datos se
puede realizar de dos maneras: mediante la opcin Actualizar listado disponible en el
men de esta pantalla o pulsando de nuevo sobre la notificacin de alerta de batera
(en caso de estar presente en la barra de estado).
A este listado tambin se puede acceder mediante la opcin Alertas Batera del
men principal de la aplicacin. Si al acceder o actualizar el listado no hay ninguna
alerta activa, se muestra un dilogo informando de ello al usuario.
4.3.3.2
C OMPROBACIN
DE ALERTAS DE POSICIONAMIENTO
95
CAPTULO 4. I MPLEMENTACIN
DE LOS
S OFTPHONES
de localizacin). Esta llamada hace que Asterisk ponga en contacto, mediante una
llamada SIP, a estas dos partes: el residente que ha generado la alerta y la recepcin
del centro (es decir, el usuario de esta aplicacin). Al finalizarse la llamada, se muestra
un plano de la zona (alrededor de la residencia) con la ubicacin de los residentes
que se encuentran fuera de la zona permitida. De esta forma, la recepcin del centro
puede saber la localizacin del residente con el que acaba de hablar.
Con este objetivo, se crea la actividad ShowLocationMap, que muestra el plano
con la ubicacin de los residentes en estado de alerta o en seguimiento. La solicitud
de inicio/finalizacin de un seguimiento se realiza tambin desde este plano. El
funcionamiento concreto de esta clase se detallar ms adelante.
Igual que en la aplicacin diseada para los residentes, se han realizado algunas
modificaciones respecto al softphone bsico para adaptarlo a las necesidades de esta
aplicacin. En este caso, se destacan los cambios realizados en el broadcast receiver
CallReceiverSIP y en el servicio ServiceSIP.
Como ya se ha comentado, estas aplicaciones no estn diseadas para manejar
ms de una llamada a la vez. Si se recibe una llamada nueva durante una llamada
en curso, la llamada nueva se cuelga (envindola al buzn de voz) y no consta en el
registro de llamadas. En este caso, si la llamada nueva es una llamada de emergencia,
aunque no se descuelgue, s que aparece en la pantalla del terminal el mapa de la zona
con la localizacin de los residentes que estn en estado de alerta de posicionamiento.
De esta forma, aunque no se pueda poner en contacto al residente que ha generado la
alerta con la recepcin del centro, s se avisa del estado de alerta del mismo.
Para mostrar el mapa de localizacin en este caso, se utiliza el siguiente mtodo
desde el broadcast receiver que maneja las llamadas entrantes:
protected void emergencyCall ( String callerID ) {
if ( callerID . equals ( " Emergency Call " ) ) {
Intent showMapIntent = new Intent ( contexto ,
ShowLocationMap . class ) ;
showMapIntent . setFlags ( Intent . FLAG_ACTIVITY_NEW_TASK ) ;
contexto . startActivity ( showMapIntent ) ;
}
}
96
4.3. D ESARROLLO
DE LAS APLICACIONES
97
CAPTULO 4. I MPLEMENTACIN
DE LOS
S OFTPHONES
98
4.3. D ESARROLLO
DE LAS APLICACIONES
El acceso a este mapa se puede realizar de dos formas distintas: al colgar una
llamada entrante de emergencia, de forma automtica; o a travs de la opcin Mapa
Alertas del men principal de la aplicacin.
Al lanzar la actividad, antes de poder mostrar el mapa, hay que configurar algunos
aspectos del mismo, as como de los componentes que aparecern en l (marcadores).
Esta definicin se puede ver en el cdigo siguiente:
private void defineMapSettings () {
/* * define el marcador para los usuarios en estado de alerta
( rojos ) */
marker = this . getResources () . getDrawable ( R . drawable . marker ) ;
marker . setBounds (0 , 0 , marker . getIntrinsicWidth () ,
marker . getIntrinsicHeight () ) ;
/* * define el marcador para el usuario en seguimiento ( verde ) */
gmarker = this . getResources () . getDrawable ( R . drawable . marker_green ) ;
gmarker . setBounds (0 , 0 , gmarker . getIntrinsicWidth () ,
gmarker . getIntrinsicHeight () ) ;
/* * crea una referencia al objeto mapa y lo configura en modo
vista de satelite */
mapView = ( MapView ) findViewById ( R . id . mapView ) ;
mapView . setSatellite ( true ) ;
/* * objeto MapController que permite trabajar con el mapa */
mc = mapView . getController () ;
/* * configura el nivel de zoom del mapa */
mc . setZoom (17) ;
/* * elimina todos los posts pendientes que pueda haber en cola */
mHandler . removeCallbacks ( mUpdateTimeTask ) ;
/* * programa el objeto de tipo Runnable ( mUpdateTimeTask ) para que
se ejecute su metodo run () al cabo de 100 ms */
mHandler . postDelayed ( mUpdateTimeTask , 100) ;
}
Primero se definen los marcadores que aparecern sobre el mapa (rojos y verdes). A
continuacin se crea una referencia al mapa mapView y se especifican algunos parmetros de su configuracin inicial: aspecto tipo satlite y nivel de zoom (17). Por ltimo,
utilizando un objeto de tipo Handler, se inicia el proceso de marcar sobre el mapa la
posicin de los residentes que se encuentren en estado de alerta. Los objetos Handler
99
CAPTULO 4. I MPLEMENTACIN
DE LOS
S OFTPHONES
permiten, entre otras cosas, programar la ejecucin de un objeto Runnable cada cierto
tiempo. En este caso, se utiliza el objeto mUpdateTimeTask, cuyo cdigo se muestra a
continuacin, y que refresca la informacin mostrada en el mapa cada 30 segundos.
private Runnable mUpdateTimeTask = new Runnable () {
public void run () {
/* * actualiza la posicion de los marcadores y refresca el
mapa */
updateMarkersPosition () ;
long startTime = SystemClock . uptimeMillis () ;
/* * programa este objeto para que ejecute su metodo run () al
cabo de 30 s */
mHandler . postAtTime ( this , startTime + 30000) ;
}
};
100
4.3. D ESARROLLO
DE LAS APLICACIONES
101
CAPTULO 4. I MPLEMENTACIN
DE LOS
S OFTPHONES
Para poder dibujar elementos encima del mapa (como los marcadores) se debe utilizar un objeto de tipo Overlay. Para esta aplicacin, se ha creado una clase propia
(MapOverlay) que extiende a una clase de tipo lista de Overlays, modificando su comportamiento. Se crean dos constructores distintos (uno para cada tipo de marcador)
que, a partir de la informacin obtenida de la base de datos, crearn los objetos de
tipo Overlay que se dibujarn encima del mapa. Tambin se incluyen varios mtodos
que permiten, entre otras cosas, dibujar los marcadores (draw) y especificar el comportamiento de stos al pulsar sobre ellos (onTap).
private class MapOverlay extends ItemizedOverlay < OverlayItem > {
/* * lista donde se guardan todos los objetos OverlayItem
( marcadores ) que se dibujaran sobre el mapa */
private List < OverlayItem > items = new ArrayList < OverlayItem >() ;
private Drawable marker = null ;
/* * constructor de la clase para marcadores de alertas de
proximidad
* marker = marcador rojo
* list = lista con los datos de los usuarios en situacion de
alerta */
public MapOverlay ( Drawable marker , List < String [] > list ) {
super ( marker ) ;
this . marker = marker ;
/* * recorre la lista de usuarios en estado de alerta ( list ) y
crea un objeto de tipo OverlayItem para cada usuario . Anade
todos los objetos a la lista item */
for ( int i =0; i < list . size () ; i ++) {
String [] p = list . get ( i ) ;
items . add ( new
OverlayItem ( getPoint ( Double . parseDouble ( p [0]) ,
Double . parseDouble ( p [1]) ) , p [2] , p [3]) ) ;
}
/* * crea los objetos que hay en la lista item ( mediante el
metodo createItem () ) y los dibuja en el mapa ( mediante el
metodo draw () )
* se debe llamar en cuanto se tengan objetos en la lista */
populate () ;
}
/* * constructor de la clase para el marcador de seguimiento
* marker = marcador verde
* p = datos del usuario que este en seguimiento */
public MapOverlay ( Drawable marker , String [] p ) {
super ( marker ) ;
this . marker = marker ;
/* * crea un objeto de tipo OverlayItem con los datos del
usuario en seguimiento . Anade el objeto a la lista item */
102
4.3. D ESARROLLO
DE LAS APLICACIONES
103
CAPTULO 4. I MPLEMENTACIN
DE LOS
S OFTPHONES
FIGURA 4.13: a) Men del mapa de alertas. b) Dilogo para iniciar un seguimiento.
104
4.3. D ESARROLLO
DE LAS APLICACIONES
Por ltimo, como en el caso anterior, se fuerza una actualizacin del mapa.
private void stopSeguimiento () {
if ( conSeguimiento ) {
conSeguimiento = false ;
/* * realiza una llamada a la extension de fin de seguimiento */
sb . getBinder () . initiateFollowUpCall ( usuario , " 035 " ) ;
/* * actualiza la posicion de los marcadores en el mapa */
updateMarkersPosition () ;
}
}
105
CAPTULO 4. I MPLEMENTACIN
106
DE LOS
S OFTPHONES
5
Conclusiones y lneas de futuro
y despus de revisar los objetivos planteados en la introduccin de esta memoria, podemos decir que se han cumplido los objetivos definidos
para este proyecto.
Hay que recalcar que, aunque este proyecto est enfocado como un caso real
(implementacin de una plataforma VoIP en una residencia de ancianos), no est
realmente desarrollado para su utilizacin inmediata, sera ms bien como una prueba
piloto.
Se ha realizado todo el trabajo posible con los recursos disponibles (que a veces
resultaron limitadores) tanto a la hora de desarrollar el proyecto como de realizar las
pruebas correspondientes. A continuacin se comentan los principales problemas y
factores que habra que mejorar en revisiones futuras:
* Para este proyecto se busc una forma de integrar la VoIP en una aplicacin
Android, utilizando el protocolo SIP, que es el ms extendido entre los usuarios
de VoIP. Al final se decidi utilizar la API SIP nativa que proporciona el propio
Android. De todas formas, esta API est muy limitada y, aunque fue suficiente
para la realizacin de este proyecto, se ha descubierto que no es la ms apropiada para ello.
Aunque la API SIP va incluida en todas las versiones de Android a partir de la 2.3,
se ha descubierto que algunas marcas de smartphones tienen capada esta API
para congraciarse con las operadoras de telefona mvil. En este caso, se tuvieron
que rootear los dos terminales de pruebas para poder desbloquear su utilizacin.
Adems, esta API no soporta la utilizacin conjunta con servidores STUN, con lo
que no se han podido solucionar los problemas de NAT (inherentes a SIP) que
ya se comentaron en el captulo 2. Tambin se descubri que, aunque no se
especificaba de ninguna manera en la documentacin de la API, su utilizacin
107
CAPTULO 5. C ONCLUSIONES
Y LNEAS DE FUTURO
con conexin de datos no es automtica: hay que modificar archivos internos del
smartphone a los que, en principio, un usuario normal no debera tener acceso.
Por estos motivos, si se deseara utilizar los softphones desarrollados en un entorno
prctico, habra que buscar otra API SIP externa e integrarla en las aplicaciones.
* El softphone de recepcin consulta la base de datos cada cierto tiempo para ver
si hay alertas de batera activadas, mtodo que resulta ineficiente. La decisin de
controlar el nivel de batera de los dispositivos de los residentes se tom una vez
finalizada la programacin de las aplicaciones, por lo que se busc una solucin
rpida que permitiera obtener los resultados requeridos, pero sin tener que estudiar opciones fuera del conocimiento que se tena en aquel momento. Se debera
buscar una alternativa para evitar que la aplicacin realice accesos y comprobaciones innecesarias a la base de datos, mejorando as la autonoma del dispositivo.
* Aadir securizacin en Asterisk utilizando el protocolo de seguridad SRTP
(Secure Real-time Transport Protocol). Debido a la evolucin que sufri el
proyecto, esta funcionalidad qued en un segundo plano y queda entonces para
revisiones futuras.
* Durante el desarrollo de la centralita de telefona aparecieron dos problemas para
los cuales, a la fecha de entrega, no se ha encontrado solucin. El tratamiento de
estas cuestiones queda, por tanto, pendiente para resolver en futuras revisiones.
1. Deteccin de colgado: Asterisk no es capaz de detectar cuando una llamada
entrante a la PBX cuelga. Si la finalizacin de la llamada proviene del exterior, Asterisk no lo detecta y sigue haciendo la rutina marcada hasta que
llega a un Hangup() (Asterisk cuelga y libera la lnea). Si no se llega a un
Hangup(), la lnea queda bloqueada y para desbloquearla hay que reiniciar
el servicio Asterisk. Se proporciona una solucin provisional al problema
haciendo que se libere la lnea en casos de bloqueo mediante timeouts.
2. Identificador de llamada: Asterisk no obtiene el CallerID de las llamadas que
llegan a la PBX. Esto puede ser debido a varios motivos, entre los que se
destacan: que la red Ibercom no ofrece este servicio; o existe algn elemento
intermedio que elimina el CallerID. Por este motivo, no se ha utilizado esta
funcionalidad en la PBX.
* El entorno de pruebas de este proyecto sera un aspecto a mejorar. Las aplicaciones deben estar conectadas a la red en todo momento. Esto supone un problema ya que el campus universitario no dispone de una red wifi uniforme en
toda su extensin (hay zonas sin cobertura fuera de los edificios). Lo ideal hubiera sido disponer de smartphones con conexin de datos para poder realizar
algunas de las pruebas, pero diversos factores (como la eleccin de la API SIP) no
lo permitieron.
108
5.1. VALORACIN
5.1
PERSONAL
VALORACIN
PERSONAL
NIVEL PERSONAL ,
La mayor parte del trabajo que se ve en este proyecto es fruto del auto aprendizaje,
ya sea mediante la consulta y lectura de libros, como la lectura de infinitas pginas
web, foros de grupos y comunidades especializadas en cada una de dichas tecnologas.
Esto es algo que valoro mucho, ya que es una situacin habitual en el mundo laboral.
Desde que empec a trabajar en este proyecto me he dado cuenta de que el
desarrollo de aplicaciones Android es algo que me interesa bastante y en lo que me
gustara trabajar en un futuro.
En conclusin, considero que este proyecto ha resultado ser una experiencia muy
positiva (aunque algo dura) de cara a mi futuro laboral y me ha permitido aprender y
aplicar nuevas tecnologas que me pueden resultar muy tiles para esta nueva etapa de
mi vida.
109
CAPTULO 5. C ONCLUSIONES
110
Y LNEAS DE FUTURO
6
Bibliografa
Publicaciones:
* Madsen, Leif; Van Meggelen, Jim; Bryant, Russell. Asterisk: The Definitive Guide
(3rd Edition). OReilly, 2011.
* Digium 800 Series User Manual. Digium, 2009.
* Lee, Wei-Meng. Beginning Android Application Development. Wiley Publishing,
2011.
* Murphy, Mark L. The Busy Coders Guide to Advanced Android Development.
CommonsWare, 2010.
* Kelly, Timothy. VoIP for Dummies. Wiley Publishing, 2005.
* International Development Research Centre.
Escudero-Pascual, Alberto;
Berthilson, Louise. VoIP para el desarrollo [en lnea]. 2006.
* Margarit, Gens. Administracin de sistemas Asterisk [apuntes cursillo]. 2011.
Enlaces de inters:
* www.voip-info.org
Gua de referencia para todo lo relacionado con VoIP.
Wiki con documentacin sobre Asterisk: consultada para la configuracin de los
mdulos de Asterisk y las funciones y aplicaciones utilizadas en el dialplan.
* www.asterisk.org
Pgina oficial de Asterisk. Contiene documentacin de Asterisk y Dahdi.
111
CAPTULO 6. B IBLIOGRAFA
* http://stackoverflow.com
Foro para programadores tanto profesionales como amateurs.
Utilizado para resolver problemas relacionados con la programacin de las aplicaciones Android.
* http://developer.android.com/index.html
Pgina web oficial para desarrolladores de aplicaciones Android.
documentacin, guas de referencia, ejemplos de cdigo, etc.
112
Contiene
A
Instalaciones y configuraciones relacionadas con
Asterisk
A.1
A.1.1
Antes de empezar, hay que verificar que se tienen instaladas en el servidor todas las
dependencias que los paquetes bsicos necesitan. Para no tener que hacerlo manualmente (uno a uno), el paquete Asterisk contiene un script que se encarga de instalar
todas las dependencias y prerrequisitos necesarios. Para ejecutar el script, escribimos
las siguientes lneas en un terminal:
> cd / usr / src / asterisk -10.0.0/ contrib / scripts /
> ./ install_prereq install
A.1.2
DAHDI
Con el paquete descargado y descomprimido, compilamos e instalamos DAHDI escribiendo los siguientes comandos en un terminal:
>
>
>
>
Para poder integrar el cancelador de eco Oslec con DAHDI se deben hacer algunos
cambios en este paquete. Es por eso que, una vez instalado, deber recompilarse.
113
CAPTULO A. I NSTALACIONES
A.1.3
A STERISK
LIB PRI
A.1.4
A STERISK
Con el ltimo comando aparece un men con interfaz grfica que permite especificar los mdulos de Asterisk que se quieren incluir en la instalacin. Los mdulos de
la instalacin por defecto ya aparecen marcados. Adems de estos, se seleccionan unas
aplicaciones del dialplan que estaban incluidas por defecto en versiones anteriores y los
paquetes de sonidos (en ingls y castellano) y de msica en espera en varios formatos.
Applications
[*] app_meetme
[*] app_readfile
[*] app_setcallerid
Core Sounds Packages
[*] CORE - SOUNDS - EN - WAV
[*] CORE - SOUNDS - EN - ULAW
[*] CORE - SOUNDS - EN - ALAW
[*] CORE - SOUNDS - EN - GSM
114
A.1. I NSTALACIONES
RELACIONADAS CON
A STERISK
[*]
[*]
[*]
[*]
[*]
[*]
make
make install
make config
make samples
Por ltimo, se ejecuta el siguiente comando, que comprime los archivos tipo log que
genera Asterisk, ahorrando espacio en disco:
> make install - logrotate
115
CAPTULO A. I NSTALACIONES
A.1.5
A STERISK
A continuacin, se crean dentro del paquete DAHDI los directorios donde se debern
ubicar los archivos obtenidos del kernel y se copian los archivos relativos a Oslec en
estos directorios.
> mkdir dahdi - linux - complete -2.5.0.2+2.5.0.2/ linux / drivers / staging
> mkdir
dahdi - linux - complete -2.5.0.2+2.5.0.2/ linux / drivers / staging / echo
> cp linux -2.6.32/ drivers / staging / echo /*
dahdi - linux - complete -2.5.0.2+2.5.0.2/ linux / drivers / staging / echo /
Para utilizar Oslec, hay que descomentar y modificar las dos lneas relativas al cancelador en el archivo Kbuild del paquete DAHDI.
> vi dahdi - linux - complete -2.5.0.2+2.5.0.2/ linux / drivers / dahdi / Kbuild
# descomentar y modificar estas lineas
obj - m += dahdi_echocan_oslec . o
obj - m += ../ staging / echo / echo . o
Para aplicar los cambios, se vuelve a compilar e instalar el paquete DAHDI como
se especifica en el apartado anterior. Verificamos que se han ejecutado los cambios
mirando el resultado de la compilacin. Si aparecen las siguientes lneas, Oslec est
instalado e integrado con DAHDI y slo hay que configurarlo.
CC [ M ]
/ usr / src / dahdi - linux - complete -2.5.0.2+2.5.0.2/ linux / drivers / dahdi /
dahdi_echocan_oslec . o
CC [ M ]
/ usr / src / dahdi - linux - complete -2.5.0.2+2.5.0.2/ linux / drivers / dahdi /
../ staging / echo / echo . o
A.1.6
R ECONOCIMIENTO DE VOZ
Los paquetes necesarios para instalar las libreras Pocketsphinx (librera de reconocimiento) y Sphinxbase (librera de soporte) se pueden descargar desde la pgina
116
A.2. A RCHIVOS
DE CONFIGURACIN
A STERISK
Para asegurar que el sistema es capaz de cargar las libreras correctamente, se configura el path para que sepa dnde buscar las libreras compartidas.
> export LD_LIBRARY_PATH =/ usr / local / lib
> export PKG_CONFIG_PATH =/ usr / local / lib / pkgconfig
A.2
A.2.1
117
CAPTULO A. I NSTALACIONES
A STERISK
transfer = yes
canpark = yes
callreturn = yes
cancallforward = yes
echocancel = yes
echocancelwhenbridged = yes
echotraining = no
rxgain = 10.0
txgain = 5.0
cid_rxgain = 8.0
hanguponpolarityswitch = yes
tonezone =6
ringtimeout =8000
immediate = yes
busydetect = yes
busycount =6
usedistinctiveringdetection = yes
; FXO Modules
group =1
callgroup =1
pickupgroup =1
signalling = fxs_ks
callerid = asreceived
context = from - pstn
channel = > 1 -8
A.2.2
U SUARIOS
118
A.2. A RCHIVOS
DE CONFIGURACIN
A STERISK
[501]
; recepcion
type = friend
secret =12345
host = dynamic
qualify = yes
canreinvite = no
context = PermisosTrabajadores
disallow = all
allow = ulaw
allow = alaw
[502](501)
; trabajadora social
[503](501)
; gerocultora 1
[504](501)
; gerocultora 2
[505](501)
; gerocultora 3
[506](501)
; despacho directora
[507](501)
; movil directora
[508](501)
; casa directora
[509](501)
; psicologa
[500](501)
; jefa enfermeras
A.2.3
D IALPLAN
119
CAPTULO A. I NSTALACIONES
A STERISK
120
A.2. A RCHIVOS
DE CONFIGURACIN
A STERISK
[ macro - UnaExten ]
; si no te cogen el telefono salta al buzon de voz
; comprueba primero si el numero esta en la blacklist
; comprueba si hay desvio de llamadas
; con parking de llamadas ( t / T en Dial para poder transferir )
; con grabacion de la llamada si es para 200 ( monitorizacion ) ( pruebas )
exten = > s ,1 , Answer ()
exten = > s ,2 , Set ( exten = $ { DB ( CFIM / $ { MACRO_EXTEN }) })
exten = > s ,3 , GotoIf ( $ [ " $ { exten } " = " " ]?4:5)
exten = > s ,4 , Set ( exten = $ { MACRO_EXTEN })
exten = > s ,5 , GotoIf ( $ { BLACKLIST () }? bl )
exten = > s ,6 , GotoIf ( $ [ $ { exten }=200]?:9)
exten = > s ,7 , Set ( CALLFILENAME = $ { MACRO_EXTEN } a $ { CALLERID ( num ) } $ { STRFTIME ( $ { EPOCH } , GMT -2 ,% e % b % R ) })
exten = > s ,8 , Monitor ( wav , $ { CALLFILENAME } , m )
exten = > s ,9 , Dial ( SIP / $ { exten } ,30 , t / T )
exten = > s ,n , NoOp ( $ { DIALSTATUS })
exten = > s ,n , PlayBack ( vm - nobodyavail )
exten = > s ,n , VoiceMail ( $ { exten })
exten = > s ,n , Hangup ()
exten = > s , n ( bl ) , PlayBack ( tt - somethingwrong )
exten = > s ,n , Hangup ()
[ Buzon_de_voz ]
; Consulta el buzon de voz
exten = > 99 ,1 , VoiceMailMain ()
[ grabadora ]
; para grabar las locuciones de voz de la centralita
exten = > 111 ,1 , PlayBack ( beep )
; same = > n , Record ( custom / asr_oficina_cerrada . wav )
; same = > n , Record ( custom / asr_bienvenida . wav )
; same = > n , Record ( custom / asr_extension_voz . wav )
; same = > n , Record ( custom / asr_menu . wav )
; same = > n , Record ( custom / asr_extension . wav )
; same = > n , Record ( custom / asr_max_intentos . wav )
; same = > n , Record ( custom / asr_recepcion . wav )
; same = > n , Record ( custom / asr_trabajador_social . wav )
; same = > n , Record ( custom / asr_enfermeria . wav )
; same = > n , Record ( custom / asr_no_disponible . wav )
; same = > n , Record ( custom / asr_cola . wav )
; same = > n , Record ( custom / asr_max_t_cola . wav )
; same = > n , Record ( custom / asr_directora . wav )
; same = > n , Record ( custom / asr_psicologa . wav )
; same = > n , Record ( custom / asr_desvio . wav )
; same = > n , Record ( custom / asr_exterior . wav )
; same = > n , Record ( custom / asr_despedida . wav )
121
CAPTULO A. I NSTALACIONES
A STERISK
122
A.2. A RCHIVOS
DE CONFIGURACIN
A STERISK
123
CAPTULO A. I NSTALACIONES
same
same
same
same
=>
=>
=>
=>
A STERISK
; extension Directora
exten = > 3 ,1 , PlayBack ( custom / asr_directora )
same = > 2 , Dial ( SIP /506 ,10 , m ( radio ) )
same = > 3 , GotoIf ( $ [ $ { DIALSTATUS }= NOANSWER ]?:5)
same = > 4 , FollowMe ( directora , san )
same = > 5 , Voicemail (506)
same = > 6 , Goto ( # ,1)
; extension Psicologa
; de momento 509 esta redirigido a 501
exten = > 4 ,1 , PlayBack ( custom / asr_psicologa )
same = > 2 , Set ( num = $ { DB ( CFIM /509) })
same = > 3 , GotoIf ( $ [ " $ { num } " = " " ]?:6)
same = > 4 , Set ( num =509)
same = > 5 , Goto (7)
same = > 6 , PlayBack ( custom / asr_desvio )
same = > 7 , Dial ( SIP / $ { num } ,10 , m ( radio ) )
same = > n , PlayBack ( custom / asr_no_disponible )
same = > n , Goto ( # ,1)
; llama desde un telefono exterior a otro pasando por Asterisk
exten = > 5 ,1 , PlayBack ( custom / asr_exterior )
same = > n , NoOp (1 , $ { CHANNEL } , $ { CALLERID ( num ) } - $ { CALLERID ( name ) })
same = > n , Read ( telf , dir - pls - enter ,5)
same = > n , Dial ( DAHDI / g1 / $ { telf } ,15 , m ( radio ) )
same = > n , Hangup ()
; extension menu privado
exten = > 6 ,1 , Goto ( menu - privado ,s ,1)
; extension para colgar
exten = > # ,1 , PlayBack ( custom / asr_despedida )
same = > 2 , Hangup ()
; extension en caso de error al introducir la extension
exten = > i ,1 , PlayBack ( custom / asr_opcion_incorrecta )
same = > 2 , GotoIf ( $ [ $ { k }=3]? s , max )
same = > 3 , Goto (s ,4)
[ menu - privado ]
exten = > s ,1 , PlayBack ( custom / asr_bienvenida_privado )
same = > 2 , Authenticate (12369 , j )
same = > 3 , Background ( custom / asr_menu_privado )
124
A.2. A RCHIVOS
DE CONFIGURACIN
A STERISK
A.2.4
M SICA EN ESPERA
A.2.5
B UZN DE VOZ
125
CAPTULO A. I NSTALACIONES
A STERISK
[ default ]
; buzones de voz para los residentes
200 = > 123 , residente1 , chiara2026@gmail . com
201 = > 456 , residente2 , chiara2016@gmail . com
202 = > 789 , residente3 , chiara2026@gmail . com
; buzones de voz para todos los trabajadores
501 = > 123 , Recepcion , chiara2026@gmail . com
502 = > 123 , Trabajadora Social , chiara2026@gmail . com
503 = > 123 , Gerocultora 1 , chiara2026@gmail . com
504 = > 123 , Gerocultora 2 , chiara2026@gmail . com
505 = > 123 , Gerocultora 3 , chiara2026@gmail . com
506 = > 123 , Despacho Directora , chiara2026@gmail . com
507 = > 123 , Movil Directora , chiara2026@gmail . com
508 = > 123 , Casa Directora , chiara2026@gmail . com
509 = > 123 , Psicologa , chiara2026@gmail . com
500 = > 123 , Jefa Enfermeras , chiara2026@gmail . com
A.2.5.1
G ESTOR
DE CORREO
126
A.2. A RCHIVOS
DE CONFIGURACIN
A STERISK
# Format :
local_account : outgoing_address : mailhub
#
root : securebiometricvoting@gmail . com : smtp . gmail . com :587
A.2.6
F OLLOW M E
A.2.7
S ALA DE C ONFERENCIAS
A.2.8
C OLAS
A.2.9
CAPTULO A. I NSTALACIONES
[ general ]
parkext = > 700
parkpos = > 701 -720
( defafult parking lot )
A STERISK
128
B
Instalaciones y configuraciones relacionadas con
las aplicaciones Android
B.1
I NSTALACIN
A NDROID
Eclipse
Se descarga la ltima versin de Eclipse en el servidor desde la pgina web oficial:
http://www.eclipse.org/downloads/. La ltima versin disponible al iniciar este
proyecto, y por tanto la instalada, es la Eclipse Classic 3.6.2 (Helios). Lo colocamos en
el directorio /home/ldd/Desarrollo.
1
2
129
CAPTULO B. I NSTALACIONES
A NDROID
Android SDK
Se descarga el SDK de Android de la pgina web oficial: http://developer.
android.com/sdk/index.html. En este caso, se elige la versin 14 para Linux
y tras aceptar la licencia, se guarda y descomprime el fichero en el directorio
home/ldd/Desarrollo.
Antes de instalar nada, hay que declarar en el archivo .bashrc los paths de: android,
java y eclipse, para que el sistema los encuentre. Se incluyen las siguientes lneas al final
del archivo:
> nano ~/. bashrc
export PATH = $ { PATH }:/ home / ldd / Desarrollo / android - sdk - linux_x86 / tools
export PATH = $ { PATH }:/ usr / src / jdk1 .6.0 _26 / bin
export PATH = $ { PATH }:/ home / ldd / Desarrollo / eclipse
A continuacin se cierran todos los terminales abiertos, para que haga efecto el path
que se acaba de definir, se abre uno nuevo y se escribe la instruccin:
android
130
B.1. I NSTALACIN
A NDROID
Al hacer esto, se abre una nueva ventana, como se puede ver en la figura B.3,
para aceptar las licencias de los paquetes que se van a instalar. Se seleccionan todas
131
CAPTULO B. I NSTALACIONES
A NDROID
ADT
El plugin de Android ADT se instala desde el mismo Eclipse siguiendo los pasos
especificados a continuacin. Primero se abre Eclipse, y desde la pestaa Help
del men, se escoge la opcin Install New Software y se pulsa el botn Add. En
la ventana que aparece, hay que especificar el nombre del software que se quiere
instalar (Android Plugin) y la direccin de descarga, como se puede ver en la figura B.4.
FIGURA B.4: Ventana para instalar el plugin ADT en Eclipse.
132
B.1. I NSTALACIN
A NDROID
Development, como puede verse en la figura B.5. Se selecciona todo y se pulsa el botn
Next para que se comprueben las dependencias necesarias. En la pantalla siguiente
(figura B.6) se aceptan los trminos de la licencia y se pulsa Finish.
.
FIGURA B.5: Pantalla con los paquetes necesarios para instalar el plugin ADT.
133
CAPTULO B. I NSTALACIONES
A NDROID
FIGURA B.6: Pantalla para aceptar las licencias de los paquetes del plugin ADT.
El ltimo paso consiste en indicar a Eclipse la ubicacin del Android SDK. Para
ello seleccionamos la siguiente opcin del men W indow > P ref erences > Android y
donde pone SDK Location pulsamos el botn Browse y especificamos la carpeta donde
est instalado el SDK de Android, que en este caso es:
Se pulsa el botn Apply para que se cargue el Android SDK Content Loader. Una
vez finalizado este proceso, aparece la pantalla de la figura B.7 en la que se ve un
listado con todo lo que se ha instalado. Con esto se consigue importar el Android SDK
a Eclipse para disponer de las ayudas necesarias al escribir el cdigo.
134
B.2. B ASE
DE DATOS REMOTA
FIGURA B.7: Pantalla de Eclipse con las opciones del Android SDK instaladas.
B.2
B.2.1
B ASE
DE DATOS REMOTA
I NSTALACIN Y CONFIGURACIN
Para instalar el paquete LAMP (Linux, Apache, MySQL, PHP) en el servidor, se escribe
la siguiente lnea en un terminal:
> tasksel install lamp - server
Para comprobar si se ha realizado correctamente la instalacin, se abre un navegador, se escribe la direccin del servidor en la barra de direcciones (http://localhost)
y se debe obtener el siguiente resultado por pantalla:
It works !
This is the default web page for this server .
The web server software is running but no content has been added , yet .
135
CAPTULO B. I NSTALACIONES
A NDROID
136
B.2. B ASE
DE DATOS REMOTA
Por ltimo, hay que crear las tablas que tendr la base de datos. Como ya se ha
comentado anteriormente, la base de datos del proyecto tiene dos tablas: MyAlerts y
MyCoordinates. Para crear una tabla, se clica con el botn derecho encima del nombre
de la base de datos (ALCATRAZ) y se escoge la opcin Execute Query. Al crear las
tablas, hay que definir su nombre, as como el nombre y tipo de todos sus atributos.
En la figura B.10 se ve la query utilizada para crear la tabla de alertas MyAlerts. De
la misma manera, en la figura B.11 se ve la query utilizada para crear la tabla de
coordenadas MyCoordinates. Al ejecutar estas dos querys, se crean las dos tablas y se
aaden a la base de datos ALCATRAZ tal y como se ve en la figura B.12. Con esto, ya
se tiene la base de datos preparada para su utilizacin desde las aplicaciones Android.
137
CAPTULO B. I NSTALACIONES
138
A NDROID
B.2. B ASE
DE DATOS REMOTA
139
CAPTULO B. I NSTALACIONES
A NDROID
FIGURA B.12: Base de datos Alcatraz con sus dos tablas: MyAlerts y MyCoordinates.
El ltimo paso necesario es la creacin de los scripts PHP que se utilizan para
gestionar la base de datos.
B.2.2
S CRIPTS PHP
Los scripts PHP que se utilizan para gestionar la base de datos ALCATRAZ deben ubicarse en el directorio de Apache, en este caso, /var/www/. Se aaden tantos scripts
como operaciones se quieran realizar, utilizando los siguientes comandos en un terminal:
140
B.2. B ASE
DE DATOS REMOTA
A continuacin se presenta el cdigo de todos los scripts PHP que se han utilizado
en este proyecto, diferenciando los utilizados por cada una de las aplicaciones. Para
realizar pruebas, estos scripts se pueden ejecutar directamente desde un navegador
escribiendo la instruccin con la siguiente nomenclatura en la barra de direcciones:
http :// localhost / nombre_script . php ? arg1 = value1 & arg2 = value2 & arg3 = value3 ...
B.2.2.1
S OFTPHONE
RESIDENTES
insert_alert_user.php
<? php
mysql_connect ( " localhost " ," root " ," t1lq1si " ) ;
mysql_select_db ( " ALCATRAZ " ) ;
try {
?>
}
catch ( Exception $e ) {
print ( json_encode ( $e ) ) ;
mysql_close () ;
}
get_alert_user.php
<? php
mysql_connect ( " localhost " ," root " ," t1lq1si " ) ;
mysql_select_db ( " ALCATRAZ " ) ;
try {
141
CAPTULO B. I NSTALACIONES
?>
}
catch ( Exception $e ) {
print ( json_encode ( $e ) ) ;
mysql_close () ;
}
update_alert_user.php
<? php
mysql_connect ( " localhost " ," root " ," t1lq1si " ) ;
mysql_select_db ( " ALCATRAZ " ) ;
try {
?>
}
catch ( Exception $e ) {
print ( json_encode ( $e ) ) ;
mysql_close () ;
}
delete_alert_user.php
<? php
mysql_connect ( " localhost " ," root " ," t1lq1si " ) ;
mysql_select_db ( " ALCATRAZ " ) ;
try {
142
A NDROID
B.2. B ASE
DE DATOS REMOTA
?>
}
catch ( Exception $e ) {
print ( json_encode ( $e ) ) ;
mysql_close () ;
}
update_alert_flag.php
<? php
mysql_connect ( " localhost " ," root " ," t1lq1si " ) ;
mysql_select_db ( " ALCATRAZ " ) ;
try {
?>
}
catch ( Exception $e ) {
print ( json_encode ( $e ) ) ;
mysql_close () ;
}
update_battery_flag.php
<? php
mysql_connect ( " localhost " ," root " ," t1lq1si " ) ;
mysql_select_db ( " ALCATRAZ " ) ;
try {
143
CAPTULO B. I NSTALACIONES
A NDROID
?>
}
catch ( Exception $e ) {
print ( json_encode ( $e ) ) ;
mysql_close () ;
}
insert_coordinates.php
<? php
mysql_connect ( " localhost " ," root " ," t1lq1si " ) ;
mysql_select_db ( " ALCATRAZ " ) ;
try {
?>
B.2.2.2
}
catch ( Exception $e ) {
print ( json_encode ( $e ) ) ;
mysql_close () ;
}
S OFTPHONE
RECEPCIN
get_alert_coordinates.php
<? php
mysql_connect ( " localhost " ," root " ," t1lq1si " ) ;
mysql_select_db ( " ALCATRAZ " ) ;
try {
144
B.2. B ASE
DE DATOS REMOTA
?>
}
catch ( Exception $e ) {
print ( json_encode ( $e ) ) ;
mysql_close () ;
}
get_user_coordinates.php
<? php
mysql_connect ( " localhost " ," root " ," t1lq1si " ) ;
mysql_select_db ( " ALCATRAZ " ) ;
try {
?>
}
catch ( Exception $e ) {
print ( json_encode ( $e ) ) ;
mysql_close () ;
}
check_battery_alert.php
145
CAPTULO B. I NSTALACIONES
A NDROID
<? php
mysql_connect ( " localhost " ," root " ," t1lq1si " ) ;
mysql_select_db ( " ALCATRAZ " ) ;
try {
?>
}
catch ( Exception $e ) {
print ( json_encode ( $e ) ) ;
mysql_close () ;
}
get_battery_alerts.php
<? php
mysql_connect ( " localhost " ," root " ," t1lq1si " ) ;
mysql_select_db ( " ALCATRAZ " ) ;
try {
?>
mysql_close () ;
}
catch ( Exception $e ) {
print ( json_encode ( $e ) ) ;
mysql_close () ;
}
146
B.3. E XTENSIONES
B.3
DE EMERGENCIA
E XTENSIONES
A STERISK
DE EMERGENCIA
A STERISK
Las extensiones de emergencia que se utilizan en las aplicaciones se encuentran en el contexto [android_V A] del dialplan de Asterisk, en el archivo
/etc/asterisk/extensions.conf:
[ android_VA ]
exten = > 033 ,1 , Answer ()
same = > n , PlayBack ( beep )
; Origina una llamada entre SIP /501 ( r e c e p c i n ) y CALLERID ( num )
llama a SIP /501 y luego ejecuta la instruccion de la extension
CALLERID ( num ) , prioridad 2
same = > n , Originate ( SIP /501 , exten , usuarios , $ { CALLERID ( num ) } ,2)
same = > n , Hangup ()
exten = > 034 ,1 , Answer ()
same = > n , Read ( num , ,3)
same = > n , Set ( CALLERID ( num ) =034)
same = > n , Dial ( SIP / $ { num } ,10)
same = > n , Hangup ()
exten = > 035 ,1 , Answer ()
same = > n , Read ( num , ,3)
same = > n , Set ( CALLERID ( num ) =035)
same = > n , Dial ( SIP / $ { num } ,10)
same = > n , Hangup ()
147
CAPTULO B. I NSTALACIONES
148
A NDROID