Asterisk Tesis PDF

July 19, 2023 | Author: Anonymous | Category: N/A
Share Embed Donate


Short Description

Download Asterisk Tesis PDF...

Description

Departamento de Lenguajes y Sistemas Informáticos

Lengoaia eta Sistema Informatikoak Saila

Estudio y Montaje a medida de Centralita Telefónica VoIP Asterisk

Autor:

David Escañuela Alonso

Directores:

Pablo González Nalda y Mikel García Cantabrana (Yet Informática S.L.)

Proyecto Fin de Carrera, Enero 2010

Agradecimientos

Gracias a mi familia que me ha estado apollando continuamente y que ha aguantado mi constante mal humor. Gracias a mis amigos por preocuparse cada poco por el avance del proyecto. Gracias a mis dos directores de proyecto, por una parte a Pablo por prestarme su atención y ayuda cuando lo he requerido y por otra parte a Mikel y a la empresa Yet Informática S.L. y es que he aprendido a valerme por mi mismo, ha sido una experiencia muy positiva. Gracias también al foro Asterisk-ES, donde escriben los autenticos cracks de este mundo en España, los cuales contestan a todas tus dudas desde la más básica a la más técnica.Y más personalmente gracias a Nicolás Gudiño por atenderme en todo momento y a Jean Chassoul , Ivan López y Angel Elena por la ayuda efectuada. i

Resumen y Organización del Proyecto

Resumen En este trabajo, por una parte, se realiza un estudio sobre las centralitas telefónicas Asterisk, así como, su ventaja frente a cualquier centralita por su flexibilidad, potencia y protección de la inversión. Mientras que por otra parte, se trata la implantación de estas centralitas en empresa con el diseño, montaje y configuración a medida para la empresa Yet Informática S.L.

ii

Organización La documentación del proyecto se divide en dos partes no establecidas. Una primera parte la forman los antecedentes, en los que se da información sobre la empresa en la que se sitúa el proyecto, así como, la necesidad de realización de dicho proyecto, los objetivos, a partir de los que se decide qué problema se quiere solucionar y cómo hacerlo y la viabilidad del proyecto, que refleja las panificaciones inicial y real del proyecto y el presupuesto del mismo. La segunda parte está constituida por la memoria del proyecto, la bibliografía, los anexos, el glosario, la conclusión y líneas futuras. La memoria del proyecto está dividida en 4 capítulos:    

Introducción a la VoIP: Conceptos básicos de la telefonía y la VoIP. Asterisk, el futuro de la telefonía: Adentramiento en el mundo Asterisk. Prácticas realizadas: Pruebas hechas durante las prácticas. Centralita Asterisk para Yet Informática S.L.: Diseño, montaje, configuración e implantación de centralita Asterisk.

Como ayuda se incluye un glosario en el que se aclaran los significados de las siglas. Los anexos permitirán conocer más sobre algunos temas específicos, así como, disponer de algunos manuales de instalación. Por último, se comparten los resultados generales que resuelven los objetivos, se elaboran las conclusiones y se plantea el trabajo futuro.

iii

Índice de Contenidos

AGRADECIMIENTOS................................................................................................... I RESUMEN Y ORGANIZACIÓN DEL PROYECTO............................................................. II RESUMEN ......................................................................................................................................II ORGANIZACIÓN ............................................................................................................................. III

ÍNDICE DE CONTENIDOS .......................................................................................... IV ÍNDICE DE FIGURAS ................................................................................................ XII PLANIFICACIÓN DEL PROYECTO........................................................................................................ XII CAPITULO 1 ................................................................................................................................ XIV CAPITULO 2 ................................................................................................................................. XV CAPITULO 3 ................................................................................................................................ XVI CAPITULO 4 ................................................................................................................................ XVI ANEXOS ...................................................................................................................................... XX

iv

ÍNDICE DE TABLAS ................................................................................................ XXII PLANIFICACIÓN DEL PROYECTO...................................................................................................... XXII CAPITULO 1 ............................................................................................................................... XXII CAPITULO 2 ............................................................................................................................... XXII CAPITULO 3 .............................................................................................................................. XXIII CAPITULO 4 .............................................................................................................................. XXIII ANEXOS ................................................................................................................................... XXIII

ANTECEDENTES ........................................................................................................ 1 EMPRESA EN LA QUE SE SITÚA EL PROYECTO ....................................................................................... 1 CÓMO SURGE LA NECESIDAD DEL PROYECTO A REALIZAR ....................................................................... 2

PLANIFICACIÓN DEL PROYECTO ................................................................................ 3 OBJETIVOS DEL PROYECTO............................................................................................................... 3 VIABILIDAD DEL PROYECTO .............................................................................................................. 4 Planificación Inicial Temporal................................................................................................ 4 Planificación Real Temporal .................................................................................................. 4 Desvio Temporal.................................................................................................................... 6 Planificación real del proyecto y herramientas a utilizar en su elaboración ........................ 6 Estructura de Descomposición del Trabajo....................................................................... 6 Fases, Tareas y Entregables............................................................................................... 9 Recursos Humanos y Materiales Amortizables ................................................................... 26 Agenda del proyecto ........................................................................................................... 29 Agenda de recursos: ........................................................................................................ 29 Diagrama de GANTT: ....................................................................................................... 48 Estimación de Costes del Proyecto: .................................................................................... 51 Recursos Humanos ó de Trabajo:.................................................................................... 51 Recursos Materiales Amortizables: ............................................................................... 51 Presupuesto .................................................................................................................... 54

INTRODUCCIÓN A VOIP .......................................................................................... 56 ¿ QUÉ ES VOIP (VOICE OVER INTERNET PROTOCOL)? ........................................................................ 56 ¿POR QUÉ DEBERÍAMOS PASARNOS A VOIP Y NO SEGUIR USANDO SERVICIOS GRATUITOS COMO SKYPE? .... 57 HISTORIA DE VOIP ....................................................................................................................... 58 CARACTERÍSTICAS PRINCIPALES ...................................................................................................... 59 VENTAJAS DE VOIP ...................................................................................................................... 59 Funcionales.......................................................................................................................... 59 De Gestión ........................................................................................................................... 59 Económicas.......................................................................................................................... 60 PROBLEMAS ................................................................................................................................ 60 ELEMENTOS FUNDAMENTALES DE UNA RED VOIP .............................................................................. 60 ¿CÓMO SE TRANSMITE VOIP POR LA RED? ....................................................................................... 61 CONCEPTOS PRINCIPALES DE VOIP .................................................................................................. 62 PBX ...................................................................................................................................... 62 ASTERISK (PBX avanzada) .................................................................................................... 63 PSTN-RTB ............................................................................................................................. 63 Señalización en telefonía tradicional .................................................................................. 63 Señalización analógica..................................................................................................... 63 Señalización digital .......................................................................................................... 65 v

Señalización entre centrales telefónicas ......................................................................... 66 Señalización en telefonía IP................................................................................................. 66 Protocolo H.323 .............................................................................................................. 66 Protocolo MGCP (Media Gateway Control Protocol)...................................................... 67 Protocolo SIP (Session Initiation Protocol)...................................................................... 68 Servidores Proxy SIP ........................................................................................................ 70 Protocolos en tiempo real y el NAT................................................................................. 72 SIP vs NAT ........................................................................................................................ 72 Protocolo IAX (Inter-Asterisk Exchange) ......................................................................... 73 EQUIPAMIENTO PARA VOIP............................................................................................................ 75 Teléfonos IP ......................................................................................................................... 75 SoftPhones (Telefonía con Software) .................................................................................. 78 X-Lite................................................................................................................................ 79 Zoiper .............................................................................................................................. 80 Ekiga ................................................................................................................................ 80 Otros SoftPhones ............................................................................................................ 81 Adaptadores IP .................................................................................................................... 82 Gateways VoIP..................................................................................................................... 83 PARÁMETROS DE VOIP ................................................................................................................. 84 Calidad de Servicio .............................................................................................................. 84 Codecs ................................................................................................................................. 84 Latencia ............................................................................................................................... 85 Jitter (Fluctuaciones de velocidad)...................................................................................... 85 RETOS AL IMPLEMENTAR VOIP ....................................................................................................... 86 RECOMENDACIONES ..................................................................................................................... 86

ASTERISK, EL FUTURO DE LA TELEFONÍA ................................................................. 87 ¿QUÉ ES ASTERISK? ..................................................................................................................... 87 ¿QUÉ NO ES ASTERISK? ............................................................................................................... 89 ¿CUÁL ES EL PAPEL DE DIGIUM? ..................................................................................................... 89 ¿CUÁNDO USAR ASTERISK? ........................................................................................................... 90 ¿POR QUÉ ASTERISK? ................................................................................................................... 90 VENTAJAS COMPETITIVAS .............................................................................................................. 92 DESVENTAJAS DE LAS CENTRALITAS ASTERISK .................................................................................... 92 HISTORIA DE ASTERISK .................................................................................................................. 93 ESTRUCTURA DE DIRECTORIOS DE ASTERISK: ................................................................................... 103 FUNCIONALIDAD DE ASTERISK ...................................................................................................... 103 Funciones básicas .............................................................................................................. 103 Funciones de llamada........................................................................................................ 103 Funciones avanzadas ......................................................................................................... 105 Modificación de funciones ................................................................................................ 106 Funcionalidad en servidores SIP........................................................................................ 106 ARQUITECTURA DE ASTERISK ....................................................................................................... 107 Esquema ............................................................................................................................ 107 Partes de Asterisk ............................................................................................................. 107 Arquitectura de Asterisk ................................................................................................... 108 Descripción de las APIs .................................................................................................. 108 CONCEPTO DE CANAL ................................................................................................................. 109 DIALPLAN DE ASTERISK ............................................................................................................... 110 vi

La Sintaxis del Dialplan ...................................................................................................... 110 Contextos ...................................................................................................................... 110 Extensiones ................................................................................................................... 112 Prioridades .................................................................................................................... 113 Aplicaciones................................................................................................................... 114 Uso de variables ................................................................................................................ 115 Tipos de variables ......................................................................................................... 115 Coincidencia de patrones .................................................................................................. 116 Sintaxis .......................................................................................................................... 116 Usando la variable de canal $ (EXTEN) .......................................................................... 117 Manipulación de expresiones y operadores ..................................................................... 118 Expresiones básicas ....................................................................................................... 118 Operadores.................................................................................................................... 118 Funciones del Dialplan ...................................................................................................... 119 Configuración para canales de VoIP: SIP e IAX2 ................................................................ 119 Buzones de voz (Voicemail)............................................................................................... 121 Creación de mailbox ...................................................................................................... 121 Añadir el voicemail al Dialplan ...................................................................................... 122 Acceso al voicemail ....................................................................................................... 122 Marcación por nombre de directorio............................................................................ 122 Audio en Asterisk .............................................................................................................. 123 Reproducción ................................................................................................................ 123 Música en Espera .......................................................................................................... 123 Aplicación Festival ......................................................................................................... 123 Codecs y carga de CPU .................................................................................................. 125 Grabación ...................................................................................................................... 127 Macros ............................................................................................................................... 128 Definición de macros..................................................................................................... 129 Llamadas a macros ........................................................................................................ 129 Utilización de argumentos en macros ......................................................................... 129 Uso de la base de datos de Asterisk (AstDB)..................................................................... 130 Almacenamiento de datos en AstDB............................................................................. 130 Recuperación de datos de AstDB .................................................................................. 130 Borrado de datos de AstDB ........................................................................................... 131 Transferencias de llamadas ............................................................................................... 131 CallParking ......................................................................................................................... 131 CallPickup .......................................................................................................................... 133 Manejo de Colas ................................................................................................................ 134 Registro de llamadas(CDR) ................................................................................................ 137 Sala de conferencias .......................................................................................................... 138 IVR (Interactive Voice Response) ...................................................................................... 139 Discado automático (Auto-dial out) .................................................................................. 142 Sistema de logs .................................................................................................................. 143 ENUM y Asterisk ................................................................................................................ 144 DUNDI ................................................................................................................................ 146 Aspectos avanzados de Asterisk: ...................................................................................... 150 ¿Qué es AGI? ................................................................................................................. 150 ¿Qué es AMI? ................................................................................................................ 151 ¿Qué es AJAM?.............................................................................................................. 152 vii

¿Qué es AEL2? ............................................................................................................... 153 ¿Qué es ARA? ................................................................................................................ 154 ADMINISTRACIÓN DE ASTERISK .................................................................................................... 155 Interfaces web para Asterisk: ............................................................................................ 155 Asterisk GUI: .................................................................................................................. 155 FreePBX: ........................................................................................................................ 156 Línea de comandos de Asterisk: CLI .................................................................................. 161 VERSIONES ENTERPRISE DE ASTERISK: ........................................................................................... 164 Asterisk Appliance ............................................................................................................. 164 Asterisk Business Edition ™ ............................................................................................... 165 DISTRIBUCIONES LINUX CON ASTERISK:.......................................................................................... 168 AsteriskNOW ..................................................................................................................... 169 TrixBox ............................................................................................................................... 171 Elastix ................................................................................................................................ 176 CASOS DE USO DE UNA CENTRALITA ASTERISK: ............................................................................... 180 Centralita nueva con conexiones y extensiones de varios tipos. ...................................... 181 Pasarela para dotar a una centralita tradicional de servicios nuevos............................... 181 Pasarela para dotar a una centralita tradicional de nuevas extensiones. ........................ 182 Varias Oficinas con un Asterisk Centralizado. ................................................................... 182 Varias Oficinas con Sistemas Asterisk interconectados. ................................................... 183 AMPLIACIÓN DEL SISTEMA DE TELEFONÍA DE UNA EMPRESA............................................................... 184 SOLUCIONES DE ASTERISK PARA SISTEMAS DE TELEFONÍA ENTRE SEDES REMOTAS.................................. 185 Sistema Centralizado ......................................................................................................... 185 Sistema Distribuido ........................................................................................................... 186 LA REVOLUCIÓN ASTERISK ........................................................................................................... 186 EJEMPLOS DE USO DE ASTERISK: ................................................................................................... 187 Ejemplo 1: Centros médicos – Llamada recordatoria ....................................................... 187 Ejemplo 2: Centros de telemarketing – Integración con sistemas CRM ........................... 188 Ejemplo 3: Agencias de viajes (Self service) ...................................................................... 188 LA COMPLEJIDAD ASTERISK .......................................................................................................... 188 ¿Y EL FUTURO? ......................................................................................................................... 189 CONCLUSIONES ......................................................................................................................... 189 PRUEBAS REALIZADAS ............................................................................................. 190 INICIACIÓN EN LINUX .................................................................................................................. 190 KUBUNTU & ASTERISK ................................................................................................................ 192 ELECCIÓN DEL SERVIDOR ADECUADO PARA ASTERISK ........................................................................ 193 ¿Qué hay que tener en cuenta en la elección del servidor Asterisk? ............................... 193 ¿Cuál es la mejor distribución para instalar Asterisk? ...................................................... 193 PUESTA A PUNTO DEL SERVIDOR ANTES DE LA INSTALACIÓN DE ASTERISK: ............................................ 194 Servidor HTTP Apache ....................................................................................................... 194 Servidor DHCP (DHCPD) .................................................................................................... 194 Servidor TFTP (TFTPD) ...................................................................................................... 197 Servidor MySQL (MySQLD) ................................................................................................ 198 phpMyAdmin..................................................................................................................... 198 Servidor SNMP (SNMPD) ................................................................................................... 199 Acceso al Servidor: PUTTY ................................................................................................. 201 Acceso al Servidor: WinSCP .............................................................................................. 202 INSTALACIÓN DE ASTERISK:.......................................................................................................... 203 viii

Asterisk 1.4.xx (de 1.4.0 a 1.4.21) ..................................................................................... 203 Asterisk 1.4xx (de 1.4.22 a 1.4.27) y 1.6.x ......................................................................... 206 ELECCIÓN DE LA VERSION ASTERISK: .............................................................................................. 208 Diferencia entre los Asterisk 1.4 (hasta 1.4.21) y los Asterisk 1.4.22 (y superiores) y 1.6 en telefonía analógica: De Zaptel a DAHDI ............................................................................ 208 Configuración DAHDI......................................................................................................... 209 Pruebas de llamada al canal DAHDI en Asterisk 1.4.26.1 ................................................. 213 Pruebas básicas realizadas en Asterisk 1.4.21 .................................................................. 214 Pruebas SoftPhones ...................................................................................................... 214 Pruebas teléfonos IP (SipuraSPA) .................................................................................. 218 Pruebas de funcionamiento de buzones de voz ........................................................... 220 Pruebas utilización de las aplicaciones Goto() y GotoIf() y de variables de canal ........ 222 Pruebas de funcionamiento colas y registro de miembros........................................... 225 OTRAS PRUEBAS: ....................................................................................................................... 229 Pruebas de uso de conferencias en Asterisk 1.4.26.2: ...................................................... 229 Pruebas Proveedor VoIP: Gizmo5 ..................................................................................... 234 Pruebas Trunk IAX entre dos servidores Asterisk ............................................................. 236 ¿Qué es un Trunk?......................................................................................................... 236 Trunk IAX Local entre dos servidores Asterisk .............................................................. 236 Trunk IAX entre dos servidores Asterisk ....................................................................... 239 Pruebas extensión remota ............................................................................................ 239 Prueba con Adaptador Telefónico Analógico SPA 3000.................................................... 241 CENTRALITA ASTERISK PARA YET INFORMÁTICA Y PRUEBAS REALIZADAS....................... 245 DESCRIPCIÓN DE LA CENTRALITA NUEVA: ASTERISK .......................................................................... 245 Esquema Conceptual del Demo realizado antes de la implantación ................................ 246 Explicación del Plan de llamadas de la Centralita (Dialplan) ............................................. 247 Llamadas entrantes ....................................................................................................... 247 Accesos Directos a usuarios de la Empresa................................................................... 252 Gestión de Buzones de Voz ........................................................................................... 253 Gestión de las Colas de la aplicación............................................................................. 253 Funcionamiento de la Funcionalidad CallBack .............................................................. 255 Uso de Conferencias en la aplicación ............................................................................ 256 Última llamada recibida ................................................................................................ 256 Última llamada realizada ............................................................................................... 257 Funcionamiento de la Funcionalidad DISA.................................................................... 258 Funcionamiento del desvío de las llamadas de usuarios internos a otro teléfono ...... 259 Pruebas generales ............................................................................................................. 260 Prueba 1) Llama a la centralita en un horario no laborable un usuario VIP. ................ 260 Prueba 2) Llama a la centralita en un horario no laborable un usuario no VIP. ........... 262 Prueba 3) Llama a la centralita en un horario laboral un usuario VIP. ........................ 263 Prueba 4) Llama a la centralita en un horario laboral un usuario no VIP. ................... 266 Prueba 5) Comportamiento en el menú ....................................................................... 268 Configuración de ficheros más utilizados.......................................................................... 269 Tabla de descripción de ficheros de configuración ....................................................... 269 Fichero de configuración: EXTENSIONS.CONF, SIP.CONF, IAX.CONF ............................ 270 Fichero de configuración: FEATURES.CONF .................................................................. 270 Fichero de configuración: MANAGER.CONF ................................................................. 271 Fichero de configuración: MEETME.CONF .................................................................... 271 ix

Fichero de configuración: QUEUES.CONF ..................................................................... 271 Fichero de configuración: VOICEMAIL.CONF ................................................................ 272 Bases de datos empleadas ................................................................................................ 273 Tabla de descripción de las bases de datos utilizadas .................................................. 273 Conocimiento de las tablas de cada base de datos mostrando parte de su contenido 274 Explicación teórica y práctica de funcionalidades extra: .................................................. 280 Agenda de Contactos: YetBook ..................................................................................... 280 Integración con Google Calendar .................................................................................. 297 Chan_Sebi ...................................................................................................................... 303 Flash Operator Panel 2 (FOP 2) ..................................................................................... 309 Asternic Call Center Stats .............................................................................................. 331 Asternic CDR Reports .................................................................................................... 340 Verbio ............................................................................................................................ 348 Skype ............................................................................................................................. 372 Skype para Asterisk (SfA)............................................................................................... 373 Nagios ............................................................................................................................ 385 Actualización de firmware del Teléfono Cisco 7941 de SCCP a SIP................................... 393 Actualización de firmware del Teléfono Cisco 7905 de SCCP a SIP................................... 398 DESCRIPCIÓN BREVE DE LA CENTRALITA ACTUAL: CISCO Y MEJORAS REALIZADAS EN LA NUEVA. ................ 401 Esquema Conceptual de la centralita actual: Cisco........................................................... 401 Mejoras de la nueva centralita Asterisk ............................................................................ 402 Agenda de clientes ........................................................................................................ 402 Usuarios o extensiones remotas ................................................................................... 402 Gestión de horarios y festivos con calendarios............................................................. 402 Conferencias .................................................................................................................. 402 Sistema de Colas............................................................................................................ 402 Grabaciones por defecto ............................................................................................... 402 Reporting de llamadas y estadísticas de Colas.............................................................. 402 Implantación en la empresa .............................................................................................. 403 Esquema Conceptual de la centralita para Yet Informática S.L. ................................... 403 Tipo de Implantación y Análisis de Riesgos ................................................................... 404 Hardware y Software necesario para la implantación de la centralita ......................... 404 LÍNEAS FUTURAS Y CONCLUSIÓN .................................................................................................. 405

ANEXOS ............................................................................................................... 407 ANEXO A: SECURITY.TXT ........................................................................................................... 407 ANEXO B: APLICACIONES DE ASTERISK ......................................................................................... 409 ANEXO C: FUNCIONES DE ASTERISK ............................................................................................. 423 ANEXO D: FICHEROS DE CONFIGURACIÓN DE ASTERISK .................................................................. 428 ANEXO E: INSTALACIÓN DE CENTOS 5 ......................................................................................... 459 ANEXO E: GUÍA DE GOOGLE CALENDAR ....................................................................................... 466 ANEXO F: MANUAL DE USUARIO DE FOP 2 .................................................................................. 472 ANEXO G: CÓDIGO DE LAS PRUEBAS DE ENVIO DE SMS .................................................................. 479 sms_send.php ................................................................................................................... 479 enviaSMS.sh ...................................................................................................................... 481 EnviaSMS.java ................................................................................................................... 481 ANEXO H: DIALPLAN DE LA APLICACIÓN (EXTENSIONS.CONF, SIP.CONF, IAX.CONF) .............................. 482 extensions.conf ................................................................................................................. 482 sip.conf .............................................................................................................................. 497 x

iax.conf .............................................................................................................................. 501 GLOSARIO.............................................................................................................. 502 BIBLIOGRAFÍA ........................................................................................................ 502

xi

Índice de Figuras

Planificación del Proyecto • • • • • • • • • • •

PlanFig1 PlanFig2 PlanFig3 PlanFig4 PlanFig5 PlanFig6 PlanFig7 PlanFig8 PlanFig9 PlanFig10 PlanFig11 xii

• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • •

PlanFig12 PlanFig13 PlanFig14 PlanFig15 PlanFig16 PlanFig17 PlanFig18 PlanFig19 PlanFig20 PlanFig21 PlanFig22 PlanFig23 PlanFig24 PlanFig25 PlanFig26 PlanFig27 PlanFig28 PlanFig29 PlanFig30 PlanFig31 PlanFig32 PlanFig33 PlanFig34 PlanFig35 PlanFig36 PlanFig37 PlanFig38 PlanFig39 PlanFig40 PlanFig41 PlanFig42 PlanFig43 PlanFig44 PlanFig45 PlanFig46 PlanFig47 PlanFig48 PlanFig49 PlanFig50 PlanFig51 PlanFig52 PlanFig53 PlanFig54 xiii

• • • • • • •

PlanFig55 PlanFig56 PlanFig57 PlanFig58 PlanFig59 PlanFig60 PlanFig61

Capitulo 1 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • •

Cap1Fig1 Cap1Fig2 Cap1Fig3 Cap1Fig4 Cap1Fig5 Cap1Fig6 Cap1Fig7 Cap1Fig8 Cap1Fig9 Cap1Fig10 Cap1Fig11 Cap1Fig12 Cap1Fig13 Cap1Fig14 Cap1Fig15 Cap1Fig16 Cap1Fig17 Cap1Fig18 Cap1Fig19 Cap1Fig20 Cap1Fig21 Cap1Fig22 Cap1Fig23 Cap1Fig24 Cap1Fig25 Cap1Fig26 Cap1Fig27 Cap1Fig28 Cap1Fig29 Cap1Fig30 Cap1Fig31 Cap1Fig32 Cap1Fig33 xiv

• • • • • • • • • • •

Cap1Fig34 Cap1Fig35 Cap1Fig36 Cap1Fig37 Cap1Fig38 Cap1Fig39 Cap1Fig40 Cap1Fig41 Cap1Fig42 Cap1Fig43 Cap1Fig44

Capitulo 2 • • • • • • • • • • • • • • • • • • • • • • • • • • • • •

Cap2Fig1 Cap2Fig2 Cap2Fig3 Cap2Fig4 Cap2Fig5 Cap2Fig6 Cap2Fig7 Cap2Fig8 Cap2Fig9 Cap2Fig10 Cap2Fig11 Cap2Fig12 Cap2Fig13 Cap2Fig14 Cap2Fig15 Cap2Fig16 Cap2Fig17 Cap2Fig18 Cap2Fig19 Cap2Fig20 Cap2Fig21 Cap2Fig22 Cap2Fig23 Cap2Fig24 Cap2Fig25 Cap2Fig26 Cap2Fig27 Cap2Fig28 Cap2Fig29 xv

• • • • • •

Cap2Fig30 Cap2Fig31 Cap2Fig32 Cap2Fig33 Cap2Fig34 Cap2Fig35

Capitulo 3 • • • • • • • • • • • • • • • • • • • • • • • • • • • • •

Cap3Fig1 Cap3Fig2 Cap3Fig3 Cap3Fig4 Cap3Fig5 Cap3Fig6 Cap3Fig7 Cap3Fig8 Cap3Fig9 Cap3Fig10 Cap3Fig11 Cap3Fig12 Cap3Fig13 Cap3Fig14 Cap3Fig15 Cap3Fig16 Cap3Fig17 Cap3Fig18 Cap3Fig19 Cap3Fig20 Cap3Fig21 Cap3Fig22 Cap3Fig23 Cap3Fig24 Cap3Fig25 Cap3Fig26 Cap3Fig27 Cap3Fig28 Cap3Fig29

Capitulo 4

xvi

• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • •

Cap4Fig1 Cap4Fig2 Cap4Fig3 Cap4Fig4 Cap4Fig5 Cap4Fig6 Cap4Fig7 Cap4Fig8 Cap4Fig9 Cap4Fig10 Cap4Fig11 Cap4Fig12 Cap4Fig13 Cap4Fig14 Cap4Fig15 Cap4Fig16 Cap4Fig17 Cap4Fig18 Cap4Fig19 Cap4Fig20 Cap4Fig21 Cap4Fig22 Cap4Fig23 Cap4Fig24 Cap4Fig25 Cap4Fig26 Cap4Fig27 Cap4Fig28 Cap4Fig29 Cap4Fig30 Cap4Fig31 Cap4Fig32 Cap4Fig33 Cap4Fig34 Cap4Fig35 Cap4Fig36 Cap4Fig37 Cap4Fig38 Cap4Fig39 Cap4Fig40 Cap4Fig41 Cap4Fig42 Cap4Fig43 xvii

• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • •

Cap4Fig44 Cap4Fig45 Cap4Fig46 Cap4Fig47 Cap4Fig48 Cap4Fig49 Cap4Fig50 Cap4Fig51 Cap4Fig52 Cap4Fig53 Cap4Fig54 Cap4Fig55 Cap4Fig56 Cap4Fig57 Cap4Fig58 Cap4Fig59 Cap4Fig60 Cap4Fig61 Cap4Fig62 Cap4Fig63 Cap4Fig64 Cap4Fig65 Cap4Fig66 Cap4Fig67 Cap4Fig68 Cap4Fig69 Cap4Fig70 Cap4Fig71 Cap4Fig72 Cap4Fig73 Cap4Fig74 Cap4Fig75 Cap4Fig76 Cap4Fig77 Cap4Fig78 Cap4Fig79 Cap4Fig80 Cap4Fig81 Cap4Fig82 Cap4Fig83 Cap4Fig84 Cap4Fig85 Cap4Fig86 xviii

• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • •

Cap4Fig87 Cap4Fig88 Cap4Fig89 Cap4Fig90 Cap4Fig91 Cap4Fig92 Cap4Fig93 Cap4Fig94 Cap4Fig95 Cap4Fig96 Cap4Fig97 Cap4Fig98 Cap4Fig99 Cap4Fig100 Cap4Fig101 Cap4Fig102 Cap4Fig103 Cap4Fig104 Cap4Fig105 Cap4Fig106 Cap4Fig107 Cap4Fig108 Cap4Fig109 Cap4Fig110 Cap4Fig111 Cap4Fig112 Cap4Fig113 Cap4Fig114 Cap4Fig115 Cap4Fig116 Cap4Fig117 Cap4Fig118 Cap4Fig119 Cap4Fig120 Cap4Fig121 Cap4Fig122 Cap4Fig123 Cap4Fig124 Cap4Fig125 Cap4Fig126 Cap4Fig127 Cap4Fig128 Cap4Fig129 xix

• • • • • • • • •

Cap4Fig130 Cap4Fig131 Cap4Fig132 Cap4Fig133 Cap4Fig134 Cap4Fig135 Cap4Fig136 Cap4Fig137 Cap4Fig138

Anexos • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • •

AnexoFig1 AnexoFig2 AnexoFig3 AnexoFig4 AnexoFig5 AnexoFig6 AnexoFig7 AnexoFig8 AnexoFig9 AnexoFig10 AnexoFig11 AnexoFig12 AnexoFig13 AnexoFig14 AnexoFig15 AnexoFig16 AnexoFig17 AnexoFig18 AnexoFig19 AnexoFig20 AnexoFig21 AnexoFig22 AnexoFig23 AnexoFig24 AnexoFig25 AnexoFig26 AnexoFig27 AnexoFig28 AnexoFig29 AnexoFig30 AnexoFig31 xx

• • • • • • • • •

AnexoFig32 AnexoFig33 AnexoFig34 AnexoFig35 AnexoFig36 AnexoFig37 AnexoFig38 AnexoFig39 AnexoFig40

xxi

Índice de Tablas

Planificación del Proyecto • • • • • • • •

PlanTabla1 PlanTabla2 PlanTabla3 PlanTabla4 PlanTabla5 PlanTabla6 PlanTabla7 PlanTabla8

Capitulo 1 Capitulo 2 xxii

• • •

Cap2Tabla1 Cap2Tabla2 Cap2Tabla3

Capitulo 3 Capitulo 4 • • • • • • • • • • • • • • • • • • • • • •

Cap4Tabla1 Cap4Tabla2 Cap4Tabla3 Cap4Tabla4 Cap4Tabla5 Cap4Tabla6 Cap4Tabla7 Cap4Tabla8 Cap4Tabla9 Cap4Tabla10 Cap4Tabla11 Cap4Tabla12 Cap4Tabla13 Cap4Tabla14 Cap4Tabla15 Cap4Tabla16 Cap4Tabla17 Cap4Tabla18 Cap4Tabla19 Cap4Tabla20 Cap4Tabla21 Cap4Tabla22

Anexos • •

AnexoTabla1 AnexoTabla2

xxiii

Antecedentes

Empresa en la que se sitúa el proyecto Yet Informática S.L. es lider en sistemas de información de alta tecnología para los sectores de calzado, textil y deportes de España. Su experiencia en la informatización de más de 2000 tiendas les avala, así como la permanencia en este mercado concreto en los últimos 18 años. Yet Informática, nació en 1984, tras un análisis del mercado informático. En aquellos tiempos este se dividía fundamentalmente en dos áreas: la programación a medida y los programas estándares de uso generalista, existiendo una tendencia incipiente hacia los programas verticales. Para conocer más sobre Yet: www.yet.es.

1

Cómo surge la necesidad del proyecto a realizar La actual centralita telefónica se ha quedado corta en funcionalidades y la mejora de esta supone la compra de una serie de licencias y cierto Hw, en caso de un aumento de personal en la empresa sería necesario abonar otras cantidades. Como una posible solución surge el montaje de una centralita no propietaria como es Asterisk evitando por una parte la compra de licencias , pudiendo aprovechar los teléfonos Cisco haciendo una conversión del protocolo de estos, SCCP, al protocolo SIP. Por otra parte la centralita actual tiene algunas restricciones en cuanto a funcionalidades que serían interesantes para la empresa y que serán solucionadas con esta nueva central.

2

Planificación del Proyecto

Objetivos del Proyecto El objetivo principal es adquirir los conocimientos necesarios sobre VoIP, telefonía, redes, Linux y sobre todo Asterisk para el montaje adecuado de estas centralitas pasando poco a poco de una configuración básica a una configuración casi a medida para la elaboración de la centralita de la empresa. Una vez obtenidos estos conocimientos la centralita nueva debe mejorar la actual y ofrecer otras funcionalidades extras que la hagan aun más completa. También es objetivo que esta memoria sea lo más intuitiva posible de forma que si no se conoce nada sobre Asterisk se pueda llegar a entender gran parte tanto de la configuración del Dialplan como del funcionamiento de estas centralitas y de este mundo en general. 3

Viabilidad del Proyecto Planificación Inicial Temporal

Resumiendo esta tabla, cuando se realizó la planificación inicial, la idea era realizar la formación necesaria en los meses de Julio y Agosto, sin contar las semanas de vacaciones (del 4 al 16 de Agosto) y durante los dos siguientes meses montar la centralita para la empresa Yet Informática. Planificación Real Temporal

4

5

Como se puede ver en la imágenes anteriores la planificación real comienza con una tarea repetitiva en la que cada semana se hará un “planing” del trabajo a realizar durante esta. A continuación se pueden definir tres partes en la planificación: el estudio de las tecnologías y pruebas iniciales, el montaje de la centralita para Yet Informática S.L. y la elaboración de la documentación. Desvio Temporal El desvío temporal es de 2 meses y 20 días, el estudio de las tecnologías fue uno de los culpables en este contratiempo, también la integración de la centralita con Verbio y Nagios supuso un tiempo no planificado y por último la elaboración de la agenda de contactos Yetbook, que surgió al final del proyecto. Planificación real del proyecto y herramientas a utilizar en su elaboración Estructura de Descomposición del Trabajo

6

7

8

Fases, Tareas y Entregables A continuación se indican y describen los diferentes documentos generados y utilizados para el proyecto que constituyen los entregables. 

Entrega de la primera parte de la memoria : Introducción a la VoIP: Documento de introducción a la VoIP a través de la explicación y definición de conceptos fundamentales para su comprensión. Es la tarea nº 11.



Entrega de la segunda y tercera parte de la memoria : Asterisk, el futuro de la telefonía y Prácticas: Documento que permite un adentramiento en el mundo de Asterisk en el que se describen conceptos general y específicos ,así como, su instalación y configuración y pruebas realizadas. Es la tarea nº 28.



Entrega documento final del Proyecto: Entrega de toda la documentación elaborada junto con el la presentación. Es la tarea nº 46.

Tras ver la Planificación Real Temporal se generará una ficha para cada tarea identificada, donde se anotará su número, nombre, una breve descripción y el esfuerzo estimado:

Especificación de la tarea

Número: 1

Nombre: Análisis del trabajo a realizar

Descripción: Tarea repetitiva que se lleva a cabo los viernes de cada semana con el objetivo de planificar la siguiente y hacer balance de lo avanzado en esta.

Duración: 26 h

9

Especificación de la tarea

Número: 2

Nombre: Iniciación en Linux

Descripción: Periodo de estudio e iniciación en el sistema operativo Linux, en concreto primero en Kubuntu, despues en CentOs con KDE y finalmente CentOs server.

Duración: 240 h

Especificación de la tarea

Número: 3

Nombre: Estudio y aprendizaje sobre telefonía y VoIP

Descripción: Estudio y comprensión de conceptos relacionados con la telefonía y más concretamente con la VoIP explicados en el Capitulo 1 de la Memoria.

Duración: 240 h

Especificación de la tarea

Número: 4

Nombre: Estudio y aprendizaje sobre el mundo Asterisk

Descripción: Adentramiento en el mundo Asterisk, estudio de conceptos y configuraciones básicas y avanzadas. Recopilado en el Capítulo 2 de la Memoria.

Duración: 240 h

10

Especificación de la tarea

Número: 5

Nombre: Elaboración de la memoria I: Introducción a la VoIP

Descripción: Documentación del Capitulo 1 de la Memoria.

Duración: 160 h

Especificación de la tarea

Número: 6

Nombre: Pruebas de montaje de centralitas Asterisk

Descripción: Montaje de las primeras centralitas Asterisk en Kubuntu y CentOs 5.4. con KDE.

Duración: 80 h

Especificación de la tarea

Número: 7

Nombre: Pruebas con SoftPhones y Telefonos IP

Descripción: Primeras configuraciones de Softphones X-Lite y Zoiper y telefonos IP Sipura SPA 841.

Duración: 20 h

11

Especificación de la tarea

Número: 8

Nombre: Montaje de centralita de pruebas I

Descripción: Documentación del capítulo 2 de la memoria

Duración: 160 h

Especificación de la tarea

Número: 9

Nombre: Pruebas de funcionamiento de Elastix

Descripción: Instalación de Elastix y pruebas con Softphones y de detercción de Hw.

Duración: 10 h

Especificación de la tarea

Número: 10.1

Nombre: Pruebas de configuración de funcionalidades

Descripción: Pruebas exhaustivas de los ficheros de configuración queues.conf, features.conf ,meetme.conf, voicemail.conf, manager.conf, sip.conf, iax.conf y extensions.conf.

Duración: 160 h

12

Especificación de la tarea

Número: 10.2

Nombre: Pruebas de integración con FOP 2

Descripción: Instalación, configuración y pruebas de funcionamiento de FOP 2.

Duración: 30 h

Especificación de la tarea

Número: 10.3

Nombre: Pruebas de integración con Call Center Stats

Descripción: Instalación, configuración y pruebas de funcionamiento de Asternic Call Center Stats.

Duración: 10 h

Especificación de la tarea

Número: 10.4

Nombre: Pruebas de integración con CDR Reports

Descripción: Instalación, configuración , pruebas de funcionamiento y elaboración de documentación de Asternic CDR Reports.

Duración: 10 h

13

Especificación de la tarea

Número: 12

Nombre: Montaje de centralita de pruebas II con RDSI BRI

Descripción: Montaje de centralita Asterisk en CentOs 5.4. con tarjeta de telefonía RDSI BRI de 4 puertos con 2 de ellos en uso : 1 módulo FXO y 1 módulo FXS.

Duración: 15 h

Especificación de la tarea

Número: 13

Nombre: Pruebas RDSI BRI

Descripción: Instalación y configuración de DAHDI y pruebas de detección de Hardware y de funcionamiento de la tarjeta.

Duración: 5 h

Especificación de la tarea

Número: 14

Nombre: Programación y Pruebas Google Calendar I: Interactuación con los calendarios

Descripción: Programación y Pruebas de programa en Python de interactuación con Google Calendar para la comprobación de la existencia de eventos en el instante de tiempo que se ejecuta.

Duración: 30 h

14

Especificación de la tarea

Número: 15

Nombre: Programación y Pruebas Google Calendar II: Envio de SMS

Descripción: Programación y modificación de programa en Java de creación de eventos en un calendario de Google Calendar y posterior envío de aviso de SMS.

Duración: 30 h

Especificación de la tarea

Número: 16

Nombre: Elaboración de la memoria III: Prácticas realizadas

Descripción: Documentación del Capitulo 3 de la Memoria.

Duración: 60 h

Especificación de la tarea

Número: 17

Nombre: Elaboración de la memoria IV: Viabilidad del proyecto

Descripción: Documentación y recopilación de planificaciones para la realización de la viabilidad del proyecto.

Duración: 120 h

15

Especificación de la tarea

Número: 18

Nombre: Montaje centralita Yet Informática

Descripción: Elaboración del Esquema Conceptual de la centralita. Diseño de la centralita.

Duración: 20 h

Especificación de la tarea

Número: 19

Nombre: Análisis de requerimientos y requisitos

Descripción: Análisis de “pros” y “contras” ,así como, mejoras a realizar y requerimientos.

Duración: 15 h

Especificación de la tarea

Número: 20

Nombre: Diseño del Dialplan

Descripción: Elaboración minuciosa del Plan de llamadas de la centralita.

Duración: 30 h

16

Especificación de la tarea

Número: 21

Nombre: Puesta a punto del servidor

Descripción: Instalación, configuracíón y pruebas de servicios necesarios antes de la instalación de Asterisk.

Duración: 16 h

Especificación de la tarea

Número: 22

Nombre: Instalación de Asterisk

Descripción: Elección, descarga e instalación correcta de la versión de Asterisk elegida: Asterisk 1.4.26.2.

Duración: 5 h

Especificación de la tarea

Número: 23

Nombre: Programación de ficheros de configuración y Dialplan

Descripción: Configuración de los ficheros de Asterisk para conseguir el funcionamiento deseado y por tanto óptimo de la centralita.

Duración: 30 h

17

Especificación de la tarea

Número: 24

Nombre: Integración de ficheros de configuración

Descripción: Implantación de los ficheros de configuración solucionando los posibles errores.

Duración: 3 h

Especificación de la tarea

Número: 25

Nombre: Pruebas I

Descripción: Pruebas post-implantación para alcanzar un funcionamiento correcto.

Duración: 5 h

Especificación de la tarea

Número: 26

Nombre: Solución de errores I

Descripción: Poner solución a los posibles errores de configuración cometidos.

Duración: 16 h

18

Especificación de la tarea

Número: 27

Nombre: Elaboracion de la memoria V: Aplicación

Descripción: Documentación del Capitulo 4 de la Memoria.

Duración: 60 h

Especificación de la tarea

Número: 29

Nombre: Tratamiento de funcionalidades extra

Descripción: Análisis de funcionalidades avanzadas a añadir.

Duración: 30 h

Especificación de la tarea

Número: 30

Nombre: Programación Callback y DISA

Descripción: Configuración de Callback y DISA.

Duración: 16 h

19

Especificación de la tarea

Número: 31

Nombre: Pruebas II

Descripción: Realización de Pruebas sobre el funcionamiento de Callback y DISA.

Duración: 30 h

Especificación de la tarea

Número: 32.1

Nombre: Análisis de requisitos

Descripción: Análisis sobre los resultados que queremos conseguir y cómo conseguirlos.

Duración: 10 h

Especificación de la tarea

Número: 32.2

Nombre: Diseño interfaz gráfica

Descripción: Programación del css y javascript de la agenda.

Duración: 20 h

20

Especificación de la tarea

Número: 32.3

Nombre: Programación Web

Descripción: Programación HTML ,Java y conexión con la base de datos MySQL.

Duración: 150 h

Especificación de la tarea

Número: 32.4

Nombre: Pruebas de funcionamiento

Descripción: Tests de funcionamiento de la agenda.

Duración: 20 h

Especificación de la tarea

Número: 33

Nombre: Elaboración de la memoria VI: Pruebas de la Aplicación

Descripción: Documentación del Capitulo 5 de la Memoria.

Duración: 35 h

21

Especificación de la tarea

Número: 34

Nombre: Instalación y Estudio de Verbio

Descripción: Descarga e instalación de paquetes Verbio y Estudio de su funcionamiento.

Duración: 30 h

Especificación de la tarea

Número: 35

Nombre: Integración Verbio-Asterisk

Descripción: Análisis y programación de Verbio para su uso en la centralita Asterisk.

Duración: 20 h

Especificación de la tarea

Número: 36

Nombre: Pruebas III

Descripción: Pruebas de ejemplos y programación realizada con Verbio.

Duración: 15 h

22

Especificación de la tarea

Número: 37

Nombre: Instalación y Estudio de Nagios y servicio SNMP

Descripción: Instalación del servicio SNMP y Nagios ,así como, compresión del funcionamiento de ambos.

Duración: 25 h

Especificación de la tarea

Número: 38

Nombre: Integración Asterisk-Nagios

Descripción: Instalación del módulo de Nagios para enlazar con Asterisk y de los plugins necesarios.

Duración: 20 h

Especificación de la tarea

Número: 39

Nombre: Pruebas IV

Descripción: Pruebas con Nagios sobre la monitorización de Asterisk.

Duración: 15 h

23

Especificación de la tarea

Número: 40

Nombre: Pruebas ATA (SPA 3000) y Chan_Sebi

Descripción: Pruebas con Adaptador Analógico de telefonía y con modem Huawei (chan_sebi).

Duración: 15 h

Especificación de la tarea

Número: 41

Nombre: Pruebas TRUNK IAX 2 y usuario remoto

Descripción: Pruebas de conexión de 2 servidores Asterisk y de extensión remota.

Duración: 20 h

Especificación de la tarea

Número: 42

Nombre: Integración y pruebas con Skype

Descripción: Pruebas de enlace entre Asterisk y Skype a través del chan_skype.

Duración: 15 h

24

Especificación de la tarea

Número: 43

Nombre: Conversión telefonos IP (de SCCP a SIP), configuración y pruebas.

Descripción: Conversión de protocolo de los teléfonos CISCO, para su aprovechamiento en la nueva central.

Duración: 40 h

Especificación de la tarea

Número: 44

Nombre: Elaboración de la memoria VII: Finalización

Descripción: Finalización de la memoria con la documentación de la bibliografía, anexos, glosario, conclusión y líneas futuras.

Duración: 20 h

Especificación de la tarea

Número: 45

Nombre: Elaboración de la Presentación

Descripción: Tratamiento y elaboración de la presentación del proyecto.

Duración: 30 h

25

Recursos Humanos y Materiales Amortizables Para la realización del proyecto de fin de carrera el único recurso humano será el autor de dicho proyecto, es decir, yo, David Escañuela Alonso (David). Como recursos materiales amortizables se dispone:

Recurso

Descripción

Precio

Unidades

300,00 €

1

600,00 €

1

500,00 €

2

Ordenadores

Las características técnicas del PC son las HP PROLIANT ML110 G5 (Servidor)

siguientes: Intel® Xeon® 3065 Dual Core a 2,33 GHz, 1GB de memoria RAM, 250GB de disco duro.

HP Compaq (Ordenador)

Amilo Notebook Pi3540 (Portatil1) (Portatil2)

Las características técnicas del PC son las siguientes: Intel Pentium 4CPU 280GHz, 504MB de RAM.

Las características técnicas del PC son las siguientes: Intel Core 2 Duo P8600,320GB de disco y 4GB de RAM

26

Teléfonos

Sipura SPA 841 (Sipura1) (Sipura2) (Sipura3)

Teléfono IP (SIP)

149,97 €

3

ALLNET ALL7960 (ALLNET)

Teléfono IP (SIP e IAX)

61,89 €

1

Inalámbrico Alcatel Versatis 620 Duo (Telefono1) (Telefono2)

Telefono Analógico

49,00 €

2

Cisco 7941

Teléfono IP (SCCP)

163,85 €

1

TDM400P (Tarjeta)

Tarjeta de Telefonía

135,00 €

1

SPA 3000 (ATA)

Adaptador de Telefonía Analógico(1FXS y 1FXO)

44,53 €

1

Modem Huawei K3520

HSDPA DL 7.2 MBPS, incorporación de Micro SD.

54,90 €

1

Switch (Switch1) (Switch2)

Procure Switch 140008G J9077A (22 puertos 10/100/1000 y 2 puertos de doble personalidad)

54,69 €

2

Otros

27

Router (Router1)(Router2)

Router ADSL

150,00 €

2

Precio

Unidades

300,00€

1

00,00 €

1

Por otra parte el Software utilizado será el siguiente:

Recurso

Descripción

Microsoft Office Profesional 2007

Paquete con Visio y Proyect 2007

Commpilador de Netbeans 6.7.1

Lenguajes de Programación

Putty

Cliente SSH para acceso al Servidor

00,00€

1

WinSCP

Cliente SFTP para acceso al Servidor

00,00€

1

MySQL 5.0.27

Gestor de Bases de Datos

00,00 €

1

Skype

Softphone

00,00 €

2

Licencia chan_skype

Canal de conexion con Asterisk

45,92 €

1

Firefox 3.5

Navegador Web

00,00 €

1

Zoiper

Softphone

00,00 €

2

28

Agenda del proyecto Agenda de recursos:

Recurso

Trabajo (horas)

Costo (€)

2.522

983,58

Análisis del trabajo a realizar

26

10,14

Iniciación en Linux

240

93,60

Estudio y aprendizaje sobre telefonía y VoIP

240

94,60

Estudio y aprendizaje sobre el mundo Asterisk

240

93,60

Elaboración de la memoria I: Introducción a la VoIP

160

62,40

Pruebas de montaje de centralitas Asterisk

80

31,20

Pruebas con SoftPhones y Telefonos IP

20

7,80

Elaboración de la memoria II: Asterisk, el futuro de la telefonía

160

62,40

Pruebas de funcionamiento de Elastix

5

1,95

Pruebas de configuración de funcionalidades

30

11,70

Tareas asociadas

David

29

Pruebas de integración con FOP

15

5,85

Pruebas de integración con Call Center Stats

10

3,9

Pruebas de integración con CDR Reports

10

3,9

Montaje de centralita de pruebas II con TDM400P

15

5,85

Pruebas TDM400P

5

1,95

Programación y Pruebas Google Calendar I: Interactuación con los calendarios

30

11,70

Programación y Pruebas Google Calendar II: Envio de SMS

30

11,70

Elaboración de la memoria III: Prácticas realizadas

60

23,40

Elaboración de la memoria IV: Viabilidad del proyecto

120

46,80

Montaje centralita Yet Informática

20

7,80

Análisis de requerimientos y requisitos

15

5,85

Diseño del Dialplan

30

11,70

Puesta a punto del servidor

16

6,24

30

Instalación de Asterisk

5

1,95

Programación de ficheros de configuración y Dialplan

30

11,70

Integración de ficheros de configuración

3

Pruebas I

5

1,95

Solución de errores I

16

6,24

Elaboracion de la memoria V: Aplicacíon

60

23,40

Tratamiento de funcionalidades extra

30

11,70

Programación Callback y DISA

16

6,24

Pruebas II

30

11,70

Análisis de requisitos (Agenda)

10

3,90

Diseño interfaz gráfica (Agenda)

20

7,80

Programación Web (Agenda)

150

58,50

Pruebas de funcionamiento (Agenda)

20

7,80

Elaboración de la memoria VI: Pruebas de la Aplicación

35

13,65

1,17

31

Instalación y Estudio de Verbio

30

11,70

Integración Verbio-Asterisk

20

7,80

Pruebas III

15

5,85

Instalación y Estudio de Nagios y servicio SNMP

25

9,75

Integración Asterisk-Nagios

20

7,80

Pruebas IV

15

5,85

Pruebas ATA (SPA 3000) Y Chan_Sebi

15

5,85

Pruebas TRUNK IAX 2 y usuario remoto

20

7,80

Integración y pruebas con Skype

15

5,85

Conversión telefonos IP (de SCCP a SIP), configuración y pruebas

40

15,60

Elaboración de la memoria VII: Finalización

20

7,80

Elaboración de la Presentación

30

11,70

26

32,50

1

1,25

Servidor

Pruebas con SoftPhones y Telefonos IP

32

Pruebas de funcionamiento de Elastix

1

1,25

Pruebas de configuración de funcionalidades

1

1,25

Pruebas de integración con FOP

1

1,25

Pruebas de integración con Call Center Stats

1

1,25

Pruebas de integración con CDR Reports

1

1,25

Montaje de centralita de pruebas II con TDM400P

1

1,25

Pruebas TDM400P

1

1,25

Montaje centralita Yet Informática

1

1,25

Puesta a punto del servidor

1

1,25

Instalación de Asterisk

1

1,25

Programación de ficheros de configuración y Dialplan

1

1,25

Integración de ficheros de configuración

1

1,25

Pruebas I

1

1,25

33

Solución de errores I

1

1,25

Tratamiento de funcionalidades extra

1

1,25

Programación Callback y DISA

1

1,25

Pruebas II

1

1,25

Integración Verbio-Asterisk

1

1,25

Pruebas III

1

1,25

Integración Asterisk-Nagios

1

1,25

Pruebas IV

1

1,25

Pruebas ATA (SPA 3000) Y Chan_Sebi

1

1,25

Pruebas TRUNK IAX 2 y usuario remoto

1

1,25

Integración y pruebas con Skype

1

1,25

Conversión telefonos IP (de SCCP a SIP), configuración y pruebas

1

1,25

27

33,75

1

1,25

Ordenador

Pruebas de montaje de centralitas Asterisk

34

Pruebas con SoftPhones y Telefonos IP

1

1,25

Pruebas de funcionamiento de Elastix

1

1,25

Pruebas de configuración de funcionalidades

1

1,25

Pruebas de integración con FOP

1

1,25

Pruebas de integración con Call Center Stats

1

1,25

Pruebas de integración con CDR Reports

1

1,25

Montaje de centralita de pruebas II con TDM400P

1

1,25

Pruebas TDM400P

1

1,25

Montaje centralita Yet Informática

1

1,25

Puesta a punto del servidor

1

1,25

Instalación de Asterisk

1

1,25

Programación de ficheros de configuración y Dialplan

1

1,25

Integración de ficheros de configuración

1

1,25

35

Portatil1

Pruebas I

1

1,25

Solución de errores I

1

1,25

Tratamiento de funcionalidades extra

1

1,25

Programación Callback y DISA

1

1,25

Pruebas II

1

1,25

Integración Verbio-Asterisk

1

1,25

Pruebas III

1

1,25

Integración Asterisk-Nagios

1

1,25

Pruebas IV

1

1,25

Pruebas ATA (SPA 3000) Y Chan_Sebi

1

1,25

Pruebas TRUNK IAX 2 y usuario remoto

1

1,25

Integración y pruebas con Skype

1

1,25

Conversión telefonos IP (de SCCP a SIP), configuración y pruebas

1

1,25

17

21,25

36

Iniciación en Linux

1

1,25

Estudio y aprendizaje sobre telefonía y VoIP

1

1,25

Estudio y aprendizaje sobre el mundo Asterisk

1

1,25

Elaboración de la memoria I: Introducción a la VoIP

1

1,25

Elaboración de la memoria II: Asterisk, el futuro de la telefonía

1

1,25

Programación y Pruebas Google Calendar I: Interactuación con los calendarios

1

1,25

Programación y Pruebas Google Calendar II: Envio de SMS

1

1,25

Elaboración de la memoria III: Prácticas realizadas

1

1,25

Elaboración de la memoria IV: Viabilidad del proyecto

1

1,25

Análisis de requerimientos y requisitos

1

1,25

37

1

1,25

Diseño del Dialplan

Elaboracion de la memoria V: Aplicacíon

1

1,25

Elaboración de la memoria VI: Pruebas de la Aplicación

1

1,25

1

1,25

Instalación y Estudio de Verbio

Instalación y Estudio de Nagios y servicio SNMP

1

1,25

1

1,25

Elaboración de la Presentación

Elaboración de la memoria VII: Finalización

1

1,25

6

7,5

Análisis de requisitos

1

1,25

Diseño interfaz gráfica

1

1,25

Programación Web

1

1,25

Pruebas de funcionamiento

1

1,25

Pruebas ATA (SPA 3000) y Chan_Sebi

1

1,25

Portatil2

38

Pruebas TRUNK IAX 2 y usuario remoto

1

1,25

20

5,00

Pruebas con SoftPhones y Telefonos IP

1

0,25

Pruebas de funcionamiento de Elastix

1

0,25

Pruebas de configuración de funcionalidades

1

0,25

1

0,25

Pruebas de integración con FOP

Pruebas de integración con Call Center Stats

1

0,25

Pruebas de integración con CDR Reports

1

0,25

Montaje de centralita de pruebas II con TDM400P

1

0,25

1

0,25

Pruebas TDM400P

Programación y Pruebas Google Calendar I: Interactuación con los calendarios

1

0,25

Sipura1

39

Sipura2

Programación y Pruebas Google Calendar II: Envio de SMS

1

0,25

1

0,25

Pruebas I

1

0,25

Solución de errores I

Tratamiento de funcionalidades extra

1

0,25

1

0,25

Programación Callback y DISA

1

0,25

Pruebas II

1

0,25

Pruebas III

Pruebas ATA (SPA 3000) Y Chan_Sebi

1

0,25

Pruebas TRUNK IAX 2 y usuario remoto

1

0,25

Integración y pruebas con Skype

1

0,25

Conversión telefonos IP (de SCCP a SIP), configuración y pruebas

1

0,25

5

1,25

40

Pruebas con SoftPhones y Telefonos IP

1

0,25

Pruebas I

1

0,25

Solución de errores I

1

0,25

Tratamiento de funcionalidades extra

1

0,25

Pruebas TRUNK IAX 2 y usuario remoto

1

0,25

3

0,75

Pruebas con SoftPhones y Telefonos IP

1

0,25

Pruebas I

1

0,25

Solución de errores I

1

0,25

3

0,75

Pruebas con SoftPhones y Telefonos IP

1

0,25

Pruebas I

1

0,25

Solución de errores I

1

0,25

2

0,50

Sipura3

ALLNET

Telefono1

41

Montaje de centralita de pruebas II con TDM400P

1

0,25

Pruebas TDM400P

1

0,25

1

0,25

1

0,25

1

0,25

1

0,25

2

1,00

Montaje de centralita de pruebas II con TDM400P

1

0,50

Pruebas TDM400P

1

0,50

1

0,15

1

0,15

28

7,00

1

0,25

Telefono2

Pruebas ATA (SPA 3000) y Chan_Sebi

ATA

Pruebas ATA (SPA 3000) Y Chan_Sebi

Tarjeta

sebi

Pruebas ATA (SPA 3000) y Chan_Sebi

Switch1

Pruebas con SoftPhones y Telefonos IP

42

Pruebas de funcionamiento de Elastix

1

0,25

Pruebas de configuración de funcionalidades

1

0,25

Pruebas de integración con FOP

1

0,25

Pruebas de integración con Call Center Stats

1

0,25

Pruebas de integración con CDR Reports

1

0,25

Montaje de centralita de pruebas II con TDM400P

1

0,25

Pruebas TDM400P

1

0,25

Programación y Pruebas Google Calendar I: Interactuación con los calendarios

1

0,25

Programación y Pruebas Google Calendar II: Envio de SMS

1

0,25

Montaje centralita Yet Informática

1

0,25

Puesta a punto del servidor

1

0,25

Instalación de Asterisk

1

0,25

Programación de ficheros de configuración y Dialplan

1

0,25

43

Integración de ficheros de configuración

1

0,25

Pruebas I

1

0,25

Solución de errores I

1

0,25

Tratamiento de funcionalidades extra

1

0,25

Programación Callback y DISA

1

0,25

Pruebas II

1

0,25

Integración Verbio-Asterisk

1

0,25

Pruebas III

1

0,25

Integración Asterisk-Nagios

1

0,25

Pruebas IV

1

0,25

Pruebas ATA (SPA 3000) Y Chan_Sebi

1

0,25

Pruebas TRUNK IAX 2 y usuario remoto

1

0,25

Integración y pruebas con Skype

1

0,25

Conversión telefonos IP (de SCCP a SIP), configuración y pruebas

1

0,25

44

Pruebas con SoftPhones y Telefonos IP

1

0,25

2

0,50

Pruebas ATA (SPA 3000) y Chan_Sebi

1

0,25

Pruebas TRUNK IAX 2 y usuario remoto

1

0,25

36

9,00

Pruebas de montaje de centralitas Asterisk

1

0,25

Estudio y aprendizaje sobre el mundo Asterisk

1

0,25

Estudio y aprendizaje sobre telefonía y VoIP

1

0,25

Pruebas con SoftPhones y Telefonos IP

1

0,25

Pruebas de funcionamiento de Elastix

1

0,25

Pruebas de configuración de funcionalidades

1

0,25

Pruebas de integración con FOP

1

0,25

Pruebas de integración con Call Center Stats

1

0,25

Switch2

Router1

45

Pruebas de integración con CDR Reports

1

0,25

Montaje de centralita de pruebas II con TDM400P

1

0,25

Pruebas TDM400P

1

0,25

Programación y Pruebas Google Calendar I: Interactuación con los calendarios

1

0,25

Programación y Pruebas Google Calendar II: Envio de SMS

1

0,25

Montaje centralita Yet Informática

1

0,25

Análisis de requerimientos y requisitos

1

0,25

Puesta a punto del servidor

1

0,25

Instalación de Asterisk

1

0,25

Programación de ficheros de configuración y Dialplan

1

0,25

Integración de ficheros de configuración

1

0,25

Pruebas I

1

0,25

Solución de errores I

1

0,25

46

Elaboración de la memoria V: Aplicación

1

0,25

Tratamiento de funcionalidades extra

1

0,25

Programación Callback y DISA

1

0,25

Pruebas II

1

0,25

Elaboración de la memoria VI: Pruebas de la Aplicación

1

0,25

Instalación y Estudio de Verbio

1

0,25

Integración Verbio-Asterisk

1

0,25

Pruebas III

1

0,25

Instalación y Estudio de Nagios y servicio SNMP

1

0,25

Integración Asterisk-Nagios

1

0,25

Pruebas IV

1

0,25

Pruebas ATA (SPA 3000) Y Chan_Sebi

1

0,25

Pruebas TRUNK IAX 2 y usuario remoto

1

0,25

Integración y pruebas con Skype

1

0,25

47

Conversión telefonos IP (de SCCP a SIP), configuración y pruebas

1

0,25

7

1,75

Iniciación en Linux

1

0,25

Análisis de requisitos

1

0,25

Diseño interfaz gráfica

1

0,25

Programación Web

1

0,25

Pruebas de funcionamiento

1

0,25

Pruebas ATA (SPA 3000) Y Chan_Sebi

1

0,25

Pruebas TRUNK IAX 2 y usuario remoto

1

0,25

1

0,50

7

1,75

Router2

CISCO

Conversión telefonos IP (de SCCP a SIP), configuración y pruebas

Diagrama de GANTT: Este diagrama nos indica cómo será el proceso de elaboración del proyecto, indicando cuándo empezarán y acabarán las tareas. Y es que la duración total del proyecto es algo que nos interesa optimizar, y es este diagrama la herramienta perfecta para ello.

48

49

50

Estimación de Costes del Proyecto: Recursos Humanos ó de Trabajo: David = 72,00 €/mes Recursos Materiales Amortizables:

Nombre del Recurso

Costo por unidad (€)

a)Hardware Servidor

300,00

Ordenador

600,00

Portatil1

500,00

Portatil2

500,00

Sipura1

149,97

Sipura2

149,97

Sipura3

149,97

ALLNET

61,89

Telefono1

49,00

Telefono2

49,00

ATA

44,53

Tarjeta

135,00

Sebi (Huawei)

54,90

Switch1

54,69

Switch2

54,69

Router1

150,00

Router2

150,00

Cisco

163,85 3317,46

b)Software Microsoft Office Profesional 2007

300,00

Netbeans 6.7.1

00,00

Putty

00,00

51

WinSCP

00,00

MySQL 5.0.27

00,00

Skype

00,00

Licencia Chan_Skype

45,92

Firefox 3.5

00,00

Zoiper

00,00 345,92

Cálculo del costo de los Recursos Humanos y Recursos Materiales Amortizables:

Concepto

Unidades (horas) Precio (€/h)

Importe (€)

Recursos Humanos David

2.522

0,39

983,58

Servidor

26

1,25

32,50

Ordenador

27

1,25

33,75

Portatil1

17

1,25

21,25

Portatil2

6

1,25

7,50

Sipura1

20

0,25

5,00

Sipura2

5

0,25

1,25

Sipura3

3

0,25

0,75

ALLNET

3

0,25

0,75

Telefono1

2

0,25

0,50

Telefono2

1

0,25

0,25

ATA

1

0,25

0,25

Tarjeta

2

0,50

1,00

sebi

1

0,15

0,15

Switch1

28

0,25

7,00

Switch2

2

0,25

0,50

Router1

36

0,25

9,00

Recursos Materiales Amortizables (Hw)

52

Router2

7

0,25

1,75

CISCO

1

0,50

0,50 123,65

Cálculo de la Amortización de los Recursos Amortizables:

Concepto

Coste Unitario (€)

Tiempo de Amortización (horas)

Coste Unitario de Amortización (€/h)

Tiempo de Uso (horas)

Importe (€)

Servidor

300,00

4800

0,0625

26

1,63

Ordenador

600,00

4800

0,1250

27

3,38

Portatil1

500,00

4800

0,1042

17

1,77

Portatil2

500,00

4800

0,1042

6

0,63

Sipura1

149,97

4800

0,0312

20

0,62

Sipura2

149,97

4800

0,0312

5

0,16

Sipura3

149,97

4800

0,0312

3

0,09

ALLNET

61,89

4800

0,0129

3

0,03

Telefono1

49,00

4800

0,0102

2

0,02

Telefono2

49,00

4800

0,0102

1

0,01

ATA

44,53

4800

0,009

1

0,01

Tarjeta

135,00

4800

0,0281

2

0,06

sebi

54,90

4800

0,011

1

0,01

Switch1

54,69

4800

0,011

28

0,31

Switch2

54,69

4800

0,011

2

0,02

Router1

150,00

4800

0,031

36

1,15

Router2

150,00

4800

0,031

7

0,22

CISCO

163,85

4800

0,034

1

0,03

SUBTOTAL Microsoft Office Profesional 2007 Netbeans 6.7.1

10,15 €

300,00

4800

0,0625

525

32,81

Gratuito

4800

-

-

0,00 53

Putty

Gratuito

4800

-

-

0,00

WinSCP

Gratuito

4800

-

-

0,00

MySQL 5.0.27

Gratuito

4800

-

-

0,00

Skype

Gratuito

4800

-

15

0,00

Licencia chan_skype

45,92

4800

0,0096

15

0,14

Firefox 3.5

Gratuito

4800

-

-

0,00

Zoiper

Gratuito

4800

-

-

0,00

SUBTOTAL

32,95 €

TOTAL

43,10 €

Presupuesto

Concepto

Importe (€)

Recursos Humanos o de Trabajo

1.107,23

Recursos Materiales Amortizables

123,65

Materiales Hardware y Software Amortizables

43,10 1.273,98

10% Costos Generales

127,40

15% Beneficio

191,10

SUBTOTAL

1.592,48

16%IVA

254,80

PRESUPUESTO

1.847,28 €

Por tanto, el presupuesto asciende a veintisiete mil seiscientos ochenta y siete con cincuenta y nueve. Estimando que los datos aportados en el siguiente presupuesto son suficientes, se somete al proyecto a su aprobación por los organismos oficiales correspondientes. Firma: David Escañuela Alonso

54

55

Capítulo

1

Introducción a VoIP

¿ Qué es VoIP (Voice Over Internet Protocol)? Una definición general de Voz sobre IP (también conocida como telefonía IP) es la posibilidad de transportar conversaciones telefónicas en paquetes IP. Cuando hablamos de “VoIP”, nos referimos a “la telefonía en Internet” en el sentido más amplio de la expresión. El término VoIP no se refiere a ninguno de los mecanismos concretos que existen para llevar las señales de voz de un sitio a otro en la red. Existen docenas de tecnologías que permiten hablar por la red. Las alternativas tecnológicas de VoIP se pueden dividir de una manera sencilla en dos grandes grupos:

56



Tecnologías cerradas/propietarias dónde nos encontramos con el conocido Skype o el ya legendario Cisco Skinny (SCCP).



Sistemas abiertos dónde nos encontramos con los estándares abiertos basados en SIP, H.323 o IAX.

Este sistema permite convivir con los sistemas tradicionales de comunicación. Las líneas telefónicas PSTN entrantes, pueden ser convertidas a VoIP, a través de una pasarela (Gateway) que permite recibir y hacer llamadas en la red telefónica normal.

¿Por qué deberíamos pasarnos a VoIP y no seguir usando servicios gratuitos como Skype? La respuesta es simple: por sostenibilidad, oportunidad, apropiamiento y flexibilidad. Los servicios gratuitos te pueden solucionar una necesidad a corto plazo pero nunca garantizar tu independencia o el control de tu propio proceso de aprendizaje y desarrollo. No se trata de una cuestión puramente técnica. El problema no es decidir cuál es la mejor de las tecnologías sino cuál es la que permite que las comunidades sean dueñas de su propio desarrollo y que puedan adaptarse a sus propias necesidades. Es muy difícil imaginar un desarrollo sostenible sin transferencia de conocimiento y reapropiamiento tecnológico. Una solución basada en estándares abiertos y código libre no es sólo una buena solución desde un punto de vista puramente técnico sino que además permite la posibilidad de adaptación para mejorarse a la realidad local. Para ser conscientes de la importancia de los estándares abiertos quizás sea bueno empezar presentando una definición de “estándar.” Un estándar es un conjunto de reglas, condiciones o requerimientos que describen materiales, productos, sistemas, servicios o prácticas. En telefonía, los estándares garantizan que todas las centrales de telefonía sean capaces de operar entre sí. Sin ese conjunto de reglas comunes un sistema de telefonía de una región sería incapaz de intercambiar llamadas con otro que esté, tan sólo, unos kilómetros más allá. Aunque muchos de los estándares de telefonía son públicos, los sistemas siempre han estado bajo el control de un grupo muy limitado de fabricantes. Los grandes fabricantes de sistemas de telefonía son los únicos capaces de negociar contratos a nivel regional o incluso nacional. Ésta es la razón que puede explicar porqué es muy común encontrar siempre el mismo tipo de equipos a lo largo de un mismo país. Los equipos de telefonía tradicionales, además, tienen la particularidad de haber sido diseñados para realizar un conjunto de tareas muy concretas. Normalmente, son 57

equipos informáticos con aplicaciones muy específicas. Aunque las reglas que gobiernan la telefonía (los estándares) son relativamente abiertas, no es el caso de los equipos informáticos que los implementan. Al contrario de los estándares, el funcionamiento interno siempre se mantiene en secreto.

Historia de VoIP 1995 – Inicio de la Voz sobre IP o La VoIP empieza con pequeñas aplicaciones gratuitas y de código abierto a raíz de la posibilidad de enviar pequeños fragmentos de voz codificados. 1997 – Aparecen los primeros PBX software o El protocolo H.323 se hace el “dueño y señor” de la VoIP ofreciendo voz y video aunque con mala calidad debido al ancho de banda: limitado y poco económico. 1999 – La revolución de la banda ancha o Netmeeting y CUSeeMe se afianzan como aplicaciones de voz y video más utilizadas hasta el momento. o Aparece el protocolo SIP evolución del arcaico H.323. o Comienzo de Asterisk de la mano de Mark Spencer. 2001 – La revolución llega a la Voz sobre IP o Asterisk comienza como un software abierto y con un gran número de seguidores. o Las empresas aun no se fían de este software ni de GNU/Linux y continúan utilizando software y hardware propietario. 2003 – Lanzamiento de Skype o El primer producto VoIP gratis de calidad se ha convertido en objeto de culto de usuarios residenciales. 2005 – Asterisk se afianza como símbolo de VoIP o Asterisk gana más y más adeptos. o La empresa de Mark Spencer, Linux Support Services, se convierte en Digium especializada en la venta de hardware para Asterisk. 58

o No tardan en aparecer otros fabricantes que crean hardware exclusivamente compatible con Asterisk (Junghanns, Beronet).

Características Principales -

Se utiliza una única red. Si dos empresas están unidas a través de Internet. ¿Por qué no aprovecharlo?

-

Se administra una única red.

-

Estándares abiertos e internacionales. Inter-operabilidad, Bajada de precios en proveedores y fabricantes de hardware VoIP.

-

Calidad: Es posible conseguir la misma calidad, de hecho hoy por hoy, el 40% de las llamadas de las grandes operadoras se encaminan por VoIP.

-

Fiabilidad: En LAN, se puede lograr una gran fiabilidad. En Internet también, pero existen quizás demasiados factores. (QoS, NAT).

-

Coste: Instalación sobre red existente, precios de llamadas.

Ventajas de VoIP Funcionales o Provee movilidad a nuestros empleados. Permite a los usuarios conectar su teléfono en cualquier parte en la oficina. Los usuarios simplemente cogen su teléfono y lo conectan al puerto Ethernet más cercano y mantienen su número existente. o Permite comunicación unificada integrando otros servicios disponibles en Internet como son video, mensajes instantáneos, etc. o Escalable. Podemos trasmitir más de una llamada sobre la misma línea telefónica. La transmisión de VoIP hace más fácil aumentar las líneas telefónicas cuando se incorporan nuevos empleados. De Gestión o Mucho más fácil de instalar y configurar que una central telefónica propietaria. o Nos facilita la administración por Web de forma fácil e intuitiva, frente a otros sistemas como por ejemplo centralita Siemens Hipath que necesitan de un software específico y nada intuitivo para ser 59

configurado. o Mejor reporte. Económicas o Tenemos voz y datos en una misma infraestructura. No hay necesidad de cableado telefónico separado. o Reducción significativa de costes al aprovechar Internet. o Proporciona servicios que normalmente son muy difíciles y costosos de implementar usando la red tradicional de voz PSTN. Funcionalidades que normalmente son facturadas con cargo extra por las compañías telefónicas, como identificación de llamada, transferencia de llamadas, remarcado automático, conferencias,…, son fáciles de implementar y sin coste alguno. o El estándar SIP elimina teléfonos propietarios y costosos. o Llamadas entre sedes gratuitas.

Problemas ⊗ NAT: El cáncer de la VoIP. Distintos tipos, no es fácilmente manejable. ⊗ QoS: Necesidad de ofrecer calidad de servicio, al ser la voz crítica en tiempo real. ⊗ Latencia: Tiempo que tarda la voz en llegar al destino. ⊗ Jitter: Variación de la latencia.

Elementos fundamentales de una red VoIP •

Terminales: teléfonos IP que pueden ser hardware o software.



GateKeeper: controlador y gestionador de toda la comunicación de VoIP.



Gateway: dispositivo que hace de enlace con la telefonía fija tradicional. Actúa de forma transparente al usuario.

60

¿Cómo se transmite VoIP por la red? Los paquetes de VoIP se transmiten sobre la red basada en IP aprovechando el modelo TCP/IP. Consta de 5 capas:

Protocolos NTP, RTP, RTCP aseguran la entrega y calidad de los paquetes VoIP.

El protocolo UDP, transporta los paquetes VoIP desde inicio a fin. Se añade la dirección IP al paquete. Cada dispositivo de VoIP (teléfono o PC), tiene una única dirección IP que enruta la entrega de paquetes VoIP para y desde el llamante al receptor durante toda la llamada.

Se añade la @ MAC al paquete.

En esta capa se convierten todos los paquetes a señales eléctricas u ópticas, para ser transportados sobre la red interna o externa.

Los protocolos específicos que se utilizan en cada capa son: Aplicación: En esta capa los paquetes de VoIP utilizan 3 protocolos: 

NTP (Network Time Protocol): ayuda a asegurar que las señales son transmitidas y recibidas en el margen de tiempo necesario para asegurar la calidad de recepción.



RTP (Real Time transports Protocol): proporciona funciones de transporte de red de fin a fin, para señales de voz digitales, encapsuladas en el paquete VoIP.



RTCP(Real Time transports Control Protocol): monitoriza la entrega de la señal de voz y proporciona funciones mínimas de control para asegurar la entrega de los paquetes.

61

Transporte: La mayoría de los datos de una red usan el protocolo TCP en la capa de transporte, mientras que en VoIP se utiliza el UDP. El TCP es más lento que el UDP. Utiliza más tiempo en la entrega de paquetes en el destino para asegurar que llegan correctamente. Pero al tratarse de un sistema que funciona en tiempo real es más importante la velocidad de entrega de paquetes, que no la seguridad en que llegan todos los paquetes. Por eso se usa el UDP.

Conceptos principales de VoIP Entender cada uno los conceptos nos va a ser muy útil cuando configuremos cualquier tipo de programa relacionado con telefonía IP. PBX PBX viene del término inglés Private (Automatic) Branch Exchange. En palabras simples, el uso más común de una PBX es compartir de una a varias líneas telefónicas con un grupo de usuarios. Una PBX se sitúa entre las líneas telefónicas y los teléfonos (terminales de voz). La PBX tiene la propiedad de ser capaz de redirigir las llamadas entrantes a uno o varios teléfonos. De una manera similar, una PBX permite a un teléfono escoger una de las líneas telefónicas para realizar una llamada telefónica al exterior. De la misma forma que un enrutador (router) en Internet es responsable de dirigir los paquetes de un origen a su destino, una PBX es responsable de dirigir “llamadas telefónicas”. La palabra “private” en la sigla PBX significa que el dueño del sistema tiene todo el control y decide como compartir las líneas exteriores con los usuarios. Una PBX no sólo permite compartir un conjunto de líneas con un grupo de usuarios sino que también ofrece la posibilidad de crear servicios de valor añadido como transferencia de llamadas, llamadas a tres ,es decir, tener la posibilidad de tener a más de dos personas hablando simultáneamente en la misma conversación, pasarela de voz a correo permitiendo grabar un mensaje de voz en un adjunto de correo electrónico como si fuera un contestador automático grabando el mensaje en un fichero de audio y se enviándolo a una cuenta de correo o servicios basados en una respuesta de voz interactiva (IVR), etc. Una PBX puede ser de gran utilidad en múltiples escenarios. Piensa en las regiones donde el acceso a la red telefónica implica caminar varias horas (sino días) a una cabina o Telecentro. Además, una situación muy común es que sólo exista una línea telefónica por edificio o por población. Una PBX (tu centralita) permitirá compartir esa línea e incluso extender 62

la red telefónica a lugares remotos. ASTERISK (PBX avanzada) (para saber más pulsa aqui ) PSTN-RTB PSTN es la Red Pública Telefónica Conmutada (Public Switched Telephone Network), “la red de redes telefónicas” o más conocida como “la red telefónica.” En castellano la PSTN es conocida como la red pública conmutada (RTC) o red telefónica básica (RTB). De la misma forma que Internet es la red global IP, la RTB es la combinación de todas las redes conmutadas de teléfono. Una diferencia muy importante entre la RTB e Internet es la noción de “flujo de información”. En telefonía los flujos de información son cada una de las llamadas o conversaciones mientras que en Internet es cada uno de los paquetes de datos. Desde el punto de vista conceptual la RTB e Internet son muy diferentes y representan dos mundos y filosofías casi antagónicas. Si una conversación se efectúa en una RTB se tiene que reservar un canal (circuito) dedicado de 64 Kbps, pero en Internet la misma conversación puede coexistir con otros servicios de manera simultánea. Aunque esta diferencia pueda parecer irrelevante a primera vista, tiene grandes implicaciones de cara a la implementación de las tecnologías de la información tanto en regiones desarrolladas como en desarrollo. En el modelo tradicional, un “cable de cobre” proporciona acceso a la RTB y ofrece un sólo tipo de servicio: un canal analógico. Si ese mismo cable se usa para conectarse a una red conmutada de paquetes como Internet, se puede implementar cualquier tipo de servicio basado en el protocolo IP. La RTB ha estado históricamente gobernada por estándares creados por la ITU (International Telecommunication Union), mientras que Internet es gobernada por los estándares del IETF (Internet Engineering Task Force). Ambas redes, la RTB e Internet usan direcciones para encaminar sus flujos de información. En la primera se usan números telefónicos para conmutar llamadas en las centrales telefónicas, en Internet se usan direcciones IP para conmutar paquetes entre los enrutadores (routers). Señalización en telefonía tradicional Señalización analógica Las centrales telefónicas son los “routers” de la RTB. Un Foreign Exchange Office (FXO) es cualquier dispositivo que, desde el punto de vista de la central telefónica, actúa como un teléfono tradicional. Un FXO debe ser capaz de aceptar señales de llamada o ring, ponerse en estado de colgado o descolgado, y enviar y recibir señales de voz. Asume que un FXO es como un “teléfono” o cualquier otro dispositivo que “suena” (como una máquina de fax o un módem). 63

Un Foreign Exchange Station (FXS) es lo que está situado al otro lado de una línea telefónica tradicional (la estación). Un FXS envía el tono de marcado, la señal de llamada que hace sonar los teléfonos y los alimenta. En líneas analógicas, un FXS alimenta al FXO. El FXS utiliza alrededor de 48 voltios DC para alimentar al teléfono durante la conversación y hasta 80 voltios AC (20 Hz) cuando genera el tono de llamada (ring). Para operar con líneas analógicas, se necesitan tarjetas con interfaces FXO.

Por ejemplo: Digium TDM01B

Para operar con teléfonos analógicos o centralitas clásicas, se requieren interfaces FXS.

Por ejemplo: Digium TDM10B

Una PBX que integra periféricos FXO y FXS puede conectarse a la RTB e incorporar teléfonos analógicos. Las líneas telefónicas que vienen del operador se tienen que conectar a una interfaz FXO. Los teléfonos se deben conectar a las interfaces FXS de la centralita. En resumen, dos reglas fáciles que hay que recordar son: 1. Un FXS necesita estar conectado a un FXO (como una línea telefónica necesita estar conectada a un teléfono) o viceversa. 2. Un FXS suministra energía (elemento activo) a un teléfono FXO (elemento pasivo). Ejemplos de conexiones:

64

Cada vez que usas una línea telefónica se intercambian un conjunto de “señales”. Las señales sirven para ofrecer información del estado de la llamada al usuario. Algunas de esas señales son el tono de marcado o el tono de línea ocupada. Estas señales se transmiten entre el FXS y el FXO haciendo uso de un protocolo conocido como “señalización”. Por desgracia, existen muchas maneras de generar este tipo de señales. Cada uno de los mecanismos es conocido como “método de señalización”. Los métodos de señalización son diferentes de un lugar a otro, así que debes conocer de antemano el método de señalización que se usa en tus líneas telefónicas. Dos de los métodos de señalización más conocidos son el “loop start” y el “ground start”. Si desconoces el método de señalización que debes usar puedes empezar probando con “loop start”. Una consecuencia de configurar tu PBX con un método de señalización equivocado es que la línea telefónica se cuelga de manera inesperada. Señalización digital La Red Digital de Servicios Integrados (RDSI) utiliza, en principio, dos tipos de capacidades de acceso. o Acceso Básico (2 canales de voz + 1 de señalización)

Por ejemplo: Digium B410P o Acceso Primario (30 canales de voz + 1 de señalización)

Por ejemplo: Digium TE110P

Además del tipo de señalización, las interfaces RDSI pueden funcionar en modo NT (Network Termination) o TE (Terminal Equipment). o Modo TE: En este modo, la centralita se puede conectar con interfaces RDSI (BRI o PRI) o con Centrales Digitales Tradicionales que tengan conexión RDSI de forma esclava. o Modo NT: En este modo la centralita telefónica puede conectarse con Centrales Digitales Tradicionales que tengan conexión RDSI de forma Maestro o con extensiones Digitales. 65

Señalización entre centrales telefónicas SS7 es un grupo de estándares desarrollados originalmente por la AT&T y la UIT que, entre otras cosas, se encargan de la gestión del establecimiento de llamadas y su encaminamiento entre centrales telefónicas en la RTB. Una cosa muy importante que debes entender es que en la red telefónica tradicional, la voz y las señales auxiliares (señalización) están claramente separadas. Esto significa que existe un “circuito” dedicado a voz y otro circuito independiente para el intercambio de las señales encargadas del establecimiento de las llamadas. Esta información “adicional” necesaria en cada llamada se intercambia usando un protocolo conocido como SS7. El hecho de que la voz y la señalización están separadas significa que los flujos de información pueden tomar caminos físicos totalmente diferentes. Imagínate que las “conversaciones” pueden viajar por un cable mientras que los números de teléfono de los comunicantes se envían por otro. Este concepto es importante para entender la siguiente sección: señalización en telefonía IP. Señalización en telefonía IP Por herencia histórica, la señalización en voz sobre IP sigue unos principios muy parecidos a la señalización en RTB. Las señales y las conversaciones están claramente diferenciadas. Protocolo H.323 Primer estándar VoIP, basado en protocolos de la RDSI, desarrollado en 1996 por la UIT como un medio para transmitir voz, video, datos, fax y las comunicaciones a través de una red basada en IP al tiempo que se mantiene la conectividad con la PSTN. Facilita la introducción de Telefonía IP en las redes existentes de RDSI basadas en sistemas PBX. Tomó fama porque era el más usado por los grandes operadores en sus redes troncales. Se usa en el famoso programa Netmeeting. Ha sido sustituido por el protocolo SIP, no obstante, todavía hay muchos operadores IP que no han portado SIP, muchos sistemas instalados que solo entienden este protocolo y también está presente en algunas aplicaciones de Videoconferencia. Los roles que nos interesan de este protocolo son los siguientes: •

Gatekeeper: Es núcleo de una zona H.323, es utilizado para conocer los diferentes usuarios y servicios de una red H.323. GNUGk: Gatekeeper de código abierto.



EndPoint : Son los usuarios finales que hacen uso de los servicios proporcionados dentro de la zona H.323.

66

Conexión de Asterisk con un Operador IP (Sistema de Voz Ip) a través del protocolo H.323

Protocolo MGCP (Media Gateway Control Protocol) Este Protocolo es un protocolo muy simple con mucha facilidad para ampliarse y en el que la centralita Asterisk se desenvuelve de forma muy óptima. Este Protocolo se basa en dos entidades bien diferenciadas, los Agentes de Llamadas y las pasarelas. En Asterisk la estructura estaría formada por Terminales IP MGCP que actúan como pasarelas y él actúa como Agente de Llamada. Así entonces, el Asterisk siempre tiene el estado en el que se encuentran las pasarelas.

67

Protocolo SIP (Session Initiation Protocol) El protocolo de señalización de inicio de sesión, del inglés Session Initiation Protocol (SIP), es una especificación para Internet para ofrecer una funcionalidad similar al SS7 pero en una red IP. Fue desarrollado por el IETF. Se trata de un protocolo de señalización para crear, modificar y terminar sesiones con uno o más participantes. Estas sesiones incluyen llamadas telefónicas por Internet, distribución de datos multimedia, y conferencias multimedia. Tiene una sintaxis muy similar al HTTP. Dentro de los Protocolos de Comunicaciones de Voz IP, SIP se posiciona como el más aventajado y conocido que está desbancando a H.323 gracias a su simplicidad .Ha incrementado su popularidad cuando las tecnologías de VoIP se han hecho más presentes en el ”bucle local.”(enlace físico que conecta al cliente con la terminación de la red de telefonía del proveedor de servicios de telecomunicaciones). Ventajas:  La gran mayoría de teléfonos IP soportan este protocolo. Inconvenientes: ⊗ Tiene problemas con el NAT. Los datos y señalización viajan de forma separada y suele necesitar un servidor STUN para resolver este problema. ⊗ Son necesarios muchos puertos. Necesita el puerto 5060 para señalización y 2 puertos RTP para cada conexión de audio. Es necesario abrir muchos puertos en el Firewall. Asterisk puede tener dos roles diferentes e importantes dentro de las comunicaciones a través de este Protocolo SIP. •

Agente de Usuario: Como agente de Usuario, el Asterisk puede conectarse a Operadores IP que soporten protocolo SIP, así como a otros Asterisk.



Servidor: Como Servidor, el Asterisk puede recibir peticiones de Registro de Agentes de Usuario, pudiendo ser estos clientes, clientes Hardware (teléfonos IP), clientes Software (SofPhone), otros Asterisk o cualquier Agente de Usuario SIP.

68

Ejemplo de los 2 roles que puede tomar Asterisk usando este protocolo.

Capacidades de SIP: o Localización del usuario o Disponibilidad del usuario: determinación de la voluntad del receptor de la llamada de participar en las comunicaciones. o Capacidad del usuario: determinación del medio y de sus parámetros. o Gestión de la sesión: transferencia, terminación de sesiones, modificación de los parámetros de la sesión desde el propio “User Agent”. En el protocolo SIP el usuario es el “dueño” de su sesión. Movilidad:  SIP permite implementar dos tipos de movilidad diferentes: 69

o La movilidad personal, el usuario puede ser alcanzado en un dispositivo cualquiera, registrándose en el SIP Registrar Server. o La movilidad propia al protocolo IP (VPN).  El registro permite mantener las localizaciones actuales del usuario de manera dinámica. En la imagen de abajo se muestra un ejemplo de funcionamiento del protocolo SIP. Este protocolo se encarga únicamente de la señalización y delega en otros protocolos como RTP (Real-time Transport Protocol) la transmisión de datos, que en este caso pueden ser tanto audio como vídeo.

Servidores Proxy SIP Aunque dos dispositivos SIP (teléfonos IP) pueden comunicarse directamente, SIP normalmente hace uso de algunos elementos adicionales llamados “proxies” para facilitar el establecimiento de las llamadas. Un “proxy” opera como un representante (apoderado) que se encarga de negociar entre dos partes. Con la ayuda de un “proxy” puedes mover físicamente tu número de teléfono en Internet. Los números no están asociados a un sitio concreto sino que se pueden mover siempre y cuando notifiquemos al “proxy” de nuestra ubicación. Como el “proxy” funciona como un 70

intermediario es capaz de indicar a las partes dónde se encuentran los teléfonos. Este servidor intermedio en SIP aprende la posición de sus usuarios durante un proceso que se conoce como “registro”. El proceso de registro entre clientes y el servidor “proxy”. La señalización (SIP) y las conversaciones de voz (RTP) viajan por caminos diferentes.

Hay dos tipos de Servidores Proxy: o Inbound Proxy: permite independizar al usuario del dispositivo que utiliza y de su localización.

o Outbound Proxy: Simplifica la administración de los usuarios de un dominio, aplica políticas, tarifica, etc. Un mismo servidor puede funcionar como proxy entrante y saliente de un dominio.

71

Protocolos en tiempo real y el NAT En Internet, las conversaciones que usan señalización de tipo SIP resultan en flujo constante de paquetes de pequeño tamaño entre los comunicantes. Estos paquetes de voz hacen uso de otro protocolo llamado RTP. El protocolo de transporte de tiempo real o Realtime Transport Protocol (RTP) es el encargado de llevar las conversaciones (la voz) de un lado a otro. En el RTP se define un mecanismo estándar para enviar audio y vídeo en Internet. De la misma forma que en una conversación existen dos flujos de voz, en una conversación en una red IP tenemos dos flujos de paquetes RTP. Los Network Address Translators (NATs) son los grandes enemigos del RTP. Una red con un NAT consiste en varios ordenadores compartiendo, con el mundo exterior, una sóla dirección IP pública. Las máquinas situadas dentro de la red NAT usan direcciones “privadas”. Aunque el NAT permite conectar más fácilmente ordenadores a la red, lo hace al precio de no permitir una conexión puramente bidireccional. El efecto de un NAT en voz sobre IP es que no se pueden recibir conexiones iniciadas desde el exterior. Existen varios problemas relacionados con NAT y VoIP. El más común de los problemas es conocido como “audio en una sola dirección” (oneway audio). Como comenté, una conversación está compuesta por dos flujos de paquetes RTP distintos. En presencia de un NAT, sólo el flujo de dentro a fuera no es bloqueado; el flujo de fuera a dentro no tiene la misma suerte y puede atravesar el NAT. La consecuencia: el que inicia la llamada desde dentro del NAT no puede escuchar a la otra parte. Si los dos comunicantes se encuentran dentro de NATs las cosas se complican aún más, hasta el punto de que ningún flujo de audio llega a su destino final. Por desgracia, las direcciones IP privadas y los NAT están especialmente presentes en todos los lugares de las regiones en desarrollo. Configurar una red con señalización SIP y NATs no es trivial. SIP vs NAT El verdadero enemigo del SIP es el NAT. El “supuesto” agotamiento de los rangos de direcciones IP utilizables en Internet ha obligado a utilizar direcciones IP privadas dentro de las redes de las empresas y usuarios domésticos. Un equipo IP para ser alcanzado en Internet debe utilizar una IP pública para sus comunicaciones. Es necesario por tanto “enmascarar “la red interna en una o varias IP’s públicas (Source NAT).

72

El proceso de NAT no es nada sencillo: varios tipos de NAT suponen varios tipos de soluciones e infinidad de problemas. No son problemas fáciles de solucionar.

Protocolo IAX (Inter-Asterisk Exchange) Es un protocolo de señalización que fue creado por Mark Spencer, para paliar una serie de inconvenientes y problemas del SIP. Lo diseñó para la comunicación entre Asterisk remotos, y actualmente es empleado también entre servidor y cliente VoIP. Se ha revelado como un protocolo robusto, potente y flexible. Numerosos fabricantes de hardware lo implementan en sus equipos. Ventajas:  Consume mucho menos ancho banda por llamada que el SIP. Los mensajes IAX son codificados de forma binaria mientras que los del SIP son mensajes de texto. Esta forma de enviar tanto las conversaciones como la señalización 73

por el mismo canal se conoce como inband, mientras que el método que usa SIP, el outofband, enviar la señalización dentro del canal de voz obligando a separar los paquetes de voz de los paquetes de señalización.

 Reduce al máximo la cabecera de los mensajes agrupando los paquetes de distintas conversaciones, que van en una misma dirección en la red, en uno sólo consiguiendo que el exceso de información introducido por las cabeceras se reduzca en cada una de las conversaciones. Este mecanismo es conocido como “trunking” reduciendo el ancho de banda aun más en llamadas simultaneas.  No hay problema de NAT ya que datos y la señalización viajan conjuntamente.  Sólo necesitamos el puerto, el 4569, para mandar la información de señalización y los datos de todas sus llamadas. Inconvenientes: ⊗ No está estandarizado y por tanto no está muy extendido en dispositivos Hardware. IAX2 (por ser la versión 2) está fuertemente influido por el modelo comunitario de desarrollo abierto y tiene la ventaja de haber aprendido de los errores de sus predecesores resolviendo muchos de los problemas y limitaciones de H.323 y SIP. Aunque IAX2 no es un estándar en el sentido más oficial de la palabra, no sólo tiene el gran reconocimiento de la comunidad sino todos los prerrequisitos para convertirse en el remplazo de SIP. El diseño de IAX2 es más adecuado para regiones en desarrollo por tres razones: 1. Reduce el uso de ancho de banda por llamada. 2. Está diseñado para operar en presencia de NATs (soporte nativo) y es más fácil de usar detrás de los cortafuegos. 3. Reduce aún más el ancho de banda cuando se realizan varias llamadas simultáneas (como resultado del “trunking”). En las comunicaciones basadas en IAX, el Asterisk puede operar de dos formas 74

diferentes: •

Servidor: Como Servidor, Asterisk admite registros de clientes IAX, pudiendo ser estos clientes Hardware, Software u otros Asterisk.



Cliente: Como Cliente, Asterisk puede registrarse en otros Asterisk o en Operadores IP que utilicen este protocolo. Ejemplo de los 2 roles que puede tomar Asterisk usando este protocolo.

Equipamiento para VoIP Teléfonos IP Un teléfono de VoIP o teléfono IP es un aparato telefónico con la misma apariencia física que los teléfonos tradicionales especialmente diseñado para conectarse a una red de telefonía IP. Características Principales: 75



Normalmente soportan un único protocolo de VoIP (SIP, IAX2, H323).Aunque pueden soportar varios.



Soportan una serie de codecs, el famoso G.729 casi siempre está entre ellos.



Se conectan directamente a la Red IP:



Se configuran desde los menús del propio teléfono o por interfaz web:

Características Avanzadas : •

Dual Lan: Algunos teléfonos disponen de dos conectores RJ45 e implementan funciones de switch, de esta forma no es necesario tirar cableado nuevo para los nuevos dispositivos IP.

76

• • • •

Manos Libres Conector auriculares/micrófono Display LCD: Caller ID / Agenda “Autoprovisioning”: Autoconfiguración automática de los parámetros de configuración desde un servidor remoto.

Hay todo tipo de terminales normales o inalámbricos en gamas baja, media y alta. Algunos ejemplos: Gama Alta:

Gama Media:

Gama Baja:

77

WiFi:

SoftPhones (Telefonía con Software) Una alternativa al uso de equipos dedicados (físicos) de VoIP es el uso de programas para emularlos. Estos programas se conocen como “SoftPhones” y funcionan en cualquier ordenador personal. El único requerimiento es tener una tarjeta de sonido en funcionamiento y estar seguro de que el cortafuegos instalado en tu máquina no está bloqueando la aplicación. Si quieres reducir el ancho de banda usado por tus conversaciones elige un “SoftPhone” que tenga soporte para el protocolo IAX2 y activa un códec de alta compresión. El audio es capturado desde: -

Micrófono Incorporado. Entrada de línea (Micrófono Externo). Dispositivos de entrada de audio USB. Dispositivos Bluetooth.

Características Principales: •

Integración con el entorno (Escritorio). -

Icono en systray, dock ... Aviso visual de llamadas entrantes.

• •

Integración con plataformas de acceso y validación de usuarios (LDAP). Importación / Exportación de datos: libretas de contactos en XML.



Soporte de varias conversaciones simultáneamente y en algunos casos de varias líneas.

Tipos de SoftPhones: o Propietarios : – Protocolos estándar: SIP, H323, IAX/IAX2 – Protocolos propios abiertos. – Protocolos propios cerrados. 78



Por ejemplo : Skype

o Libres : – Protocolos estándar. – Protocolos propios abiertos.

• Por ejemplo : Zoiper Algunos de los SoftPhones más utilizados son:

 X-Lite -

Basado en el protocolo SIP Soporte STUN Soporta g711a/u, gsm, ilbc, speex Disponible para Windows, GNU/Linux y MacOSX Puede descargarlo desde http://www.xten.com/.

Configuración: Cuando se descarga el teléfono no se preocupe por el mensaje de error que aparece en la parte superior de la pantalla. “Login failed! Contact Network Admin.”

Simplemente haga clic en el botón de Menú (a la izquierda del botón CLEAR). En Enabled debe poner YES, de lo contrario no funcionará incluso si su registro de usuario es correcto. En Display Name puede ser lo que quieras que se muestre. En Username, Authorization y Password debe ponerse lo mismo que en sip.conf. En Domain/Realm, SIP Proxy y Out Bound Proxy tiene que poner la dirección IP de su servidor de Asterisk.

79

Las demás características para crear un usuario SIP en el teléfono no es necesario modificarlas. X-Lite no puede utilizar la detección de silencio cuando se utiliza con el servidor de Asterisk. Por esto es necesario que modifique las características de silencio. Podemos encontrar esta opción en: Menú>Advanced System settings>Audio Settings>Silence Settings>Transmit Silence . De esta manera estamos seguros de que X-Lite enviara marcos de audio siempre, incluso después de que detecte un silencio.  Zoiper -

Basado en los protocolos SIP e IAX2 Soporte STUN Soporta g711a/u, gsm, ilbc, speex, g729 (version BIZ) Disponible para Windows, GNU/Linux y MacOSX

Configuración: En Domain debe poner la dirección IP del servidor Asterisk. En Username, Password y en Caller ID Name se deben poner los datos de configuración del archivo sip.conf.

 Ekiga -

Basado en los protocolos SIP y H.323. Soporta g711a/u, gsm, speex, g726. Disponible para GNU/Linux. Podemos descargarlo en : www.ekiga.org .

Configuración: 80

Para añadir una cuenta SIP, simplemente haga clic en el botón Añadir una cuenta SIP. - Nombre: Nombre de la cuenta SIP. -Servidor de Registro: Dirección IP del servidor Asterisk. -Usuario: Extensión del usuario. -Usuario Usuario para autenticación: extensión@IP del servidor Asterisk -Contraseña: Introducir su clave. -Tiempo Tiempo de expiración: El tiempo de espera después del que el registro debe estar actualizado. Por defecto es 3600. Otros SoftPhones :

 Cubix -

Basado en los protocolos SIP e IAX2. Soporte STUN. Soporta los codecs g711a/u, gsm, ilbc, speex,g729. Disponible para Windows. Se puede descargar en: http://www.virbiage.com/cubix.php.

 Diax -

Basado en el protocolo IAX2. Soporta los codecs g711a/u, gsm, ilbc, speex. Disponible para Windows. Puede ser descargado en: http://www.voipinfo.org/wiki-DIAX. DIAX.

 Kiax -

Basado en el protocolo IAX2. Soporta los codecs g711u, gsm, speex. Disponible para Windows, Linux, *BSD. Para descargar el teléfono : http://sourceforge.net/projects/kiax 81

Adaptadores IP Los adaptadores IP son dispositivos (hardware) que permiten conectar un telefóno analógico a la red IP utilizando protocolos de VoIP.

Tipos de Adaptadores :  ATA (Analog Telephone Adapter) es un adaptador FXS, tiene un puerto RJ11 (phone jack) y un RJ45 (Ethernet jack). Por un lado “habla” analógico con el teléfono y por otro lado “habla” digital con la red IP. Características de ATA: • • • • • •

Soportan SIP o IAX2 normalmente, varios codecs (entre ellos, casi siempre el G.729). Tienen uno o dos interfaces FXS para conectar 2 teléfonos analógicos. Cada teléfono puede ser registrado a un proxy VoIP distinto. Soportan caller ID, tonos de llamada distintivos, llamada en espera ... Económicos y de tamaño reducido. Pueden conectarse a cualquier tipo de aparato telefónico a la red IP, por ejemplo, se pueden conectar una cabina telefónica (de monedas o tarjeta), un fax o un teléfono inalámbrico (DECT).

 FXS to USB: permite conectar un teléfono normal a un PC, enviando y recibiendo el audio. Requieren un SoftPhone instalado para VoIP.  FXO to USB: Casi siempre relacionados con Skype, permiten reenviar las llamadas recibidas por Skype por una línea normal.

Ejemplo de Adaptadores IP Linksys PAP2: o 2 FXS, 1 LAN. Configuración vía Web. o Prestaciones avanzadas: dialplan, llamada en espera, parámetros SIP avanzados, autoprovisioning o Coste muy económico. o Integración sencilla con los proveedores de VoIP.

82

Gateways VoIP Dispositivos que permiten interconectar la telefonía tradicional con la VoIP. Se integran con la red telefónica pública con interfaces analógicos o enlaces digitales. Los adaptadores también pueden ser considerados como gateways, a pequeña escala. Generalmente, los adaptadores que realizan funciones de routing/NAT IP, son considerados gateways. Características Principales: •

Generalmente funcionan en dos sentidos: las llamadas recibidas por IP se envían a PSTN/FXS o las llamadas recibidas por interfaces FXS se envían por IP.



Soportan generalmente SIP o H.323, así como numerosos codecs (G.711, G.729 casi siempre).



Pueden ser utilizados de forma integrada con las centralitas tradicionales: transformando la llamada analógica de la centralita en llamada por IP, de forma totalmente transparente.

Gateways: FXS -> VoIP Disponen de 1 o más interfaces FXS para conectar teléfonos o líneas de enlace de centralitas.

Gateways: FXO -> VoIP Interfaz FXO para conectar una línea de operador. Tres funciones principalmente: – Discriminar en salida: llamar por IP o PSTN. – Utilizar la línea como backup, es decir, en caso de fallo de Internet o del proveedor VoIP, las llamadas pueden ser encaminadas por PSTN tradicional. 83

– Recibir llamadas por PSTN y encaminarlas por VoIP.

Parámetros de VoIP Calidad de Servicio La calidad de servicio o Quality of Service (QoS) es la capacidad de la red para ofrecer mejoras en el servicio de cierto tipo de tráfico de red. Para ofrecer una buena calidad en la conversación, el ancho de banda que necesitan los dos flujos de tráfico se debe garantizar con independencia del estado del resto de las conexiones (incluso si la conexión a Internet está altamente ocupada). En el diseño de una red de voz IP debes intentar optimizar el ancho de banda, controlar las fluctuaciones de la red (jitter), y minimizar la latencia. Codecs Para poder transmitir la voz sobre una red IP, necesitamos codificarla y para ello, empleamos algoritmos de compresión/descompresión de audio, llamados codecs. Según el códec que utilicemos ocupará más o menos ancho de banda y esto influirá mucho en la calidad de los datos transmitidos. Existen muchas formas de digitalizar audio y cada una de esas formas resulta en un tipo de códec. En general puedes asumir que a mayor compresión vas a obtener mayor distorsión (peor calidad). Un códec se considera mejor que otro cuando es capaz de ofrecer mejor calidad de voz usando la misma cantidad de ancho de banda. Los codecs más habitualmente empleados son:

84

Latencia Latencia es sinónimo de retraso, y mide el tiempo que tarda un paquete en viajar de un punto a otro. Para mejorar la calidad de las conversaciones de voz sobre IP es necesario reducir los retrasos al máximo, dando la máxima prioridad al tráfico de voz. Dar más prioridad a los paquetes de voz significa que se les deja “saltarse la cola” de salida y así ocupar una mejor posición que el resto de los paquetes que están esperando para ser transmitidos. Jitter (Fluctuaciones de velocidad) En VoIP, el jitter es la variación del tiempo entre la llegada de distintos paquetes. Estas variaciones son debidas a la congestión de la red, la falta de sincronización o los cambios de enrutamiento del tráfico. En redes con grandes cambios de velocidad se puede usar un “jitter buffer” para mejorar la calidad de la conversación. Un buffer es un espacio intermedio donde se almacenan los paquetes hasta su procesamiento. La idea básica del “jitter buffer” es retrasar deliberadamente la reproducción del sonido para garantizar que los paquetes más “lentos” hayan llegado. Los paquetes se almacenan en el buffer, se reordenan si es necesario y se reproducen a una velocidad constante. La calidad de voz mejora al precio de incrementar la latencia total. Existen dos tipos de jitter buffers: o Un buffer estático está implementado como parte del equipo y configurado de manera fija por el fabricante. o El dinámico se configura usando un programa y lo puede cambiar el usuario. 85

Retos al implementar VoIP •

Técnicos: Evitar el impacto negativo de los NAT.



Infraestructura de soporte: o Redes inalámbricas con gran latencia y jitter. o Redes en general que no han sido diseñadas para priorizar servicios de tiempo real.



Energía: No existen fuentes fiables de energía.



Marco regulatorio: o Servicio ilegal. o Necesidad de licencias.

Recomendaciones •

Técnicas: Usar IAX2.



Infraestructura de soporte: o Redes inalámbricas: Uso de la banda UNI 5.4 Ghz (IEEE 802.11a). Uso de protocolos con TDMA en zonas urbanas (WiMAX). o Incorporar QoS.



Energía: Equipos de bajo consumo, energía solar.



Marco regulatorio: Lobby, Modelos de negocio.

86

Capítulo

2

Asterisk, el futuro de la telefonía

¿Qué es Asterisk? Asterisk es una centralita digital diseñada en Software libre que integra las funcionalidades de telefonía clásica con nuevas capacidades derivadas de su flexible y potente arquitectura. Su nombre viene del símbolo asterisco (*) en inglés. Asterisk se creó, originariamente, para funcionar sobre el sistema operativo GNU/Linux. Y actualmente puede funcionar en toda una variedad de sistemas como OpenBSD, FreeBSD, MacOSX, Windows, Solaris,…, pero Linux sigue siendo el que más soporte presenta. 87

Asterisk permite conectividad en tiempo real entre las redes PSTN y redes VoIP. Para poder utilizar teléfonos convencionales en un servidor Linux o para conectar la central a una línea de teléfono analógica se suele necesitar Hardware especial, como adaptadores analógicos de telefonía (ATA´s) o tarjetas de telefonía. Como se ha comentado es una PBX híbrida (TDM y VoIP). Por una parte apoya una amplia gama de protocolos TMD para el manejo y transmisión de interfaces de telefonía tradicional. Por otra parte soporta y traduce distintos protocolos de señalización de VoIP como SIP, IAX2, MGCP o H.323.

Al mezclar telefonía tradicional y servicios de VoIP, Asterisk permite construir arquitecturas de telefonía avanzadas y soluciones CTI (Computer Telephony Integration), y facilita la migración gradual de los sistemas existentes en las empresas a las nuevas tecnologías. Asterisk cuenta con un esquema de doble licencia, la licencia de Software libre GNU (GNU General Public License, GPL) y otra licencia propietaria para permitir código propietario como el del códec G.729. Gracias a la licencia GPL cuenta con una gran comunidad de programadores que han contribuido a añadirle multitud de características. Esto nos permite: • • • •

Ejecutar el programa con cualquier propósito. Modificar el programa, accediendo al código fuente. Redistribuir copias. Mejorar el programa y publicar estas mejoras (junto al código fuente). 88

Los añadidos de terceros al código de Asterisk implican la cesión de los derechos comerciales a Digium pero se conserva el copyright del desarrollador. La potencia de esta PBX aumenta al ser posible desarrollar nuevas funcionalidades con lenguajes estándar de programación y utilidades propias de Asterisk.

¿Qué NO es Asterisk? Asterisk no es un proxy SIP. Aunque posea funcionalidades de estos, carece de la mayor parte de la implementación SIP necesaria. Asterisk no es una solución de “MultiVideoConferencia”. Al menos a corto plazo, no se espera transcoding de video en tiempo real. Asterisk no es un servidor de faxes. Puede interactuar con productos de terceros para enviar y recibir faxes, pero no incluye esa funcionalidad de serie.

¿Cuál es el papel de Digium? Digium es la creadora y desarrolladora primaria de Asterisk, el primer PBX de código abierto de la industria. Usado en conjunto con las placas de telefonía PCI, ellas ofrecen un manejo estratégico con excelente relación costo/beneficio para el transporte de voz y datos sobre arquitecturas TDM, conmutadas y redes Ethernet. Digium es hoy el principal patrocinador de Asterisk y uno de los líderes de la industria de PBX en código abierto, siendo Mark Spencer el creador y principal soporte de Asterisk, él es hoy admirado por el gran trabajo que realizó y por la responsabilidad que supo acarrear.

89

¿Cuándo usar Asterisk? Asterisk se encuentra avalado por los principales proveedores de VoIP, que lo utilizan para la interconexión de sus redes con las redes de telefonía tradicional, encaminando tal cantidad de tráfico que sólo un sistema tan estable, seguro y eficaz como éste puede soportar. Y como solución para empresas, desde Pymes a grandes corporaciones, va ampliando su mercado impulsado por el auge del Software libre, la reducción de costes que supone y las posibilidades de adaptación a las necesidades empresariales. Por tanto, Asterisk es recomendable para las comunicaciones de voz en cualquier organización donde se requieran desde las necesidades más básicas a las más altas prestaciones y funcionalidades. Pero sobre todo en aquellos entornos con expectativas de crecimiento y deseos de integrar las nuevas tecnologías (como la VoIP) en su modelo de negocio.

¿Por qué Asterisk? Utilizando Asterisk en su entorno es posible olvidar las limitaciones tradicionales de las centralitas telefónicas: no más problemas de alcanzar el máximo de extensiones posibles, dejar de pagar cantidades exorbitantes por módulos propietarios para ampliar la capacidad de la centralita. Algunos de los motivos de la elección de Asterisk son: -

Personalización de su sistema: Asterisk permite diseñar su sistema de telefonía a su medida, en vez de tener que adecuar su empresa a la telefonía. Podrá implementar una solución que responda a las necesidades de su negocio, mejorando sus tiempos de respuesta y optimizando sus recursos.

-

Puede crecer sin límite: un sistema Asterisk puede crecer con usted, con su negocio. Desde un entorno pequeño es posible aumentar la capacidad y posibilidades sin límite. Se acabó el cambiar de centralita cada pocos años.

-

Interconexión de sedes: Asterisk permite enlazar con costes muy ajustados sedes remotas e incluso ubicar terminales telefónicos remotos. Puede usar su conexión a internet como puerta de enlace entre sedes, reduciendo sus costes de telefonía interna de forma espectacular.

-

Ahorro de costes: Un único cableado para toda su empresa evitando tener cableados separados para voz y datos. Una única red de datos puede gestionar sus teléfonos y sus ordenadores. Simplificar infraestructuras es un modo inteligente de reducir costes.

90

-

Reduzca su factura telefónica: El uso de proveedores de VoIP para permitir el envío o la recepción de llamadas a través de Internet puede significar un ahorro en su factura telefónica superior al 40 %.

Las soluciones de telecomunicaciones basadas en Asterisk son económicas, robustas, flexibles y protegen la inversión. •

Económico: Asterisk es más económico principalmente por dos motivos, por qué utiliza equipos estándar y está basado en código abierto. Los servidores y los teléfonos usados son estándar, los producen multitud de fabricantes, que compiten entre ellos en prestaciones y precio.

En el caso de una centralita IP propietaria, la empresa está obligada a adquirir un Hardware concreto a un precio establecido a un solo fabricante. Los teléfonos estándar no funcionan o lo hacen parcialmente, y únicamente se pueden comprar al fabricante de la centralita. Un ejemplo son las centralitas Cisco. Asterisk es de código abierto, por lo que se obtienen gratuitamente el código fuente y todas las futuras actualizaciones. Todas las prestaciones que en otra centralita son de pago, en Asterisk vienen incorporadas, sólo hay que configurarlas y ponerlas en producción. A Asterisk puede conectar cuantos teléfonos quiera mientras el servidor tenga potencia para gestionarlos, no pagará ninguna licencia por cada extensión, ni por cada buzón de voz asociado a la extensión, etc. •

Robusto: Asterisk se ejecuta sobre servidores Linux, sistema operativo de gran robustez y estabilidad.



Flexible: Asterisk se configura y adapta a la medida de cada organización como ninguna otra centralita del mercado como se ha comentado.

91

Debido a su sistema de configuración a bajo nivel, la centralita prácticamente se programa a medida para cada cliente, permitiendo adaptarla para cubrir prácticamente todas las necesidades de su empresa, hasta el mínimo detalle. Gran capacidad de integración con el resto de sistemas y de aplicaciones de su organización, sobre el núcleo de conmutación de Asterisk, se pueden conectar diferentes interfaces de programación que pueden desarrollar aplicaciones a medida, integrarlo con sus sistemas, bases de datos, o integrar aplicaciones comerciales como Call Centers. •

Protege la inversión: La elección de una centralita IP basada en Asterisk tiene una ventaja importante más, protege la inversión. La inversión en Software y equipos que se realiza por parte de la empresa no depende de la continuidad que un fabricante quiera dar al producto que ha comprado. Utilizando Asterisk la empresa puede aprovechar de nuevo los servidores.

Ventajas Competitivas: • • • • • • •

Posibilidad de uso de sintetizadores de voz y técnicas de reconocimiento del lenguaje. Integración de servidor fax con centralita y correo electrónico. Integración de buzón de voz con centralita y correo electrónico. Información pormenorizada del volumen de llamadas mediante web. Posibilidad de contratar servicios con uno o varios operadores diferentes. Integración de varias empresas en una sola centralita. Control de calidad mediante grabación total o parcial de llamadas.

Desventajas de las centralitas Asterisk: • • • • • • •

Desconocimiento y desconfianza en la telefonía VoIP (miedo a cambios). Si no hay Internet no permite realizar comunicaciones. Si no hay corriente eléctrica no funciona. Uso obligatorio de teléfonos especiales (teléfonos IP) o adaptadores/tarjetas de telefonía para usar los teléfonos analógicos. Posibles fallos de programación e implementación por errores humanos. Riesgos de seguridad aun desconocidos del SO. Integración de Asterisk en la empresa : Asterisk no es un sistema fácil de configurar y poner en producción debido precisamente a su enorme flexibilidad y potencia. Cuando hay miles de maneras de conseguir el mismo resultado, el proceso requiere un esfuerzo extra. Por eso es tan importante la figura del integrador. 92

Historia de Asterisk Mark Spencer empezó en el mundo Linux con Slackware en 1994 (kernel versión 1.09). Uno de los pocos en Auburn, Alabama por aquellos tiempos que conocía cualquier cosa sobre Linux. Después de una temporada con Adtran (un proveedor global de equipos de telecomunicaciones) creó su propia compañía "Linux Support Services" con el objetivo de dar soporte a usuarios de Linux. Para ello necesitaba una centralita telefónica, pero ante la imposibilidad de adquirirla dados sus elevados precios, decidió construir una con un PC bajo Linux, utilizando el lenguaje C. Este fue el principio del fenómeno mundialmente conocido como Asterisk®, la centralita telefónica construida por Mark, después de su experiencia desarrollando GAIM (ahora llamado Pidgin) entre otros proyectos de software libre.

Mark Spencer en el 2006 O'Reilly Emerging Telephony Conference.

Después de explicarles sus necesidades de capital a sus amigos en Adtran ellos se ofrecieron a invertir en su compañía. Se dio cuenta que se tenía más interés en Asterisk que en sus servicios generales de consultoría Linux. Entonces se reunió con Jim Dixon que estaba construyendo Hardware Open Source. Su primer proyecto fue construir una tarjeta T1 Open Source. Estos ingresos les mantenían a flote pero no recibían contribuciones de nadie y el resto tan solo cogía sus diseños y manufacturaban tarjetas que competían con las suyas. Posteriormente "Linux Support Services" se convertiría en el año 2002 en "Digium", redirigiendo sus objetivos al desarrollo y soporte de Asterisk. El dinero era escaso en Digium hasta que un día un vendedor de DeltaCom (una competitiva compañía de comercio local) con la intención de venderles una T1, tras 93

entender lo que Mark y Jim habían hecho se ofreció a ayudarles. A partir de este punto empezaron a ver un incremento en las ventas, y acabaron el año con beneficios. Después de grandes ingresos durante largo tiempo Mark fue capaz de hacer crecer el negoció sin recabar mucho en los beneficios. Cuando Mark empezó con Asterisk hizo una cosa muy inteligente. Cada desarrollador que contribuía en el código debería firmar un acuerdo para que el Copyright se asignara a Asterisk y el compromiso de que no hubiera encumbramientos gracias a dicho código. Esto le permitió sentirse confortable con su proyecto que era completamente Open Source y le permitía a su compañía re licenciar el código a vendedores como 3COM y NTT. Digium también ha hecho las cosas bien al mantener la versión de la comunidad con la funcionalidad completa y no crear una escisión entre ellos y los que les apoyan. La primera release fue Asterisk 0.1 (Diciembre de 1999), y el tarball ocupaba tan sólo 124.3KB, que una vez descomprimido venían a ser unos 506 KB en 96 archivos. Para correr Asterisk necesitábamos básicamente Linux y libaudiofile:

Esta primera release fue liberada en 1999 bajo licencia GPL2 pero tenía clausulas adicionales que indicaban que en todos los productos derivados debía constar el nombre de Linux Support Services, LLC o Adtran Inc., también advertían sobre códecs cubiertos por patentes de Software, y la más curiosa es que si emprendíamos acciones legales por infringir patentes en referencia a algún Software Open Source nuestro derecho a usar o distribuir el Software se terminaba de inmediato.

94

De todos modos estas clausulas duraron bien poco, ya que en los primeros cambios que se hicieron para la release 0.1.1 aparte de arreglar numerosos bugs se revisó la licencia que pasó a ser GPL pura.

Asterisk está formado por varios paquetes: • • • • •

Asterisk: Ficheros base del proyecto. Zaptel: Soporte para hardware. Drivers de tarjetas. En versiones altas de Asterisk este paquete se sustituye por Dahdi_Linux y Dahdi_Tools. Addons: Complementos y añadidos del paquete Asterisk. Opcional. Libpri: Soporte para conexiones digitales. Opcional. Sounds: Aporta sonidos y frases en diferentes idiomas.

Zaptel, inicialmente llamado Zapata se basó en el Zapata Telephony Project, el driver Open Source de Zapata Telephony (anteriormente llamada BSD Telephony Of Mexico). La primera release fue Zapata 0.1.1 (Noviembre 2001), que venía a ser muy parecido al original liberado por Zapata Telephony en Octubre del año 2000. De hecho no se introdujeron cambios importantes hasta la release 0.1.6 (Marzo 2002), donde se movieron las estructuras de red para usar malloc ( ) cuando fuera necesario, se le añadió soporte HDLC PPP, junto con algunos arreglos multicanal en Torisa y Zaptel:

95

En la primera release, Libpri 0.1 Mark nos relataba que libpri era la implementación en C de la especificación para primarios RDSI basado en la especificación de Bellcore (12 de Mayo de 2001), por aquel entonces Asterisk pasó a ofrecer soporte para conexiones digitales:

Las funcionalidades y añadidos que no podían ser incluidas en el núcleo se fueron incorporando al paquete Addons, y también se pasó a ofrecer paquetes de sonidos. El lanzamiento de Asterisk 1.0 (Setiembre 2004) fue anunciado por Mark durante la Astricon. El tarball de Asterisk 1.0.0 pesaba unos 9 MB, y ya varias compañías daban soporte al desarrollo de Asterisk: Pilosoft, Inc. (soporte al desarrollo ADSI), GFS (soporte al desarrollo ALSA), Telesthetic (soporte al desarrollo SIP), Paul Bagyenda, Digital Solutions (desarrollo inicial del driver Voicetronix), entre otros muchos desarrolladores que contribuían como Christos Ricudis que realizó importantes aportes al código de Asterisk. Con un Changelog mucho más amplio ya, puesto que desde la release inicial se habían resuelto unos 340 bugs, se disponía de canales IAX2, SIP, PRI, Zap, OSS, backends para CDR, mejoras en el soporte para FreeBSD/OpenBSD/MacOS X, mejoras en H.323, se añadieron los codecs iLBC, G.726, G.729, LPC10, ADPCM, speech, u-law, formato GSM WAV, formato de fichero PCM, también MP3 aunque luego se quitó, soporte para ISDN Linux e incluso soporte para vídeo en el canal SIP e IAX2. También se disponía de DISA (hacer llamadas desde el exterior a través de la centralita), voicemail, transferencias, autenticación de propósito general, macros, conferencias MeetMe, AGI, grabaciones, call parking, soporte para múltiples idiomas, se eliminó la dependencia con libaudiofile, entre otras muchas mejoras como el control del eco. Asterisk 1.0.0 ya tenía soporte para diferente hardware Zaptel entre otros:

96

97

Paralelamente a Asterisk fue lanzado Zaptel 1.0.0 (Setiembre 2004), tenía soporte para udev (kernel Linux 2.6), zttool tenía como dependencia a libnewt, parte del software también necesitaba la librería Zapata. Por aquel entonces existían problemas con la directiva PROSLIC_POWERSAVE, donde el audio se cortaba después de cuatro segundos:

98

Libpri 1.0.0 (Septiembre 2004) traía algunas mejoras para Q.931 entre otros:

Un año más tarde (Noviembre 2005) se anunciaba el lanzamiento de la versión 1.0.10 de Asterisk y Zaptel. Libpri, Asterisk-addons, y Asterisk-sounds ya no presentaban cambios, lo cual ya dejaba entrever la discontinuidad de la rama 1.0 en favor de 1.2. Y efectivamente así fue, solo Asterisk llegó a la release 1.0.12 dejando paso a Asterisk 1.2.0 (Noviembre 2005). La nueva rama de Asterisk fue presentada durante la conferencia IP.4.IT en Las Vegas, Nevada. Asterisk 1.2 introducía sobre 3,000 funcionalidades y mejoras sobre el rendimiento global y eficiencia en el uso de la memoria. Entre las principales novedades teníamos: • • • •

Mejora de las funcionalidades de voicemail. Añadido protocolo DUNDi (Distributed Universal Number Discovery). Configuración de Asterisk más sencilla. Creación de un motor de almacenamiento de configuración en tiempo real sobre una base de datos. • Un Asterisk Dialplan más potente. • Introducción de Asterisk Extension Logic, un nuevo método flexible para configurar el Dialplan. 99

• • • • • • •

Nueva interfaz para flujos de llamada IVR dinámicos. Acceso configurable a funcionalidades de llamada generales. Mejoras en el protocolo SIP. Nuevas funcionalidades para el protocolo IAX (Inter-Asterisk eXchange). Uso de ficheros de sonido para la música en espera nativa. Soporte CDR customizable. Mejoras en el soporte PRI.

En Agosto de 2007, la rama 1.2 pasó al estado de “mantenimiento de seguridad”, y sólo se corregían bugs relativos a la seguridad. El 25 de Diciembre de 2006 apareció Asterisk 1.4 que ya contaba con: Líneas de código fuente Esfuerzo estimado de desarrollo (persona/año - persona/mes) Estimación de tiempo (años) Estimación de número de desarrolladores en paralelo Coste total estimado

250.463 66,03 -792,30 2,63 25,08 8.919.128 $

Lenguajes de programación en Asterisk 1.4.0:

Lenguaje ANSI C sh cpp perl yacc asm tcl PHP

Líneas de código 232.514 7.550 5.815 2.259 1.508 642 113 62

Porcentaje 92,83% 3,01% 2,32% 0,90% 0,60% 0,26% 0,05% 0,02%

Las mejoras específicas que aparecian en Asterisk 1.4 eran: • • • • •

Generic Jitter Buffer: Mejora la calidad de una llamada durante un aumento de trafico de red. En todos los protocolos no sólo en IAX2 como en la 1.2. Asterisk Extension Language Version 2 (AEL2): Simplifica la programación y la configuración del plan de marcado (Dialplan). Soporte de T.38: Permite Faxes codificados con T.38 (FOIP). Jabber/Jingle/GoogleTalk: Soporte de clientes Jabber a través del protocolo Jingle (GoogleTalk). Mejora el soporte de idiomas: Ofrece nuevas características en Ingles, Español y Francés. Incluso nuevos sonidos y estructuras gramaticales.

100

• • • • • • • • • • • • • • • • • • •

Mensajería unificada: Integra el buzón de voz, el correo electrónico y el fax en un único buzón donde los usuarios pueden enviar, recibir y manejar todos sus mensajes utilizando cualquier dispositivo compatible. Gestión en tiempo real del audio: Permite seleccionar y programar interrupciones en las llamadas para controlar el volumen y el ‘mute’ en tiempo real. Mejorado el soporte DTMF: Permite distinguir tonos de diferente longitud para nuevas opciones especiales. Codecs de video H.264 (Video llamadas 3G): Podremos realizar videoconferencias con la ultima tecnología de video compatible con la red móvil 3G. Soporte Radius en CDR: Para poder almacenar el registro de llamadas utilizando un servidor Radius. Interfaz web: Para que una oficina o un único usuario pueda configurar el servidor fácilmente. Monitorización de llamadas: Permite escuchar conversaciones de manera silenciosa, necesario para todo buen Call-Center o proveedor de VoIP. Mejora en el uso de la memoria: Hace un mejor uso de la mejoría ahorrando y potenciándola en aquellos casos en que sea necesario. Mejora en las transferencias: Los clientes SIP e IAX podrán hacer transferencias sin limitaciones e incluso transferir llamadas aparcadas (parked). Mejora en el protocolo IAX2: Mejora en las capacidades de este protocolo para transmitir audio y video permitiendo comunicación directa sin tener que pasar por el servidor, aunque manteniendo el control de llamadas. Programación automática de Eventos: Permite programar eventos y escucharlos durante una conversación reproduciendo archivos gsm o wav. Locales de fecha: Permite cambiar el formato de fecha y adecuarlo al formato deseado (no únicamente el formato ingles EEUU). Soporte de SCCP de Cisco: Permite utilizar los terminales de Cisco y así poder reutilizar dispositivos. Monitorización SNMP: Permite controlar, gracias a un cliente SNMP (mrtg, rrdtool, etc…), los datos de utilización, registros, llamadas, etc. Transparencia de protocolos: Soporta pasar codecs desconocidos en modo passthrougt (canreinvite=yes). Reconocimiento de voz: Utilizando un motor comercial podremos crear IVR utilizando la voz para introducir la opción elegida. Reproductor de texto a voz (TextToSpeech): Utilizando un motor comercial podremos crear locuciones dinámicamente con comandos especiales. Nueva estructura de compilación (make menuselect). Nuevas variables disponibles (como DIALSTATUS).

En octubre de 2008 aparece la primera release de Asterisk 1.6 ,bastante esperada y pese a que Asterisk 1.4 traía notables ventajas con respecto a la versión 1.2, en Asterisk 1.6 siguen apareciendo nuevas ventajas que harán las delicias de los usuarios, como por ejemplo:

101





• • • •

Realtime LDAP: Si bien Asterisk 1.4 tenía herramientas y parches para dotar a esta aplicación de soporte LDAP para gestionar los usuarios y contraseñas, parece ser que en Asterisk 1.6 vendrá de serie el soporte para Realtime en LDAP. Este es un sistema de directorios que nos permitirá mantener perfectamente clasificado y ordenado cualquier tipo de datos correspondientes a personas, recursos, empresas, etc., es un directorio especialmente creado para este tipo de información y son muchos los sistemas operativos y sus aplicaciones los que suelen utilizar este tipo de servicio de forma transparente para el usuario. Actualmente están corrigiendo muchos bugs en el soporte LDAP en Asterisk relativos a este sistema para poder dotar a Asterisk 1.6 de un control integro de usuarios mediante LDAP. SIP bajo TCP: Este es otro de los añadidos que traerá Asterisk 1.6 tras 3 años de pruebas (el bug comenzó en 2005) y es sin duda una de las mejoras que, de funcionar correctamente, podría convertirse en la ‘STAR FEATURES‘de Asterisk 1.6. SIP bajo TLS: Otro de los grandes avances en cuanto a seguridad en el protocolo SIP. DAHDI en vez de Zaptel. Mejorado el soporte NAT en el protocolo SIP. Chan_Mobile (Bluetooth y móviles).

Cierto es que llevamos varios años esperando que estos añadidos se conviertan de una vez por todas en funcionalidades estables, no obstante cabe recordar a todos que Asterisk pese a los esfuerzos de muchas empresas que dedican tiempo y recursos en desarrollar y corregir cada una de las partes que lo forman y pese a que hay muchísimo dinero moviéndose en torno a él tanto a nivel de Hardware, instalaciones, soluciones personalizadas, etc, también hay que entender que, hay un volumen altísimo de usuarios en comparación con el de desarrolladores por lo que se hace muy difícil coordinar todos estos esfuerzos para conseguir que todos los usuarios estén contentos. En la actualidad Digium se centra en el desarrollo y mejora de la versión 1.6 mientras que la versión estable para producción, la versión 1.4, sólo recibe atenciones de soporte para las versiones comerciales. Por otra parte las versiones 1.4.2X, las últimas que sacó Digium con la funcionalidad DAHDI ya implantada en vez de Zaptel, han resultado ser bastante decepcionantes en cuando a estabilidad.

102

En la actualidad a pesar que Digium trabaja para estabilizar Asterisk 1.6 ,para producción la versión 1.4 es la más estable y recomendable.

Estructura de directorios de Asterisk: •

/etc/asterisk: Contiene los ficheros de configuración. Si al compilar ejecutamos “make samples”, tendremos ejemplos en este directorio.



/usr/lib/asterisk/modules: Contiene los módulos de Asterisk que hemos compilado.



/var/lib/asterisk: Contiene diferentes “librerías” de Asterisk.



/var/lib/asterisk/agi-bin: Directorio para contener los AGI.



/var/spool/asterisk: Directorio para archivos que genera Asterisk (voicemail, etc.)



/var/log/asterisk: Aquí se guardan los log de Asterisk.

Funcionalidad de Asterisk El sistema Asterisk incorpora muchísimas funcionalidades avanzadas que tendrían un elevado coste en sistemas tradicionales propietarios. Funciones básicas: •

Conexión con líneas de telefonía tradicional, mediante interfaces tipo analógico (FXO) para líneas de teléfono fijo o bien móvil y RDSI (BRI o PRI).



Soporte de extensiones analógicas, bien para terminales telefónicos analógicos, terminales DECT o bien equipos de fax.



Soporte de líneas (trunks) IP: SIP, H323 o IAX.



Soporte de extensiones IP: SIP, SCCP, MGCP, H323 o IAX.

Funciones de llamada: •

Reglas de salida (OutBound Rules): definen las rutas que tomará una llamada saliente.



DiD (Direct In Dial): son reglas que definen dónde irá una llamada de un determinado número telefónico. 103



Transferencia (a cualquiera) y Transferencia atendida (a alguien determinado).



Música en espera y en transferencia (ficheros MP3 actualizables por el usuario).



Desvío de llamadas si está ocupado (Busy) o no contesta (No Answer).



Llamada en espera (Hold).



Identificador de llamante (CallerID).



Bloqueo de llamante según identificador (CallerID).



Opción No molestar (Do Not Disturb / DND).



Retro llamada (Callback): llamada automática cuando esté disponible.



Grupo de timbrado (Ring Group o Call Group): permite llamar al mismo tiempo a todos los teléfonos de un grupo. Los teléfonos del grupo también pueden consistir en números telefónicos externos como teléfonos móviles.



Call Pickup: es el hecho de poder descolgar y responder a la llamada entrante a un teléfono o grupo de teléfonos determinado desde un tercer teléfono que no está sonando.



Remote Pickup: permite coger llamadas de forma remota.



Colas (Queue): almacenes de llamadas entrantes. Así, las personas que llaman pueden esperar la respuesta de alguien en lugar de obtener una señal de ocupado o ser forzadas a dejar un mensaje. Esta extensión también puede decir a la persona que llama su lugar en la cola y el tiempo estimado de espera. Es posible establecer prioridades de forma que ciertas personas no esperen tanto.



Parking de llamadas (Call Parking): permite transferir la llamada a un 'parking' virtual. Pudiendo colgar sin que la llamada origen sea desconectada de Asterisk, ya que se encontrará aparcada.



Megafonía a través del altavoz del teléfono (Paging).



Espiar llamadas (Call snooping): permite escuchar una llamada, sin que la persona que ha llamado se dé cuenta.



Call Whisper: permite intervenir en una llamada de forma que la persona que ha llamado no escucha nada.

104

Funciones avanzadas: •

Buzón de Voz (Voicemail): sistema de contestador automático personalizado por usuario. Se integra con el sistema de directorio (LDAP) y con el email. Los buzones pueden ser individuales o para todo un grupo de personas.



Gestión del buzón de voz mediante el terminal telefónico y página web.



Sistema de Audio conferencias (Web MeetMe): Sistema que permite la conexión remota de 2 o más usuarios que quieren mantener una reunión virtual y suministra la correcta gestión y control de los usuarios que se incorporan a ella.



IVR (Interactive Voice Response): Operadora Automática. Sistema automatizado de respuesta que permite redirigir las llamadas entrantes en función de las opciones seleccionadas por el llamante.



Informes detallados de llamadas (CDR): Detalle de llamadas realizadas o recibidas por extensión, para imputación de costes departamentales, por cliente o incluso para facturación.



ACD: Sistema Automático de Distribución de Llamadas entrantes. Pensado para Centros de Llamadas para atención comercial o soporte técnico.



CTI: Integración con sistemas de gestión comercial o de atención al cliente (CRM).



Extensiones Remotas: para poder aceptar un usuario remoto teniendo en cuenta el funcionamiento de NAT con los protocolos utilizados por Asterisk (IAX y SIP).



Sistema DISA. (método por el cual una persona externa a la oficina puede realizar llamadas a través de la centralita).



Grabación de llamadas entrantes y salientes.



AMI (Asterisk Management Interface): gestión y control remoto de Asterisk.



Monitorización de llamadas en curso.



Gestión de listas negras (números telefónicos con acceso prohibido).



LCR (Least Cost Routing): encaminamiento de llamadas por el proveedor VoIP más económico.

105



AGI (Asterisk Gateway Interface): integración con todo tipo de aplicaciones externas.



Configuración en base de datos: usuarios, extensiones, proveedores, etc.



Interfaz gráfica de administración (GUI).



Acciones a realizar según horarios y fechas (horario laboral, días festivos, etc.). Posibilidad de integración con Google Calendar.



Posibilidad de integrar un sistema de llamadas pre-pago (solución para locutorios telefónicos).



Detección automática de faxes y recepción de fax desde el propio sistema y posterior envío por e-mail.



Almacenamiento y recuperación en Base de Datos.



Integración de Festival: aplicación que pasa de texto a voz.



Soporte de vídeo (Asterisk 1.6: “the video release”).

Modificación de funciones: En el caso de que se desee cambiar horarios o mensajes, añadir nuevas extensiones, modificar los desvíos, cambiar los buzones de correo para los mensajes de voz, o cualquier otra funcionalidad, solamente habría que modificar los archivos de configuración (extensions.conf, sip.conf, features.conf, meetme.conf, manager.conf e iax.conf) y hacer las pruebas necesarias. Funcionalidad en servidores SIP: Desde el punto de vista de la clasificación funcional de servidores SIP, las funcionalidades de Asterisk son varias:  Por una parte, hace función de Registro y Localización de Servidor, ya que acepta peticiones de registro de los usuarios y suministra un servicio de localización y traducción de direcciones en el dominio que controla.  Por otro lado, también hace función de Proxy Server con estado (Stateful Proxy), ya que conoce en todo momento el estado de la llamada y posee funcionalidades que dependen del estado de la llamada como servicios de respuesta automática (Interactive Voice Response, IVR) que le permiten actuar sobre el flujo RTP (Real Time Protocol), que es el que contiene la comunicación de voz.

106

Cabe recordar que en contraste con este tipo de Proxy nos encontramos los Proxy server sin estado (Stateless Proxy) como SER (SIP Express Router), que no tienen sentido más que para redes completamente SIP, ya que solo conocen y actúan sobre los paquetes SIP que negocian las direcciones IP, los puertos a utilizar, el códec a utilizar,…, pero no sobre el flujo RTP.

Arquitectura de Asterisk  Esquema:

 Partes de Asterisk :

107

 Arquitectura de Asterisk: Está formada por cuatro APIs: API de Canales, de Aplicaciones, de Traducción de Codecs y de Formatos de Ficheros. Un API es el conjunto de funciones y procedimientos que ofrece cierta biblioteca para ser utilizado por otro Software como una capa de abstracción. Usando este sistema basado en APIs, la base del Asterisk no tiene porqué preocuparse por detalles como, que llamada está entrando, que códec se está utilizando, etc.

Descripción de las APIs:

 API de Canales Asterisk: Maneja el tipo de conexión al cual el cliente está llegando, sea una conexión VoIP, ISDN, PRI, o alguna de otro tipo de tecnología. Módulos dinámicos son cargados para manejar los detalles más bajos de la capa de estas conexiones.  API de Aplicaciones Asterisk: Permite a varios módulos de tareas cumplir varias funciones, multiconferencias, lista de directorios, buzones de voz, aplicaciones personalizadas, etc.

108

 API de traducción de Codecs: Carga módulos, codecs, para apoyar varios tipos de audio, codificando y decodificando formatos tales como G711, G729, GSM23, etc.  API de formato de ficheros Asterisk: Maneja la lectura y escritura de varios formatos de archivos para el almacenaje de datos en el sistema de archivos. Usando estas APIs Asterisk alcanza una completa abstracción entre sus funciones básicas y las diferentes tecnologías y aplicaciones relacionadas. La formula modular es lo que le permite al Asterisk integrar Hardware de telefonía implementado y tecnología de paquetes de voz emergentes hoy en día. La aplicación API provee el flexible uso de aplicaciones modulares para realizar cualquier acción flexible en demanda, también permite un desarrollo abierto de nuevas aplicaciones para satisfacer necesidades o situaciones únicas. En conclusión, cargar todo el uso como módulos permite un sistema flexible, permitiéndole al administrador diseñar la mejor y más satisfactoria trayectoria para los usuarios en el sistema PBX y también modificar la trayectoria de llamadas para satisfacer las distintas necesidades.

Concepto de Canal: Canal: Es una conexión que conduce una llamada entrante o saliente en el sistema Asterisk. La conexión puede venir o salir hacia telefonía tradicional analógica o digital o VoIP. Asterisk soporta una serie de canales, los más importantes:   

H323, IAX2, SIP, MGCP (Protocolos de VoIP). Zap: Líneas analógicas y digitales. misdn: RDSI

109

Dialplan de Asterisk El Dialplan es realmente el corazón de cualquier sistema Asterisk, ya que define de la configuración de la centralita indicando el itinerario que sigue una llamada desde que entra o sale del sistema hasta que llega a su punto final. En pocas palabras, consiste en una lista de instrucciones o pasos que componen el comportamiento lógico de la centralita. A diferencia de los sistemas de teléfono tradicionales, el Dialplan de Asterisk es plenamente personalizable. Para poder crear tu propio sistema de Asterisk, se necesita entender el Dialplan. La Sintaxis del Dialplan El Dialplan de Asterisk se especifica en el archivo de configuración extensions.conf que reside en el directorio /etc/asterisk/ pero su ubicación puede variar dependiendo de la instalación de Asterisk. Otros lugares comunes para incluir este archivo: /usr/local /asterisk/etc/ /opt/asterisk/etc/ Puede encontrar los archivos de configuración de ejemplo (extensions.conf.sample) en el fichero configs de la carpeta /usr/src/asterisk/asterisk-1.4.26.1. El Dialplan se compone de cuatro conceptos principales: Contextos Extensiones Prioridades Aplicaciones Contextos El Dialplan se divide en uno o varios contextos. Un contexto es una colección de extensiones. Los contextos existen para poder diferenciar el 'lugar' donde se encuentra una llamada, por ejemplo para aplicar políticas de seguridad. Y es que Asterisk no se comporta igual cuando llama un usuario y marca el 1 que cuando un usuario local marca el 1. En general, es una forma de diferenciación. Una extensión definida en un contexto está completamente aislada de las extensiones de cualquier otro contexto. Es posible una iteración entre contextos a través de la palabra “include”. 110

Los contextos se caracterizan por colocar el nombre del contexto dentro de corchetes ([]).El nombre puede estar formado por las letras desde la A hasta la Z (mayúsculas y minúsculas), los números del 0 al 9, el guion de subrayado (_) y el punto (.) (No use espacios en los nombres de su contexto).La longitud máxima es de 79 caracteres (80 caracteres -1 de terminación nula). Por ejemplo: [incoming] Todas las instrucciones después de la definición de un contexto son parte de ese contexto, hasta que el siguiente contexto se define. Al comienzo del Dialplan, hay dos contextos especiales: El [general] que contiene una lista de ajustes generales del Dialplan (que probablemente no tenga que preocuparse por el). El [globals], la sección de "variables globales" por ahora es importante saber que estos dos contextos son especiales. Debemos evitar nombrar a nuestros contextos con esos nombres. Cuando se define un canal, uno de los parámetros que se define en el canal es el contexto. En otras palabras, el contexto es el punto donde las conexiones de canal van a comenzar. Otro uso importante de los contextos (quizás el más importante) es para garantizar la seguridad. Mediante el uso correcto de contextos, puede tener acceso a ciertas características que no están a disposición de los demás. Si su Dialplan no ha sido diseñado cuidadosamente, puede permitir que otras personas inadvertidamente utilicen fraudulentamente el sistema. En /usr/src/asterisk/asterisk-1.4.26.1/doc/ se encuentra un archivo muy importante, security.txt, que describe varios pasos que debes tomar para mantener su sistema seguro de Asterisk. Es de vital importancia que se lea y entienda este archivo. Include Asterisk tiene una característica que nos permite utilizar las extensiones de un contexto dentro de otro contexto, a través de la directiva include. Este es usado para controlar el acceso a diferentes secciones del Dialplan. include => contexto Cuando se incluyen otros contextos dentro de nuestro contexto actual, tenemos que ser conscientes de él orden en el que estamos incluyéndolos.

111

[empleados] include => context1 Extensiones En el mundo de las telecomunicaciones, la palabra extensión se refiere generalmente a un número identificador que posibilita que un teléfono particular suene en una línea. En Asterisk, una extensión es una lista de comandos a ejecutar. Dentro de cada contexto, podemos definir muchas (o pocas) extensiones, según sea necesario.Se accede a las extensiones cuando:   

Se recibe una llamada entrante por un canal dado. El usuario que ha llamado marca la extensión. Se ejecuta un salto de extensiones desde el Dialplan de Asterisk.

La sintaxis: exten => Seguido de esto se pone el nombre (o número) de la extensión. Cuando se trata de sistemas de telefonía tradicionales, tendemos a pensar en los números que se marcan para que otro teléfono suene. En Asterisk, se utilizan nombres de extensión que pueden ser cualquier combinación de números y letras. La asignación de nombres a las extensiones puede parecer un concepto revolucionario, la marcación por nombre o dirección de correo electrónico en lugar de solo marcación de un número, tiene un perfecto sentido. Esta es una de las características de Asterisk que lo hace tan flexible y potente. Una extensión se compone de tres componentes: • El nombre (o numero) de la prorroga. • La prioridad (cada extensión puede incluir varios pasos, el nº del paso se llama "prioridad"). • La aplicación (o comando) que lleva a cabo. Estos tres componentes están separados por comas, de esta forma: exten => nombre, prioridad, aplicación() exten => 123,1, Answer () Extension “s” Cuando pide entrar en un contexto sin un destino de extensión especifico (por ejemplo, una señal de línea FXO), se pasa a la extensión “s”. (La s significa "comienzo") 112

[incoming] exten => s, 1, aplicacion() exten => s, 2, aplicacion() exten => s, 3, aplicacion() Manejo de las entradas no validas (i) y tiempos (t) En primer lugar, necesitamos una extensión de las entradas no validas, cuando se pulsa una tecla no valida, la llamada se envía a la extensión “i”. En segundo lugar, necesitamos una extensión para manejar situaciones cuando la persona que llama no pulsa a tiempo ,(el tiempo de espera predeterminado es de 10 segundos) la llamada se envía a la extensión “t”: [incoming] exten => 123,1, Answer() exten => 123, 2, Background(entrar-ext-de-persona) exten => 123, 3, WaitExten() exten => i, 1, Playback(pbx-invalid) exten => i, 2, Goto(incoming, 123,1) exten => t, 1, Playback(vm-adios) exten => t, 2, Hangup() El uso de la i y la t hace que nuestro Dialplan sea un poco más robusto y fácil de usar. Prioridades Cada extensión puede tener varias etapas, llamadas prioridades. Cada prioridad esta numerada empezando con 1, y ejecuta una aplicación especifica. Por ejemplo, la prorroga Answer (de prioridad 1) y, a continuacion, Hangup (de prioridad 2): exten => 123,1, Answer() exten => 123,2, Hangup () El punto clave a recordar aquí es que una extensión de Asterisk sigue las prioridades en orden. No numerar las prioridades En emisiones mayores de Asterisk, la numeración de las prioridades ha causado muchos problemas. Imagine tener una extensión que tenia 15 prioridades, y luego tener que añadir algo en la 8. Todas las prioridades desde la posterior tendrían que ser modificadas manualmente. Asterisk no maneja los pasos que faltan o renombra prioridades, y la depuración de estos tipos de errores es inútil y frustrante. A partir de la versión 1.2, en Asterisk se 113

aborda este problema introduciendo el uso de la prioridad “n”, que significa "próximo". Cada vez que encuentra una prioridad n, Asterisk calculará el próximo número de prioridad aumentando 1 la prioridad anterior.Esto hace que sea más fácil hacer cambios en su Dialplan, al no tener que reenumerar en sus cambios. Tener en cuenta que la prioridad 1 sí que es necesaria poner. exten => 123,1, Answer() exten => 123, n, Hangup() Prioridades con etiquetas (label) A partir de la versión de Asterisk 1.2, una práctica común es asignar etiquetas de texto a las prioridades. Esto es para asegurar que se puede hacer referencia a una de las prioridades sin saber su número ya que se ha utilizado la numeración con “n”. Para asignar una etiqueta de texto a una prioridad, solo tiene que añadir la etiqueta entre paréntesis después de la prioridad, de esta forma: exten => 123, n(label), aplicacion() Un error muy común al escribir las etiquetas es insertar una coma entre n y el paréntesis de esta forma: exten => 123, n,( etiqueta), aplicacion() Aplicaciones Las aplicaciones son las acciones del Dialplan. Cada aplicación realiza una acción sobre el canal actual, tales como la reproducción de un sonido, la aceptación de tonos de entrada, marcar un canal, colgar la llamada, y así sucesivamente. En el ejemplo se presentaron dos aplicaciones sencillas: Answer() y Hangup(). Algunas aplicaciones, como Asnwer() y Hangup(), no necesitan instrucciones para hacer su trabajo. Otras aplicaciones requieren información adicional. Estas piezas de información, llamadas argumentos, pueden ser transmitidas a las aplicaciones para afectar la forma en que realizan sus acciones. Para pasar argumentos a una aplicación, entre paréntesis y separados por comas. Ocasionalmente, también puede aparecer el carácter tubería (|) que se utiliza como un separador entre argumentos, en lugar de una coma. Algunas aplicaciones básicas son: -

Wait (n): Espera n segundos, ignorando los dígitos marcados durante. WaitExten(n):Espera n segundos, pero gestionando los dígitos marcados. WaitMusicOnHold(n):Reproduce música en espera durante n segundos. Answer(): Acepta la llamada entrante por el canal. 114

-

-

Busy(): Envía la señal de ocupado al origen. Hangup(): Cuelga la llamada. Ringing(): Envía la señal de tono de llamada. Dial ( tipo/identificador,timeout,opciones,url ): Aplicación para llamar. Goto (contexto, extension, prioridad): Salta al contexto, extensión y prioridad del argumento. GotoIf ( condicion ? prioridad1 : prioridad2 ): Salta a la prioridad1 si la condición se cumple. Salta a la prioridad2 si la condición no se cumple. GotoIfTime(||| ?[[context|]exten|]priority): Igual que GotoIf teniendo en cuenta la fecha y hora actual. PlayBack (fichero ): Reproduce el fichero, continua la ejecución cuando finaliza. Background (fichero): Reproduce el fichero, pero continua la ejecución inmediatamente. SayDigits ( dígitos): Reproduce los dígitos

Para ver la lista completa de las aplicaciones de Asterisk. Uso de variables Las variables pueden ser utilizadas en el Dialplan de Asterisk para ayudar a reducir la mecanografía, añadir claridad, o añadir características adicionales a la lógica de Dialplan. Para hacer referencia a la variable, simplemente escriba el nombre de ella, si lo que desea hacer es referencia a su valor, usted debe escribir un signo de dollar. exten => 555,1, Dial ($ {JUAN}) : Al marcar 555 llamariamos por el canal y al numero establecido en esa variable. Tipos de variables : Variables globales: Como su nombre indica, las variables globales se aplican a todas las extensiones en todos los contextos.Las variables globales deben ser declaradas en el contexto [globales], en el inicio del archivo extensions.conf, aunque también pueden ser definidas mediante programación, utilizando la GLOBAL (). [globals] JUAN = Zap / 1 [empleados] exten => 124,1, Set (GLOBAL (GEORGE) = SIP / George)

115

Variables de canal: Una variable de canal es una variable que se asocia sólo con una llamada en particular. Hay muchas variables predefinidas de canal disponibles para su uso en el Dialplan, que se explican en el channelvariables.txt en usr/src/asterisk/asterisk1.4.26.1/doc. Se definen a través de la aplicación SET() : exten => 125,1, Set (MAGICNUMBER = 42) Algunas de las variables más importantes son: -

${CALLERID}: Caller ID actual, nombre y número. ${CONTEXT}: Contexto actual. ${EXTEN}: Extensión actual. ${CHANNEL}: Canal actual. ${DIALSTATUS}: Estado de la llamada: UNAVAILABLE, CONGESTION, BUSY, NOANSWER, ANSWERED, CANCEL o HANGUP. ${DATETIME}: Hora actual.

Variables de entorno Variables de entorno son una forma de acceder a variables de entorno Unix en Asterisk. Estas son referenciadas mediante la aplicación ENV() . La sintaxis : ENV {$ (var)}, donde var es la variable de entorno Unix que desee referenciar. Las variables de entorno no son comúnmente utilizadas en Dialplan´s de Asterisk, pero están disponibles si las necesitas. Coincidencia de patrones Los patrones permiten crear una extensión en su Dialplan que coincide con muchos números diferentes. Sintaxis: Los patrones siempre empiezan con un guion bajo (_). Después puede utilizar uno o más de los siguientes caracteres: X : Coincide con cualquier digito del 0 al 9. 116

Z : Coincide con cualquier digito del 1 al 9. N : Coincide con cualquier digito del 2 al 9. [1,5-7] : Coincide con un solo digito a partir de la serie de dígitos especificado. En este caso, el patrón coincide con 1, 5,6, o 7. . (punto) : Comodín , coincide con uno o mas caracteres, no importa lo que son. ! (bang) : Comodín , coincide con cero o mas caracteres, no importa lo que son. Esta expresión nunca  “ _.” De hecho, Asterisk le avisara si intenta volver a utilizarlo. En cambio, utilizar este si es posible: _X. Para utilizar la concordancia mediante patrones en su Dialplan, simplemente poner el patrón en el lugar de la extensión (nombre o número): exten => _NXX, 1, PLayback (thankyou) : Al marcar un número entre 200 y 999 º se escucha el sonido de thankyou.gsm. Otra cosa importante a saber acerca de patrones de Asterisk es que si se encuentra más de un patron que coincida con lo pulsado, se utilizará el más especifico. Supongamos que ha definido los siguientes dos modelos, y marca 555-1212 . exten => _555XXXX, 1, Playback (digitos / 1) exten => _55512XX, 1, Playback (digitos / 2) En este caso, la segunda prorroga, porque es mas especifica. Usando la variable de canal $ (EXTEN): exten => _XXX, 1, SayDigits ($ {EXTEN}) ; la aplicacion SayDigits () muestra los 3 ;últimos dígitos marcados. ${EXTEN: x} x es el lugar donde se desea que la cadena volvio a empezar, de izquierda a derecha. EXTEN es 95551212 ${EXTEN:1} = 5.551.212 ${EXTEN: x: y}

117

x es el inicio , e y es el numero de dígitos a regresar. EXTEN es 94169671111 $ {EXTEN:1:3} = 416. $ {EXTEN:4:7} = 9671111. $ {EXTEN:-4:4} = 1111 (comenzaría cuatro dígitos desde el final). Esta es una construcción muy potente, pero la mayoría de estas variaciones no son muy comunes en uso normal. Manipulación de expresiones y operadores Expresiones básicas Las expresiones son combinaciones de variables, operadores, y cadenas de valores para producir un resultado. Una expresión puede mostrar valores, alterar las cadenas, o realizar cálculos matemáticos. Cada una de estas expresiones tiene un resultado o valor, dependiendo del valor de las variables o las cadenas. Sintaxis: $ [expresion] Ejemplos: $ [$ {COUNT}+ 1] $ [$ {COUNT} / 2] Operadores Símbolos que permiten manipular las variables. Operadores booleanos Estos operadores evalúan si la expresión es cierta o no.  expr1 | expr2: Este operador (llamado "or" o "pipe") devuelve 1 si la expr1 es verdadera (no es una cadena vacía ni cero). De lo contrario, devuelve la evaluación de expr2. expr1 & expr2: Este operador (llamado "and") devuelve 1 si las dos expresiones son verdaderas (es decir, ninguna expresión es cadena vacía o cero). De lo contrario, devuelve 0. expr1 {=,>,> =, sip show peers *CLI>iax show peers Buzones de voz (Voicemail) Uno de los servicios más interesantes de las PBX, Asterisk implementa un sistema de buzones de voz bastante flexible. Algunas características de este servicio: -

Ilimitados contenedores voicemail con protección de password, contenidos en carpetas. Saludos diferentes para los estados busy y unavailable. Saludos configurables. Habilidad de asociar un telefono con varios voicemail's y un voicemail con varios telefonos. Posibilidad de envio al correo electrónico con el archivo de sonido como adjunto.

La configuración se hará en el archivo voicemail.conf (en /etc/asterisk/). Aquí deberemos definir los contextos y contenedores voicemail. A continuación vamos a ver una configuración básica. La configuración avanzada se encuentra en el apartado “Configuración de Asterisk”. Creación de mailbox En el contexto de voicemail definimos diferentes mailbox cuya sintaxis es: mailbox => password,name[,email[,pager_email[,options]]] En la que: mailbox: Este es el número de buzón. Por lo general, se corresponde con una extensión. password: Esta es la contraseña numérica que el propietario del buzón usara para acceder a su buzón de voz. name: Este es el nombre del propietario del buzón. email: Esta es la dirección de correo electrónico del propietario del buzón. 121

Asterisk puede enviar notificaciones de voz a la casilla de correo. pager_email: Esta es la dirección de correo electrónico del pager o teléfono celular. Asterisk puede enviar un breve mensaje de notificación de voz a la dirección de correo electrónico especificada. options: Este campo es una lista de opciones que establece el propietario del buzón de la zona horaria y redefiniciones de configuración de voz. Hay nueve opciones validas: attach, serveremail, tz,ssaycid, review,operator, callback, dialout,y exitcontext. Estas opciones deben estar en pares option = value , separados por el carácter tubería (|). La opción tz establece la zona horaria del usuario a una zona horaria previamente definida en el contexto [zonemesages] en voicemail.conf, y las otras ocho opciones son sobre el voicemail. Un ejemplo de mailbox podría ser algo como esto: 101 => 1234,David,[email protected],tz=central|attach=yes Añadir el voicemail al Dialplan Para ello, vamos a utilizar VoiceMail(). VoiceMail() : aplicación que envía al llamante un mensaje. El buzón debe ser especificado como mailbox@context (el contexto por defecto es default). Si se utiliza la letra b, la persona que llama escuchara el mensaje de ocupado. Si se usa la letra u, la persona que llama escuchará el mensaje de no disponible (si existe). exten => 101,1,Dial(${JOHN},10) ; después de 10 segundos pasa al voicemail exten => 101,n,VoiceMail(101@default,u) Acceso al voicemail Los usuarios pueden recuperar sus mensajes de correo de voz, cambiar sus opciones de voz, y grabar sus saludos de voz utilizando el VoiceMailMain(). exten => 700,1, VoiceMailMain() :accedes al buzon de voz del llamante. Marcación por nombre de directorio Una última característica del sistema de correo de voz de Asterisk es la de marcación por nombre de directorio. Esto se crea con Directory(). Esta aplicación utiliza los nombres definidos en los mailbox de voicemail.conf . Sintaxis: Directory (voicemailcontext,context,options)  voicemailcontext: El contexto voicemail para leer los nombres. 122

 context: El contexto opcional del dialplan para llamar al usuario.  options: Por defecto se busca el usuario por apellido. Con la opción “f” se busca por nombre. Con la opción “e” se busca por extensión. Se solicita al usuario que introduzca por teclado las 3 primeras letras del nombre/apellido/extension del empleado. Audio en Asterisk Reproducción El audio en Asterisk juega un papel importante. En el mundo de las PBX tradicionales es habitual que mientras el llamante no llega a su destino se le entretenga con musica en espera. Ademas la reproduccion de audio es necesaria para la construccion de sistemas IVR. Asterisk, en su instalacion, facilita algunos sonidos comunes para, por ejemplo, el buzon de voz, o para notificar fallos de la red (el usuario no se encuentra, etc), aunque podemos llevar esto mucho mas alla, mediante Festival y otras aplicaciones. Música en Espera Asterisk puede poner un canal dado en espera ('HOLD'), principalmente en las siguientes situaciones: - Durante una transferencia. - Durante una llamada si se ha especificado el parámetro 'm', que indica que no se oirá tono de llamada sino música en espera. - Durante una espera en el parking. - Si la aplicación MusicOnHold o WaitMusicOnHold ha sido llamada desde el DialPlan. - Si el destino de la llamada ha solicitado explícitamente que la llamada sea puesta en espera. Es posible tener distintos tipos de música en espera. La música en espera se configura en musiconhold.conf en /etc/asterisk/. La configuración de este archivo se encuentra en el apartado “Configuración de Asterisk”. Aplicación Festival La aplicación Festival en un TTS, es decir un sistema de síntesis de voz. Si queremos crear un menú de voz, saludos de bienvenida, leer archivos de texto, entonces es que lo necesitamos. Para que Festival se integre en Asterisk, antes de compilar la centralita tenemos que instalar dos paquetes: 123

yum install festival festival-devel Para averiguar que el modulo de festival esté correctamente cargado en asterisk, desde la consola de la centralita: *CLI> module unload app_festival == unregistered application 'festival' *CLI> module load app_festival == parsing '/etc/asterisk/festival.conf': == found == registered application 'festival' loaded app_festival => (simple festival interface)

Si aparece algún tipo de error significa que el modulo no ha sido compilado y tenemos que volver a la compilación de Asterisk. Festival tiene como idioma predefinido el ingles. Para agregarle el idioma español hay que seguir estos pasos: cd /usr/share/festival/voices wget http://www.voztovoice.org/tmp/festival-spanish.zip yum install unzip unzip festival-spanish.zip Ahora modificamos el archivo de configuración de festival nano /usr/share/festival/festival.scm añadimos estas líneas: ;(language__spanish) (set! voice_default 'voice_el_diphone) (define (tts_textasterisk string mode) "(tts_textasterisk string mode) apply tts to string. this function is specifically designed for use in server mode so a single function call may synthesize the string. this function name may be added to the server safe functions." (let ((wholeutt (utt.synth (eval (list 'utterance 'text string))))) (utt.wave.resample wholeutt 8000) (utt.wave.rescale wholeutt 5) (utt.send.wave.client wholeutt)))

Guardamos el archivo y modificamos el archivo de configuración de festival en asterisk: nano /etc/asterisk/festival.conf estas son la líneas que hay que modificar/activar: 124

[general] host=localhost port=1314 festivalcommand=(tts_textasterisk "%s" 'file)(quit)\n

Guardamos el archivo y reiniciamos Asterisk. Ahora vamos a añadir unas cuantas líneas en extensions.conf. nano /etc/asterisk/extensions.conf exten => 650,1,Answer() exten => 650,n,Festival(lo conseguiste!!!) exten => 650,n,Hangup() Codecs y carga de CPU En principio Asterisk puede reproducir de muchisimos codecs (GSM,G711,G729,MP3) y de archivos de audio sin codificar (WAV), siempre que nos sea posible deberiamos pasar cualquier archivo que queramos reproducir a WAV, pues decodificar es un trabajo que puede cargar mucho a la CPU con cada reproduccion. Aunque tambien es cierto que un archivo codificado ocupa bastante menos que uno que no lo está, pero sacrificamos espacio por cantidad de llamadas que pueden ser atendidas. ¿Qué uso se da de los Códecs de audio en Asterisk? • •

Sirven para digitalizar la voz humana. Cuando dos dispositivos van a establecer una comunicación, acuerdan el códec a utilizar.

Factores importantes a la hora de seleccionar un códec: – Calidad de audio. – Coste computacional. – Gasto de ancho de banda. Comparación de ancho de banda utilizado por los códecs:

Códec & Bit Rate (Kbps)

Bandwidth Ethernet(Kbps)

G.711 (64 Kbps)

87.2 Kbps

G.729 (8 Kbps)

31.2 Kbps

G.723.1 (6.3 Kbps)

21.9 Kbps

G.723.1 (5.3 Kbps)

20.8 Kbps

G.726 (32 Kbps)

55.2 Kbps 125

G.726 (24 Kbps)

47.2 Kbps

G.728 (16 Kbps)

31.5 Kbps

Los proveedores VoIP suelen trabajar en G.729, que consume muy poco ancho de banda y no sería viable utilizar G.711 por ejemplo. El códec G.729 no es libre, cada licencia de G.729 para un canal es de 10$ pero hay una implementación que puede utilizarse con fines no lucrativos o educacionales, tanto de este códec como del G.723.1, en el siguiente enlace: http://asterisk.hosting.lv/. Para comprobar cuántos codecs soporta Asterisk : *CLI> core show codecs audio Para comprobar el coste de transcoding : *CLI> core show translation Asterisk no soporta por defecto la reproduccion de mp3, puedes activarla compilando el paquete de addons y activando el soporte para MP3, o instalando el paquete de tu distribucion. Definir un idioma Un idioma en Asterisk es un conjunto de sonidos colocados en el directorio de sonidos de Asterisk (revisa /etc/asterisk/asterisk.conf). Se puede definir un lenguaje en el archivo de configuracion del canal (por ejemplo sip.conf o iax.conf) o utilizando Set(CHANNEL(language)=idioma) que cambia el idioma para la llamada en curso. Esto permite que aplicaciones que reproducen sonidos, como Playback(), SayDigits() o SayNumber() puedan hacerlo en el idioma del llamante. Es bastante comun definir un idioma global (español , por ejemplo) y para ciertos contextos, (entrantes-internacionales) ponerlo a un idioma más apropiado como ingles. Castellanizar Asterisk Por defecto las voces que incluye Asterisk están en Inglés, el lenguaje universal, pero a veces para la perfecta compresión de algunas de las diversas funcionalidades de Asterisk, como el buzón de voz, es necesario tener las voces en Castellano. Con estos sencillos pasos lo conseguiremos: •

Añadir lo siguiente al fichero asterisk.conf (en /etc/asterisk/): [options] 126

languageprefix = yes •

Incluir la línea “language=es” en los ficheros de configuración. (sip.conf, iax.conf, extensions.conf, voicemail.conf,...,diposnibles en /etc/asterisk/).



Editar el fichero indications.conf, poniendo “country=es”.



Ficheros de sonido en castellano: -

http://www.voipnovatos.es/voces/ Descargamos en formato gsm, alaw, g729, ... Editar árbol de directorios (todo cuelga de “es”) Copiar a /var/lib/asterisk/sounds/es/

Grabación Para la grabación no hace falta ninguna aplicación especial, podríamos coger cualquier aplicación de audio como Audacity o una grabadora de sonidos. No obstante, Asterisk incorpora una serie de aplicaciones para la grabación en el sistema telefónico. Esto puede utilizarse para crear una macro que reproduzca un mensaje de bienvenida personalizado por el usuario. Aplicación para la grabación La aplicacion Record() graba en un archivo la voz del llamante. Sintaxis: Record(nombre.formato[,silencio,duracion_maxima,opciones]) Podemos utilizar %d en el nombre del fichero, así se utilizará un índice autoincremental, para no sobrescribir grabaciones. El nombre del fichero queda guardado en la variable ${RECORDED_FILE}. exten => ext1,n,Record(sonido-asterisk%d.alaw) Legalidad en la grabación de llamadas La legislación actual en España determina que: • •

Es ilegal grabar o escuchar una conversación en la que uno no es parte, y los demás desconocen la grabación o escucha. Es legal grabar una conversación en la que uno es parte, pero es ilegal facilitar esa grabación a un tercero que no haya sido autorizado por los que participaron en la conversación.

El Tribunal Constitucional lo deja bien claro en su sentencia del 29 de Noviembre de 1984,STC 11/1984,cuando establece, entre otras consideraciones que:

127

“Quien graba una conversación de otros atenta, independientemente de toda otra consideración, al derecho reconocido en el art. 18.3 CE; por el contrario, quien graba una conversación con otro no incurre, por este solo hecho , en conducta contraria al precepto constitucional citado.” Si uno no es parte en la conversación estará vulnerando un derecho fundamental, reconocido en el artículo 18.3 de la Constitución, pero quien graba las palabras que un tercero le dirige no está realizando por ese sólo hecho ilícito alguno. Cuestión diferente sería si esa conversación se divulga y la intromisión que pueda suponer en la esfera de la persona cuyas palabras se han recogido. Para las grabaciones ajenas, el Código Penal castiga con prisión de uno a cuatro años y multa de doce a veinticuatro meses. El artículo 197 castiga a quien para descubrir los secretos o vulnerar la intimidad de otro, sin su consentimiento, utilice artificios técnicos de escucha, transmisión, grabación o reproducción del sonido o de la imagen, o de cualquier otra señal de comunicación. Se plantearon a la Agencia Española de Protección de Datos diversas cuestiones relacionadas con la recopilación por parte de una empresa de diversos registros de voz, con la finalidad de elaborar un programa de “Software” de reconocimiento de voz. La recopilación tendría lugar mediante la realización de llamadas telefónicas efectuadas desde un Estado miembro de la Unión Europea. En relación con esta cuestión, se considera que “siempre que quien haya de realizar el tratamiento tenga conocimiento directo o indirecto de quién es la persona cuya voz está siendo objeto de grabación, así como de su número de teléfono, la grabación efectuada tendrá la naturaleza de dato de carácter personal” y el tratamiento efectuado estará sometido a la normativa de protección de datos ,al incorporarse al mismo los datos identificativos del sujeto (nombre y apellidos), su número de teléfono y su voz, conforme a lo dispuesto en el artículo 3.a) de la LOPD y el artículo 1.4 del Real Decreto 1332/1994, del 20 de Junio, que indica que dichos datos podrán proceder de información acústica. Macros Las macros son una herramienta excelente para ahorrarte repetición de código, y facilidad de cambio y adaptación para tu Dialplan. Si tuviera que repetir para un centenar de usuarios las líneas siguientes supondría una gran cantidad de copy/paste. Sería más sencillo un cambio en la manera en que trabaja las extensiones. exten => 101,1,Dial(${JOHN},10) exten => 101,n,VoiceMail(101@default) exten => 101,n,Hangup() . Puede definir una macro que contiene una lista de pasos a seguir. Todo lo que necesita para el cambio es la macro, y las referencias. Si está familiarizado con la programación, 128

usted reconocerá que las macros son similares a las subrutinas en muchos lenguajes de programación modernos. Definición de macros Los contextos de toda macro deben ser “[macro-nombreMacro]“. Esto les distingue de los contextos ordinarios y facilita su llamada. Los comandos de la macro se construyen casi igual a cualquier otra cosa en el Dialplan, el único factor limitante es que solo se usan en la extensión “s”. Llamadas a macros Para utilizar una macro en nuestro dialplan, utilizamos Macro() . exten => 101,1, Macro (nombreMacro) Macro () define varias variables especiales para nuestro uso. Son: ${MACRO_CONTEXT}: El contexto original en el que se llama a la macro. ${MACRO_EXTEN}: La extensión original en la que se llama a la macro. ${MACRO_PRIORITY}: La prioridad inicial en el que se llama a la macro. ${ARG n }: El enésimo argumento pasado a la macro . Aplicando al ejemplo: exten => 101,1, Macro (voicemail) [macro-voicemail] exten => s,1,Dial(${JOHN},10) exten => s,n,VoiceMail(${MACRO_EXTEN}@default) exten => s,n,Hangup() Si todo el que llame va a realizar la llamada a través del mismo canal y extensión que define la variable JOHN ya hemos terminado sino es necesario el uso de argumentos. Utilización de argumentos en macros Vamos a pasar el canal como argumento: exten => 101,1,Macro(voicemail,${JOHN}) [macro-voicemail] exten => s,1,Dial(${ARG1},10) exten => s,n,VoiceMail(${MACRO_EXTEN}@default) exten => s,n,Hangup()

129

Uso de la base de datos de Asterisk (AstDB) Asterisk proporciona un poderoso mecanismo para el almacenamiento de valores de llamada con el uso de una base de datos interna llamada AstDB. Esta no es una relacional tradicional, como MySQL, SQLServer y otras, es del tipo Berkeley DB Version 1. Nos puede ser de utilidad para sistemas pequeños. Existen dos entidades: familias(Families) y llaves(Keys), cada key esta asociada a una Family, si un Key toma un valor nuevo, el anterior es superpuesto por este nuevo valor. Almacenamiento de datos en AstDB Para almacenar un nuevo valor en la base de datos de Asterisk, utilizamos la aplicación Set(), pero en lugar de usarlo para establecer un canal de la variable, la usamos para definir una variable AstDB. Para asignar la clave count en la familia test con el valor 1: exten => 456,1,Set(DB(test/count)=1) También puede guardar los valores de Asterisk con la línea de comandos CLI, ejecutando el comando database poniendo el valor de la clave de la familia. *CLI>database put family key value. *CLI>database put test count 1 Recuperación de datos de AstDB Para recuperar un valor de AstDB y asignarlo a una variable, usamos la aplicación Set () de nuevo. Vamos a recuperar el valor de count de la familia test,asignando a una variable llamada COUNT y, a continuación, decimos el valor: exten => 456,n,Set(COUNT=${DB(test/count)}) exten => 456,n,SayNumber(${COUNT}) También puede comprobar el valor de una clave desde la línea de comandos de Asterisk utilizando el comando: database get family key database get test key Para ver todo el contenido de AstDB, se utiliza el comando: database show

130

Borrado de datos de AstDB Hay dos maneras de borrar los datos de la base de datos de Asterisk. Borrar solo la llave devolviendo su valor antes de eliminarla: DB_DELETE(). exten => 457,1,Set(COUNT= ${DB_DELETE(test/count)}) En el CLI : *CLI>database del key Borrar la familia y la clave: DBdeltree(family). exten => 457,1, DBdeltree(test) En el CLI: *CLI>database deltree family . Transferencias de llamadas La configuración de la transferencia de llamadas entre diversos usuarios, independientemente de la tecnología que usen se realiza en el archivo features.conf en /etc/asterisk/. Hay que especificar en dicho archivo las siguientes características: 

blindxfer => secuencia : Permite realizar una transferencia de llamada a ciegas marcando la secuencia.  atxfer => secuencia : Permite realizar una transferencia de llamada atendida. El origen es puesto en espera, mientras el destino se comunica con el nuevo destino para anunciarle la llamada. Si el nuevo destino cuelga, la llamada no se transfiere.  pickupexten => secuencia : Especifica la secuencia a marcar para coger una llamada de alguien del mismo callgroup. Para poder realizar transferencias vía PBX, Asterisk debe estar a la escucha de los tonos configurados, para ello la aplicación Dial debe haber recibido como parámetro 't' para permitir la transferencia en destino o 'T' para hacerlo en origen (o ambas). CallParking El callparking o aparcamiento de llamadas es una funcionalidad que permite transferir la llamada a un 'parking' virtual. Pudiendo colgar sin que la llamada origen sea desconectada de Asterisk, ya que se encontrará aparcada. Para operar, el usuario transfiere la llamada a una extensión especial (parkext en features.conf), Asterisk aparca la llamada y anuncia la posición en el parking.

131

Cualquier usuario que tenga incluido en su contexto el contexto especial 'parkedcalls' puede recuperar la llamada aparcada llamando directamente a su posición en el parking. Los parámetros para el callparking son controlados con la configuración del features.conf. En el contexto [general] del features.conf hay 4 caracteristicas relacionadas con el callparking: •

parkext: Esta es la extensión del parking. Al transferir una llamada a esta extensión se llama a la posición determinada del aparcamiento .Por defecto es 700.



parkpos: Esta opción define el número de aparcamientos. Por ejemplo, entre 701-720 crea 20 aparcamientos numeradas del 701 al 720.



context: Este es el nombre del contexto del aparcamiento.Para poder aparcar llamadas, debe incluir este contexto.



parkingtime: Si se establece, esta opción controla el tiempo(en segundos) que una llamada puede permanecer en el aparcamiento. Si la llamada no está recogida en el tiempo especificado, se llama de nuevo.

Es necesario reiniciar (restart) Asterisk no vale con hacer reload. También es necesario que el usuario sea capaz de transferir las llamadas a la extensión del parking, debe estar seguro de la utilización de la "t" y / o T del Dial(). Ejemplo: extensions.conf [incoming] include => parkedcalls exten => 103,1,Dial(SIP/Pedro,,tT) exten => 104,1,Dial(SIP/John,,tT) features.conf [general] parkext => 700 parkpos => 701 context => parkedcalls parkingtime => 120 [featuremap] blindxfer => # disconnect => * 132

atxfer => *2 parkcall => *7 Para visualizar estos datos desde la linea de commandos CLI: *CLI> show parkedcalls Para ilustrar como usar el Call Parking, supongamos que David marca la extensión 103 para hablar con Pedro. Después de un tiempo, Pedro transfiere la llamada a la extensión 700 aparcando la llamada de David en la posición 701. Pedro marca la extensión 104 para llamar a John , y le dice que el que la llamada de David se encuentra en la extensión 701. John entonces marca de extensión 701 y comienza a hablar David. CallPickup CallPickup es la auto-transferencia de un teléfono que esta sonando, en otras palabras, el hecho de poder descolgar y responder a la llamada entrante a un teléfono o grupo de teléfonos determinado desde un tercer teléfono que no está sonando. La configuración para el 'Callpickup' se configura en features.conf. En cada usuario de la centralita se definen estos dos parámetros: •

callgroup: Toda llamada que entra a una extensión determinada pertenece al/los callgroups de la extensión.



pickupgroup: Es el/los callgroups de llamadas entrantes en los que el usuario puede hacer 'pickup'.

Hay dos tipos de callpickup: -

Group callpickup: Permite que descuelgues cualquier llamada de alguien de mismo grupo que tu. Para utilizar esta funcionalidad la secuencia a marcar suele ser *8# o *8.

-

Directed pickup: Permite que descolgar una llamada según una extensión especifica, suena el telefono y si descuelgas y marcas una secuencia más tu extensión se transfiere la llamada a tu extensión.

Ejemplo: features.conf [general] ……………. pickupexten=*8 …………… 133

sip.conf [100] ; 100 puede coger llamadas de 101 ya que pickupgroup abarca el ; callgroup de 101 ……… callgroup=1 pickupgroup=1-3 [101] ;101 tambien puede coger llamadas de 100 ………. callgroup=2 pickupgroup=1 Para ver estos datos desde el CLI: *CLI>feature show Manejo de Colas Una llamada entrante puede ser enviada a una cola de llamadas, que será distribuida entre los agentes disponibles, miembros que contestan las llamadas. Las colas se utilizan mucho en entornos tipo 'Call Center', con los canales tipo de Agente (que hacen 'login en el sistema'). El sistema de colas se compone de: -

Llamadas entrantes que son ubicadas en una cola.

-

Miembros que contestan las llamadas en la cola

-

Una estrategia sobre cómo manejar la cola y repartir las llamadas entre los miembros.

-

Música que se reproduce durante la espera en la cola.

La configuración de las colas se define: -

Estáticamente: en el archivo queues.conf

-

Dinámicamente: la configuración se almacena en una BD, “disponibilizando” los cambios sin necesidad de realizar un reload.

La configuración de los agentes se define en el archivo agents.conf. Los agentes atienden las llamadas de una cola específica. Un agente debe realizar un login (llamando a una extensión especial que contiene la aplicación AgentLogin()) indicando que está listo para tomar llamadas. También existe

134

el concepto de agente dinámico por si cualquier usuario quiere agregarse a una cola. Para esto se utilizan las aplicaciones AddQueueMember() y RemoveQueueMember(). Los miembros son aquellos canales disponibles que están activamente atendiendo la cola. Pueden ser tanto agentes como también canales regulares (SIP/105). Las llamadas son distribuidas entre los miembros de una cola siguiendo alguna de las siguientes estrategias: -

ringall: hace sonar todos los canales disponibles hasta que alguno responda (configuración por defecto).

-

roundrobin: hace sonar cada agente disponible por turnos.

-

leastrecent: hace sonar el agente que es menos recientemente llamado por esta cola.

-

fewestcalls: hace sonar el agente con la menor cantidad de llamadas completas.

-

random: hace sonar una interfaz al azar.

-

rrmemory: igual que el round robin pero recuerda cual fue el último teléfono que atendió una llamada y continúa con el siguiente.

Cada agente tiene lo denominado Penalty(penalidad) de manera que se derivan las llamadas (según la estrategia definida) a los agentes con el menor valor de penalidad. En el caso de estar todos ocupados, se continúa con la siguiente penalty y así sucesivamente. Para establecer esto en los agentes estaticos en queues.conf: member => SIP/3000,1 member => SIP/3001,2 Si hay agentes dinamicos ellos tienen penalidad 1, a no ser que se les asigne otra al agregarse a la cola: exten => 888,1,AddQueueMember(davidqueue||3) ;penalidad 3 Si se asignan a dos agentes la misma penalidad sonarian los dos si hay una llamada. También es posible asignar a cada llamada entrante una Priority(prioridad) permitiendo situarla en un lugar más adelante de la cola (no siempre al final), por ejemplo si es un cliente importante adelantarle en la cola. Por defecto todas tienen prioridad 0 (estrategia FIFO (First In First Out)). Si queremos que cierta llamada sea adelantada en la cola deberemos modificar la variable de prioridad , QUEUE_PRIO.

135

exten => 101,1,Playback(bienvenido) exten =>101,n,SetVar(QUEUE_PRIO=10) exten =>101,n,Queue(davidqueue) Es posible que un miembro de una cola en determinado momento quiera no responder llamadas de esta, esto es posible hacerlo de dos formas: • Con las aplicaciones de Pausa: exten => 333,1,PauseQueueMember(davidqueue|SIP/100) exten => 334,n,UnpauseQueueMember(davidqueue|SIP/100) • Opcion de TimeOut : Cuando no se contexta una llamada se entra en pausa automaticamente (poniendo en el contexto de la cola “autopause=yes”). Las aplicaciones principales relacionadas con las colas, utilizadas en extensions.conf: -

Queue(): aplicación utilizada para encolar una llamada (toma como parámetro las colas definidas en queue.conf). exten => 1234,n,Queue(ventas|t|||45|)

-

AddQueueMember(cola): agrega dinámicamente un miembro a la cola.

-

RemoveQueueMember(cola): remueve dinámicamente un miembro de la cola.

-

PauseQueueMember(cola|miembro): Pone en pausa al miembro en la cola.

-

UnpauseQueueMember(cola|miembro) : Reactiva al miembro en la cola.

-

AgentLogin(): login de un agente a una cola.

Comandos relacionados de la CLI: Mostrar los agentes : *CLI>show agents Lista de todas las colas: *CLI>show queues Muestra los datos de una cola en particular: *CLI>show queue nombrecola 136

Agrega un miembro a la cola: *CLI>queue add member nombremiembro Elimina un miembro de la cola : *CLI>queue remove member nombremiembro Un ejemplo del archivo queues.conf con una cola definida es: [general] ;Si usamos agentes dinamicos su configuración se guardara en la BD de Asterisk. De ;esta forma si Asterisk se vuelve a arrancar , cada agente será ;enrutado a su ;correspondiente cola. persistentmembers=yes ;Para mantener las estadísticas en la cola durante un “reload” keepstats=no [davidqueue] music=default strategy=ringall timeout=15 ;tiempo maximo de ring retry=5 ;tiempo de espera para intentar con otro miembro wrapuptime=0 ;tiempo de espera tras intentar con todos los miembros member => SIP /100,1 Algunas de las variables para obtener información de las colas son: •

QUEUE_MEMBER_COUNT(queue) : nº de miembros de una cola exten => 3001,1,Set(NUM = ${QUEUE_MEMBER_COUNT(davidqueue)}) exten =>3001,n,SayNumber(${NUM})



QUEUE_MEMBER_LIST(queue) :guarda los nombres de los miembros de la cola exten =>4001,1,Set(MEM=${QUEUE_MEMBER_LIST(davidqueue)}) exten =>4001,n,NoOp(MEM=${MEM})



QUEUE_WAITING_COUNT(queue): nº de personas esperando en la cola exten =>5001,1,Set(ESP=${QUEUE_WAITING_COUNT(davidqueue)}) exten =>5001,n,SayNumber(${ESP})

Registro de llamadas(CDR) Asterisk permite llevar un control exhaustivo de todas las llamadas que se han realizado o recibido. Este control es interesante para el propio control de facturación,

137

independientemente del proveedor y además permite realizar estadísticas. Dicho control se denomina CDR(Call Detail Record). El registro del CDR se escribe por defecto en el archivo: /var/log/asterisk/cdr-csv/Master.csv Tambien es posible almacenar los registros en una base de datos MySQL configurando el archivo cdr_mysql.conf en /etc/asterisk/, para configurar el CDR se hace en cdr.conf en la misma carpeta. Para confirmar el estado del CDR desde el CLI, se puede ejecutar: *CLI> cdr status Algunos de los campos más importantes son: • • • • • • • • • •

accountcode: código de la cuenta a utilizar. src: número del caller ID. dst: extensión destino. dcontext: contexto destino. start: comienzo de la llamada (fecha/hora). answer: respuesta de la llamada (fecha/hora). end: fin de la llamada (fecha/hora). duration: duración de la llamada en segundos, desde que fue discada hasta el corte. billsec: duración de la llamada en segundos, desde que fue atendida hasta el corte. disposition: estado de la llamada (atendida, no atentendida, ocupado, fallida).

Existen muchas aplicaciones que permite gestionar el CDR. Desarrollar una propia no es realmente muy complejo. Para la aplicación se utilizará Asternic CDR Reports de Nicolás Gudiño. Sala de conferencias Una conferencia en Asterisk permite que varias personas estén incluidas en una misma conversación, Asterisk trabaja esto de una manera fácil y flexible mediante las Aplicaciones MeetMe (conferencia,opciones,password) para crear conferencias y para contar los participantes MeetMeCount(conferencia,variable_contador). Algunas de las cosas que se pueden hacer en conferencias son: •

Crear passwords para salas de conferencias.

138



Tipos de conferencia (mute conference, lock conference, kick partipants).



Posibilidad de silenciar a todos los particiántes menos a uno, útil en caso de discursos de entrada o mensajes importantes.



Creación de conferencias estáticas o dinámicas.



Se puede limitar el número de participantes.

Las opciones de configuración para el sistema de MeetMe se encuentran en meetme.conf en la carpeta /etc/asterisk/. Dentro de la configuración, hay que establecer las salas de conferencias y definir un número opcional de contraseñas. (Si una contraseña esta definida aquí, será necesaria para acceder a esta sala para toda la conferencia). Definimos la sala de conferencias en la extensión 600 (en meetme.conf): [roms] conf => 600 Creamos una simple sala de conferencias utilizando la extensión 600,la opción i (que anuncia cuando la gente entra y sale de la conferencia), y una contraseña de 54321 en extensions.conf: exten => 600,1, MeetMe (600, i, 54321) Si usted pasa una variable como segundo argumento para MeetMeCount(), el numero de participantes se asigna a la variable, y la reproducción de estos cada vez que se añade uno se omite. Usted puede usar esto para limitar el número de participantes, de esta forma: ; Limitar la sala de conferencias para 10 participantes exten => 600,1,MeetMeCount(600,CONFCOUNT) exten => 600,n,GotoIf($[${CONFCOUNT} 600,n(meetme),MeetMe(600,i,54321) exten => conf_full,1,Playback(conf-full) IVR (Interactive Voice Response) IVR es el nombre de la tecnología que permite interactuar con un menú de voz utilizando un teléfono. Es relativamente fácil y sencillo, configurar un menú de ese tipo en Asterisk. Una vez hechas varias grabaciones de mensajes con la aplicación Record() como hemos comentado y haberlas guardado estos en /var/lib/asterisk/sounds/ se puede comenzar a configurar el IVR en extensions.conf. 139

Las ventajas que proporciona el sistema no reside solamente en la reducción de costes y en el incremento de la eficiencia del CallCenter sino que también:     

Ayuda a reducir los turnos de los operadores y sus costes asociados. Incrementa las horas de servicio. Disminuye la tasa de llamadas perdidas. Incrementa la disponibilidad de los operadores. Proporciona una tasa de re-direccionamiento solucionando un mayor número de primeras llamadas.  Mejora la flexibilidad para responder a las necesidades del cliente o a picos de llamadas.

El 95% del éxito del diseño de los sistemas IVR de Asterisk se basa en trabajar junto al cliente desarrollando casos de uso consistentes y probar (y rehacer) prototipos con usuarios finales "reales" (a los cuales, incluidos nosotros mismos, les fastidia "hablar" con una maquina). Si la transacción promedio es corta y amigable, la ventaja frente al acceso Web es que no todos tienen Internet en todo momento, aunque si un teléfono. El 5% restante es solo programación. Principales errores de "ergonomía":     

Menús demasiado largos. Los usuarios se pierden o no encuentran lo que necesitan. No comprenden cómo usar el sistema. Lógica confusa y "callejones sin salida". Suponer que el usuario conoce la "jerga" del negocio.

Principales errores de diseño:  Ineficiente recuperación ante fallos.  Falta de canales de atención suficientes.  Carencia de una salida hacia un operador humano. Resumen de algunos principios generales:  Los menús no tienen que reproducir la estructura organizativa o departamental de la empresa.  Si el servicio tiene alguna restricción, es preciso avisar al usuario antes de nada. Por ejemplo, en un servicio de compra de tarjetas de llamadas prepago, si se requiere que el usuario sea cliente, es preciso avisarle antes de nada.  Proporcionar solo la información que se necesita y de la forma más simple posible.  Diseñar para la mayoría de los usuarios evitando que tengan que recorrer opciones que solo interesan a unos pocos.

140

 Hacer que el sistema trabaje por el usuario, por ejemplo, no pidiendo el mismo dato varias veces y evitando preguntar información que el sistema puede conocer.  Ser consistente y no cambiar a menudo las opciones de los menús. Saludo inicial:  Debe haber una bienvenida breve: buenos días, buenas tardes...  No repetirlo si en algún momento el usuario vuelve al inicio. Es preciso evitar:  Mensajes promocionales: poner solo si el usuario los puede encontrar justificados y, sobretodo, han de ser breves permitiendo acceder a la información en aquel mismo momento.  Tener que pulsar la tecla * para saber si el terminal es de tonos (DTMF) o no.  Remitir al usuario a otro servicio. Menú principal:  El primer menú debe ser el principal a no ser que se tenga que pedirse identificación.  Máximo 20 segundos de duración total contando el saludo inicial y el menú principal. Identificación:  Pedir identificación sólo cuando sea necesaria.  Pedir el identificador más fácil de recordar: teléfono, DNI...  Gestionar el final de la entrada de datos por medio de timeout, no solicitar ningún tecleo adicional. Las opciones de navegación recomendables son:      

Volver atrás. Menú principal. Repetir. Ayuda (si lo necesita la aplicación). Si existe una opción de paso al operador, debe ser la última. No hay que cortar nunca la comunicación si el usuario se equivoca. Es preciso dar caminos alternativos.  Ordenar las opciones de las más específicas a las mas generales.

Preguntas Si/No:  Se usan para recuperar errores y para confirmar acciones. 141

 Tienen que ser preguntas directas que induzcan a decir de forma natural solo Si o No: Incorrecto: Por favor, confirme si su DNI es: XXXXXXXX Correcto: DNI: XXXXXXXX. ¿Es correcto?  Debe ser una única pregunta, no dos en una.  Si además de la pregunta hay texto informativo, poner la pregunta al final de la frase. Ejemplo: Para obtener más información sobre las condiciones del contrato, ¿desea que pase la llamada a un agente?. Discado automático (Auto-dial out) Los Call Files (.call) se utilizan para iniciar llamadas desde una aplicación externa. Son archivos de texto que al copiarse en el directorio /var/spool/asterisk/outgoing, Asterisk notará su presencia e inmediatamente activará la extensión en la prioridad especificada en el archivo .call. Generalmente, se combinan con el programador de tareas de Linux: el cron. Algunos ejemplos de uso son: soluciones de callback, despertador telefónico, anuncios automáticos. La estructura de un Call File es la siguiente: Channel: ; La extensión que queremos llamar. Callerid: ; El identificativo de llamada que queremos enviar a la ;extensión llamada. WaitTime: ; Cuantos segundos esperamos antes de considerar la ;llamada sin éxito. Maxretries: ; Numero de veces que intentaremos llamar la ;extensión RetryTime: ; Cuantos segundos debe esperar asterisk para volver a ; marcar Account: ; El nombre de la cuenta con la cual queremos grabar ; esta llamada (CDR) Una vez que la extensión llamada conteste tenemos que decirle a asterisk lo que tiene que hacer. Esto también se define en el mismo archivo. Hay dos opciones: •

Ejecutar una aplicación: Application: ; la aplicación que queremos utilizar Data:

; aquí podemos definir las opciones de la aplicación

142



Ejecutar un punto exacto del plan de llamadas (Dialplan): Context: ; El contexto en el dial plan Extension: ; La extensión que queremos usar en el contexto ; especificado. Priority:

; El numero de la prioridad o la etiqueta si definida

Setvar: ; Variables que se pueden necesitar en el ; contexto, extensión y prioridad que definimos. Ejemplo: En el siguiente ejemplo: se llama al 43424444 en el canal SIP y envía la llamada al contexto [mensajes-salida], extensión 84, Prioridad 1: - Archivo mensaje.call Channel: SIP/43424444 MaxRetries: 2 RetryTime: 60 WaitTime: 30 Context: mensajes-salida Extension: 84 Priority: 1 -

extensions.conf [mensajes-salida] exten => 84,1,Playback(anuncio) exten => 84,2,Playback(vm-goodbye) exten => 84,3,Hangup

Sistema de logs En el archivo /etc/asterisk/logger.conf se encuentra la configuración del sistema de logging de Asterisk. Los distintos niveles de información a capturar en los logs son: Verbose: mensajes generales sobre lo que está ocurriendo en el sistema (por ejemplo si el valor de verbosity es mayor a 3, muestra las instrucciones del plan de marcación). Debug: mensajes con información extendida, en general utilizados por programadores. Notice: notificaciones no críticas. Warning: mensajes de alerta posiblemente críticos. 143

Error: mensajes indicando que ocurrió algo grave. En el contexto [logfiles] del archivo logger.conf se indican los archivos y mensajes a loguear en c/u, la sintaxis es: archivo => nivel1,...,niveln Los archivos de log se crean por defecto en /var/log/asterisk/ (esto se puede cambiar /etc/asterisk/asterisk.conf). Ejemplos: debug => debug full => notice,warning,error,debug,verbose Para enviar a la consola, hay que definir el archivo especial console: console => notice,warning,error,debug También se pueden enviar al syslog: syslog.local0 => debug, warning, error, notice, verbose Configurando además en /etc/syslog.conf: local0.*@ip_servidor Los comandos relacionados con el manejo del log en el CLI son: Reabre los archivos de log del Asterisk y recarga la configuración del logger: *CLI>logger reload Rota los archivos de log y luego hace un logger reload. *CLI>logger rótate Cambia el nivel de información a mostrar en la consola. Por ej.: set verbose 999 *CLI>core set verbose ENUM y Asterisk ENUM (proviene de tElephone Number Mapping) o mapeo de números telefónicos, está constituido por una serie de protocolos que permiten crear una convergencia entre la red telefónica tradicional y Internet. Permite asociar (utilizando el protocolo DNS) un número telefónico a todas una serie de servicios típicos de la red internet (VoIP, correo electrónico, pagina web, etc.). ¿Cómo funciona?

144

Se ha creado una nueva jerarquía de dominios bajo el DNS e164.ARPA donde se almacenan los servicios asociados a un determinado numero telefónico. Un ejemplo: +5712345678  8.7.6.5.4.3.2.1.7.5.e164.arpa El servidor DNS (Name Authority Pointer o NAPTR) que alberga la entrada, tiene registrados los servicios (sip, mail, http) publicados para dicho número. Ejemplo de entrada en Bind: $ORIGIN 8.7.6.5.4.3.2.1.7.5.E164.ARPA. IN NAPTR 100 10 "U" "E2U+SIP" "!^.*$!SIP:[email protected]!" IN NAPTR 102 10 "U" "E2U+MAILTO" "!^.*$!MAILTO:[email protected]!" Prioridad 1: contactar vía SIP con [email protected]. Prioridad 2: contactar por correo con [email protected]. Como queda claro a través de este ejemplo una vez que tengamos estos datos podremos usarlos en nuestra centralita. Llamar directamente la SIP URI en lugar del número telefónico (ahorrando los costos de llamadas) o enviar un correo electrónico. Ejemplo: Llamada desde un teléfono IP al +34944991234 1) Consulta del teléfono al servidor DNS sobre la dirección 4.3.2.1.9.9.4.4.9.4.3.e164.arpa 2) El DNS responde: sip:[email protected] mailto:[email protected] 3) El teléfono llama a sip:[email protected] Si queremos hacer una prueba podemos registrar nuestro número telefónico y asociarlo a distintos servicios Internet a través de E164.org, un directorio ENUM publico. Utilización de ENUM en Asterisk: Primero tenemos que modificar el fichero enum.conf. [general] search => e164.arpa 145

search => e164.org h323driver => H323 Ponemos estas líneas que nos permitirán hacer búsqueda en la jerarquía DNS e164.arpa y e164.org. Guardamos los cambios y echamos una mirada a las funciones disponibles en Asterisk para hacer consultas a estos DNS: ENUMLOOKUP: nos permite hacer una consulta de los registros NAPTR asociados a un determinado número telefónico. ENUMQUERY: nos permite hacer una consulta de los registros NAPTR pero, al contrario de ENUMLOOKUP generará como resultado un ID que luego podremos usar con la función ENUMRESULT. ENUMRESULT: permite consultar los resultados generados por ENUMQUERY usando el ID creado por ENUMQUERY. Ejemplo: Vamos a construir nuestro plan de llamadas de modo que antes de llamar cualquier número (nacional o internacional) haga una consulta en ENUM para ver si es posible usar una SIP URI en lugar del número telefónico: exten => _00.,1,Set(Enum1=${ENUMLOOKUP(+${EXTEN:2},sip,c)}|counter=0) exten => _00.,2,GotoIf($["${counter}" _00.,3,Set(counter=$[${counter}+1]) exten => _00.,4,Dial(SIP/${ENUMLOOKUP(+${EXTEN:2},sip,,${counter})}) exten => _00.,5,GotoIf($["${counter}" _00.,6,Dial(SIP/MyproveedorVoIP/${EXTEN}) exten => _00.,7,Hangup DUNDI DUNDi ™ es un sistema peer-to-peer que permite localizar gateways para servicios telefónicos. A diferencia de los servicios centralizados tradicionales (como ENUM), es totalmente distribuido. No es en sí un protocolo VoIP de señalización. DUNDi se puede utilizar dentro de una empresa para crear una completa PBX federada con ningún punto de fracaso, y la posibilidad de añadir nuevas extensiones arbitrariamente. Diagrama DUNDI:

146

Hay tres archivos que necesitan ser configurados para DUNDi: dundi.conf, extensions.conf, y iax.conf. El archivo dundi.conf controla la autentificación de los compañeros que nos permiten realizar búsquedas a través de nuestro sistema. Dado que es posible ejecutar varias arias redes diferentes en la misma caja, es necesario definir una sección diferente para cada interlocutor, a continuación, configurar las redes de pares en el que se permiten realizar búsquedas. Además, tenemos que definir los compañeros que desea utilizar utiliza para realizar búsquedas. Configuracion del archivo dundi.conf: [general] ; puerto mediante el cual se comunica el protocolo dundi. dundi port=4520 ; identificador de mi Asterisk en la nube dundi, se recomienda sea la MAC de la ; tarjeta de red eth0. eth0 entityid=00:0C:29:0C:AB:C2 ; Tiempo que permanece en cache la ruta para ir a las extensiones aprendidas ; ; mediante dundi . cachetime=5 ; Máximo número de saltos que se harán buscando el destino dentro de la red ; ; dundi . ttl=12 ; si al preguntar a un par, el ACK tarda más de 2 segundos, se cancela la ;búsqueda búsqueda a través de ese peer; es ;útil cuando no está activo el peer o cuando ;hay hay una conexión ;mala hacia el peer autokill=yes Publicación de mis números en la red dundi (contextos dundi): •

Los contextos tos en esta sección se enlazan con los contextos de extensions.conf.



El contexto referenciado de extensions.conf es donde se controla qué numeros se publican en la red dundi.

147



Al configurar un peer con el que nos vamos a enlazar, se puede determinar a cuales de los mapas puede tener acceso el peer.

Contextos dundi: nombre_contexto => contexto_extensions,peso,proto,destino[,opciones]] nombre_contexto: Nombre del contexto al que se hace referencia en una petición dundi. contexto_extensions. Nombre del contexto en el extensions.conf, donde se buscarán los números que son solicitados en la nube dundi. peso. Deberá ser 0 en caso de que nuestro conmutador publique directamente los números, en caso contrario, deberá tener el valor del número de saltos que necesita para llevar al destino. proto. Cualquiera de los protocolos IP (sip, iax,323) con el cual el peer remoto se debe comunicar con nosotros. destino. Es la información que se entrega al peer para que pueda llegar al número que está marcando. opciones. Pueden ser varios argumentos los cuales indican el comportamiento que se tendrá cuando no tengamos nosotros el número que se está solicitando. -

nounsolicited. No se permiten llamadas que no sean solicitadas.

-

nocomunsolicited. No se permiten llamadas comerciales que no sean solicitadas.

-

nopartial. No se permiten búsquedas para patrones parciales.

-

residential, comercial,mobile. Le indica a los pares qué tipo de números son los que se están publicando a través de este contexto.

[mappings] priv =>dundi-priv-local,0,IAX2,priv:${SECRET}@162.248.175.91/${NUMBER} ,nounsolicited,nocomunsolicit,nopatial Variables: ${SECRET}. Es reemplazado por el password almacenado en la base de datos. ${NUMBER}. Es el número solicitado. ${IPADDR}. Es la IP de nuestro Asterisk. No se recomienda su uso. Generación de llaves: La autenticación en una red dundi normalmente se hace mediante llave pública/privada: cd /var/lib/asterisk/keys astgenkey -n dundi_ext_44xx 148

yum -y install php cp dundi_ext_44xx.pub /var/www/html service httpd start wget -c http://132.248.175.90/dundi_principal.pub *CLI>reload res_crypto.so *CLI>reload pbx_dundi.so *CLI>dundi lookup 4400@priv Dundi: configuración de pares: ;Par principal, el principal publica las demás extensiones [00:0c:29:d8:86:c0] ; MAC address del par principal model = symmetric host = 132.248.175.90 inkey = dundi_principal ; nombre de la llave pública del par outkey = dundi_ext_44xx ; nombre de mi llave privada include = priv permit = priv qualify = yes dynamic=yes Configuración del archivo extensions.conf: ; tratamos de ir en el contexto local al número de extensión, después vamos a buscar a ;otro contexto. dundi-priv-lookup apunta a la directiva switch la cual permite buscar las ;extensiones ;en otros conmutadores. Esto posibilita la convergencia entre múltiples ;servidores Asterisk con ;diferentes números de bloques de extensiones [macro-dundi-lookup] exten => s,1,Goto(${ARG1},1) include => dundi-priv-local include => dundi-priv-lookup Definición de contextos: ; Son las extensiones locales, por ejemplo: 44XX [dundi-priv-local] exten => _44XX,1,Macro(Dial,${EXTEN}) ; Buscamos con nuestros pares [dundi-priv-lookup] switch => DUNDi/priv ; Cuando se trata de una llamada de un par privado, llega aquí. [dundi-priv-incoming] include => dundi-priv-local Búsqueda en pares:

149

; Contexto para llamadas salientes, aquí nos comunicamos con la red dundi, pero ;agregamos 4 dígitos [pares-dundi] exten => _XXXX,1,Macro(dundi-lookup,${EXTEN}) [internos] include => pares-dundi Configuracion del archivo iax.conf: [priv] type=user dbsecret=dundi/secret context=internos disallow=all allow=ulaw allow=alaw allow=gsm Aspectos avanzados de Asterisk: ¿Qué es AGI? AGI (Asterisk Gateway Interface) nos permite ejecutar en Asterisk software de terceros escrito en casi cualquier lenguaje (C, C#, Bourne Shell, PHP, Ruby, Python, Perl, Java). Permite extender al infinito las posibilidades de Asterisk, juntando su potencia, con las posibilidades que ofrece un lenguaje de programación. El programa debe cumplir: – Ser ejecutable (chmod 755 script.php). – Localizado por defecto en /var/lib/asterisk/agi-bin – Asociado con alguna extensión en el Dial Plan: exten => 200,1,AGI(programa.php|argumentos) El intercambio de información del script con Asterisk se realiza vía los canales de comunicación: STDIN, STDOUT y STDERR. • • •

Lee desde STDIN para obtener información. Escribe en STDOUT para enviar información. Escribe en STDERR para enviar información de debugging.

El script AGI envía comandos a Asterisk escribiendo en el STDOUT. Seguidamente Asterisk envía una respuesta por cada uno de ellos que es leída por el script. Algunos ejemplos de comandos son: •

ANSWER: atiende. 150

• • • • • • •

HANGUP: cuelga. SAY [NUMBER | DIGITS | ALPHA | | PRIORITY]: establece un nuevo contexto, extensión o prioridad luego de finalizada la ejecución de script. VERBOSE: imprime un mensaje en el log. WAIT FOR DIGIT: PHONETICS]: dice un número, dígito, caracter o una cadena fonéticamente. SET [CONTEXT | EXTENSION espera que se presione un dígito. [SET | GET] VARIABLE: asigna u obtiene el valor de una variable del plan de marcación.

¿Qué es AMI? AMI (Asterisk Manager TCP/IP API) permite que programas cliente se conecten a Asterisk mediante TCP/IP y sean capaces de ejecutar comandos y leer eventos, como por ejemplo crear o monitorizar llamadas ,canales y colas. Por cada cosa que Asterisk realiza se generan eventos que pueden ser leídos mediante una sesión de manager, y el usuario puede tratarlos a su gusto. Además, AMI permite la ejecución de comandos, lo que proporcina la posibilidad de alterar el comportamiento de Asterisk desde un programa hecho a medida. Funcionamiento: Para trabajar con AMI es necesario tener un usuario definido en el fichero manager.conf. A partir de aquí hay que establecer una comunicación TCP/IP con el servidor de Asterisk en el puerto 5038, y una vez conectado y autentificado, se puede comenzar a leer los eventos o ejecutar comandos. Las cuentas de usuario se configuran en /etc/asterisk/manager.conf. Ejemplo: [general] enabled=yes [admin] secret = 1234 deny=0.0.0.0/0.0.0.0 permit=127.0.0.1/255.255.255.0 read = system,call,log,verbose,command,agent,user write = system,call,log,verbose,command,agent,user En este caso, "admin" es el nombre de usuario, la clave es "1234" y sólo se permiten conexiones para este usuario vía localhost. El resto de las líneas establecen permisos (r,w,r/w) para cada clase (system, call, etc.). 151

Una de las mejores aplicaciones opensource para controlar y visualizar el estado en tiempo real de la centralita Asterisk es: Flash Operator Panel (FOP). ¿Qué es AJAM? AJAM es una nueva tecnología disponible en Asterisk 1.4 (Asyncronous Javascript Asterisk Manager) que permite conectar con Asterisk por medio de HTTP. Para poder trabajar con AJAM es necesario configurar los ficheros manager.conf y httpd.conf. Configuración del servidor HTTP de Asterisk: 1) Descomentar "enabled=yes" en /etc/asterisk/http.conf para habilitar el pequeño servidor HTTP de Asterisk. 2) Si se desea tener acceso a simples páginas HTML, CSS, JavaScript, etc., hay que descomentar "enablestatic = yes" . 3) Poner la Ip del servidor Asterisk y el puerto en "bindaddr" y "bindport ‘’ respectivamente. 4) Ajuste el "prefix" que debe ser el comienzo de cualquier URI en el servidor . El valor predeterminado es "asterisk" .. Permitir el acceso al Manager via HTTP: 1) Asegúrese de que tiene tanto "enabled = yes" como "webenabled = yes" en la configuración / etc / asterisk / manager.conf . 2) También puede usar "httptimeout" para establecer el tiempo de espera predeterminado para las conexiones HTTP (en segundos). 3) Asegurarse de la configuración de manager.conf teniendo claro cuál es el username y la password. Una vez que estos cambios de configuración han sido completados puede reiniciar Asterisk y podrá acceder a distintas funciones de web. Puede encontrar una lista completa de estas funciones: *CLI> show http o *CLI> http show status Ejemplos de funcionamiento: 

Para abrir una sesión de Asterisk Manager: http://192.168.1.200:8088/asterisk/manager?action=login&username=admin_ de_usuario&secret=amp111



Para ver la salida del comando status: 152

http://192.168.1.200:8088/asterisk/rawman?action=status ¿Qué es AEL2? AEL2 (Asterisk Extension Language versión 2) tiene como objetivo proporcionar una forma diferente de escribir el Dialplan ,una forma más flexible. Para utilizar AEL2, lo único que tiene que hacer es tener cargado el modulo pbx_ael2.so. Esto se hará de forma automática si se utiliza 'autoload = yes "en /etc/asterisk/modules.conf. Cuando se carga el módulo, se busca 'extensions.ael2' en /etc/asterisk/. Algunos usuarios pueden mantienen el archivo extensions.conf para conservar las características que se configuran en la sección "general" de extensions.conf. Para volver a cargar extensions.ael2: *CLI> ael2 reload Hacer un debug de los Contextos: *CLI> ael2 debug contexts Hacer un debug de las macros: *CLI> ael2 debug macros Ejemplo: context prueba { 1234 => { Dial(SIP/${EXTEN},45); switch (${DIALSTATUS}) { case BUSY: Voicemail(b200); break; case NOANSWER: Voicemail(u200); break; default: Noop(Algo raro ha pasado); Hangup; } } }

Eso seria similar a esto: [prueba] exten => 1234,1,Dial(SIP/${EXTEN},45) exten => 1234,n,GotoIf($[${DIALSTATUS}=’BUSY’]?BUSY) exten => 1234,n,GotoIf($[${DIALSTATUS}=’NOANSWER’]?NOANSWER) exten => 1234,n,Hangup() 153

exten => 1234,BUSY,Voicemail(b200) exten => 1234,BUSY,Hangup() exten => 1234,NOANSWER,Voicemail(u200); exten => 1234,NOANSWER,Hangup()

¿Qué es ARA? Asterisk permite ser configurado en una Base de Datos, mediante Asterisk Realtime Architecture. Por ejemplo soporta MySQL, podiendo migrar a la base de datos lo siguiente: – Configuración de dispositivos SIP e IAX. – Configuración de buzones de voz. – Configuración de colas. El fichero a configurar es extconfig.conf. El fichero res_mysql.conf contiene la configuración de la base de datos. ARA dispone de 2 tipos de Realtime: estático y dinámico: – Estático: La configuración esta almacenada en la BD, pero Asterisk la carga al arrancar como si fuera un fichero. Si se realiza algún cambio, es necesario hacer un reload. – Dinámico: La configuración esta almacenada en la BD y Asterisk realiza una consulta a esa BD cada vez que necesita un dato. No es necesario hacer reload si se han realizado cambios. Mucha carga para el servidor... Todos los ficheros no soportan Realtime Dinámico como el fichero de colas (queues.conf). Ejemplo de configuración (extconfig.conf): [settings] ;;RealTime Dynamic ;file => driver,database,table ;sipusers => mysql,asterisk,dispositivos_sip ;iaxpeers => mysql,asterisk,dispositivos_iax ;voicemail => mysql,asterisk,buzones ;;RealTime Static ;file => driver,database,table ;sip.conf => mysql,asterisk,sip_conf ;extensions.conf => mysql,asterisk,extensions_conf ;iax.conf => mysql,asterisk,iax_conf ;queues.conf => mysql,asterisk,queues_conf ;voicemail.conf => mysql,asterisk,voicemail_conf 154

Administración de Asterisk La administración de Asterisk se hace por interfaz web o por la línea de comandos CLI en modo administrador. Interfaces web para Asterisk: •

Asterisk GUI:

Interfaz gráfica para Asterisk creada por Digium. El AsteriskGUI se creó para hacer que la configuración, gestión, y ajuste de su sistema Asterisk sea menos complicado, proporcionando un fácil uso de la interfaz gráfica. El AsteriskGUI es diferente de la mayoría de las interfaces que se han creado para su uso con Asterisk, ya que la interfaz realmente manipula el Asterisk y los archivos de configuración. Se lanzó tras el lanzamiento del Asterisk Appliance. Lo “bueno” de esta interfaz, es que lee la configuración que hemos escrito a mano, la entiende y permite gestionarla vía web, algo que las demás interfaces no hacen (siempre machacan los cambios o acuden a archivos externos incluidos para saltarse esta dificultad, en lugar de plantarle cara). Es importante que conozcamos estas GUI, porque Digium planea convertirla en un estándar para las versiones Appliance, AsteriskNOW y Asterisk Business Edition. En Agosto de 2008 Digium sacó la versión estable de Asterisk GUI 2.0. Instalación: Para instalar la interfaz gráfica web lo tenemos que hacer desde subversion, por ello necesitaremos el cliente: yum install subversion En /usr/src: svn checkout http://svn.digium.com/svn/asterisk-gui/branches/2.0 ast-gui cd ast-gui ./configure make && make install && make samples Ahora configuramos los archivos para poder activar el pequeño servidor http que trae Asterisk GUI y la autenticación para acceder:

155

En /etc/asterisk/http.conf: [general] enabled=yes enablestatic=yes En /etc/asterisk/manager.conf: [general] displaysystemname = yes enabled = yes webenabled = yes port = 5038 ;httptimeout = 60 bindaddr = 0.0.0.0 [admin] secret = clave read = system,call,log,verbose,command,agent,config write = system,call,log,verbose,command,agent,config Una vez guardados, comprobamos que todo ha ido bien: make checkconfig Con este último comando (el make checkconfig) confirmaremos que la configuración es la correcta, sino nos dará algún mensaje de error. Tan solo deberemos asegurarnos que está habilitado el manager en el puerto 5038 así como que existe un usuario valido en el manager.conf y haber des comentado los parámetros en el archivo http.conf, reiniciamos Asterisk y listo. Arrancamos asterisk: ./asterisk -vvvgc Ahora ya podemos ir a arrancar el script para finalizar la configuración: http://ipServidor:8088/asterisk/static/config/cfgbasic.html. •

FreePBX:

FreePBX es una completa aplicación web de PBX. Asterisk no viene con ninguna Interfaz y no podemos conectar un teléfono en ella y hacerlo funcionar sin editar archivos de configuración y crear un Dialplan para su uso. FreePBX simplifica esto ofreciendo funcionalidades pre-programados accesibles a 156

través de una interfaz web amigable que le permite tener un PBX completamente funcional casi de inmediato sin necesidad de programación. FreePBX se basa en la pila LAMPA ™ (Linux, Apache, MySQL, PHP y Asterisk). Es un sistema modular, con clic para instalar plugins descargables a través de Internet desde el repositorio de módulo en línea. Algunas de las características de FreePBX son: -

Agregar o cambiar la extensión y las cuentas de correo de voz en cuestión de segundos. - El soporte nativo de SIP, IAX, y los clientes de ZAP (otros criterios de valoración son apoyados a través de extensiones personalizadas). - Reducir los costos de larga distancia con LCR. - Enrrutar las llamadas entrantes basándose en la hora del día. - Crear Recepcionista digital interactiva (IVR). - Grupos de llamada de diseño sofisticado. - Gestión de llamadas con colas. - Detectar y recibir los faxes entrantes. - Copias de seguridad y restaurar el sistema. - Guardar las grabaciones de audio de las llamadas. - Ver detalle de llamadas con Asterisk-stat. - Ver las extensiones y el estado de los trunks con Flash Operator Panel. - Ver grabaciones de la conversación con Asterisk Recording Interface (ARI). - Número ilimitado de Conferencias (limitado por la potencia de CPU disponible. (300 usuarios simultáneos en conferencias sobre un Pentium 4 a 3 GHz, 600 con doble núcleo!)... - Música en espera. Instalación de FreePBX 1.) Instalar Asterisk. 2.) Deshabilitar SeLinux (si no lo desactivaste en la instalación del sistema operativo). En /etc/selinux/config  "selinux=disabled" 3.) Instalar paquetes necesarios para FreePBX yum install e2fsprogs-devel keyutils-libs-devel krb5-devel libogg libselinuxdevel libsepol-devel libxml2-devel libtiff-devel gmp php-pear php-pear-DB php-gd php-mysql php-pdo ncurses-devel audiofile-devel libogg-devel mysql-

157

devel zlib-devel perl-DateManip sendmail-cf kernel-devel openssl-devel httpd sox spandsp mpg123 4.) Instalar lame wget http://easynews.dl.sourceforge.net/sourceforge/lame/lame-3.97.tar.gz tar zxvf lame-3.97.tar.gz cd lame-3.97 ./configure make make install 5.) Descargar FreePBX wget http://mirror.freepbx.org/freepbx.tar.gz 6.) Instalar BD para FreePBX (mysql con password) mysqladmin create asteriskcdrdb –p mysql --user root -p asteriskcdrdb < /usr/src/freepbx/SQL/cdr_mysql_table.sql mysqladmin create asterisk –p mysql --user root -p asterisk < /usr/src/freepbx/SQL/newinstall.sql mysql -u root –p GRANT ALL PRIVILEGES ON asteriskcdrdb.* TO asteriskuser@localhost IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON asterisk.* TO asteriskuser@localhost IDENTIFIED BY 'password'; flush privileges; 7.) Cambios en el Sistema Linux useradd -c "Asterisk PBX" -d /var/lib/asterisk asterisk Cambiar el usuario y grupo apache por usuario y grupo asterisk nano +231 /etc/httpd/conf/httpd.conf Cambiar AllowOverride None a AllowOverride All nano +329 /etc/httpd/conf/httpd.conf 8.) Instalar FreePBX yum install db cd /usr/src/freepbx ./start_asterisk start ./install_amp --username=asterisk --password=password

158

En /etc/rc.local  "/usr/local/sbin/amportal start" chkconfig httpd on chkconfig mysqld on 9.) Solucionar Problemas de Flash Operator Panel (Si no tienes instalado Fop2) wget http://www.asternic.org/files/op_panel-0.29.tar.gz tar xvfz op_panel-0.29.tar.gz cd op_panel-0.29 cp op_server.pl /var/www/html/panel/ cp flash/operator_panel.swf /var/www/html/panel/ En el archivo op_server.cfg: [general] use_amportal_conf=1 //usuario y clave similar al registrado en el archivo /etc/asterisk/manager.conf manager_user=admin manager_secret=password 10.) Solucionar Password de ARI nano /var/www/html/recordings/includes/main.conf.php $ari_admin_password = "password"; 11.) Configurar Sendmail: nano /etc/mail/sendmail.mc define(`SMART_HOST', `relay.DOMAIN.com)dnl MASQUERADE_AS(`pbx.DOMAIN.com')dnl FEATURE(`masquerade_envelope')dnl make -C /etc/mail 12.) Editar sip_nat.conf para NAT: nano /etc/asterisk/sip_nat.conf localnet=192.168.1.0/255.255.255.0 externhost=pbx.DOMAIN.com externrefresh=10 fromdomain=DOMAIN.com o externip=ipPublica nat=yes

159

qualify=yes canreinvite=no 13.) Añadir extra codecs a la configuracion: nano /etc/asterisk/sip_custom.conf allow=gsm allow=h261 allow=h263 allow=h263p videosupport=yes nano /etc/asterisk/iax_custom.conf allow=gsm allow=h261 allow=h263 allow=h263p videosupport=yes 14.) Editar Configuracion de Correo: nano /etc/amportal.conf //Si la interface web de la PBX sera accedida desde internet o localmente. AMPWEBADDRESS=pbx.DOMAIN.com o IpPublica o ip Privada nano /etc/asterisk/vm_email.inc remove "Visit http://AMPWEBADDRESS/cgi- bin/vmail.cgi?action=login &mailbox=${VM_MAILBOX} to check your voicemail with a web browser.\n" nano /etc/asterisk/vm_general.inc [email protected] ; // El email desde donde la notificacion pudo venir fromstring=DOMAIN PBX ; // Nombre Real o email Sender 15.) Configuracion para Music on Hold: chown asterisk /var/lib/php/session/ sed -i "s|upload_max_filesize = 2M|upload_max_filesize = 20M|" /etc/php.ini En /etc/httpd/conf.d/php.conf  echo "LimitRequestBody 20000000" ln -s /var/lib/asterisk/moh /var/lib/asterisk/mohmp3 16.) Iniciar FreePBX 160

En consola  amportal start En el Explorador en http://IpDelServidor/admin Línea de comandos de Asterisk: CLI Esta línea de comandos es bastante potente, y permite controlar y monitorizar gran parte de la situación de la centralita. Soporta el empleo de la tecla , al estilo de las consolas de UNIX/GNU Linux, por lo que para ver un listado de todos los comandos disponibles, basta con presionar varias veces la tecla. Asterisk CLI es la consola de Asterisk desde donde podemos “debugear” y comprobar el funcionamiento de Asterisk. Para acceder a ella debemos ejecutar: service asterisk start cd /usr/sbin asterisk –r El CLI permite acciones tales como: •

Ver que versión de Astersik tenemos instalada: *CLI> show versión



Tiempo que lleva en ejecución después del último reinicio: *CLI> core show uptime



Recargar configuraciones en el PBX funcional (necesario cuando modificamos algún archivo de configuración): *CLI> reload

• Mostrar aplicaciones registradas en Asterisk: *CLI>show applications •

Listar los canales definidos: *CLI>show channels

• Mostrar información sobre los codecs instalados : *CLI>show codecs

161



Mostrar un cuadro de doble entrada con los tiempos de conversión entre formatos de codecs: *CLI>show translation

Es posible realizar una desconexión del CLI 'quit'. Asterisk continuará ejecutándose en segundo plano. Para matar al propio Asterisk desde el CLI, se puede utilizar el comando stop, en sus tres variantes: •

Detiene Asterisk al momento: *CLI> stop now



Detiene Asterisk cuando no haya carga: *CLI> stop when convenient



Detiene Asterisk cuando no haya carga y deja de aceptar peticiones de llamadas a partir de este momento: *CLI> stop gracefully

Nivel de “Verbose”: Este valor indica la cantidad de mensajes que se recibirán sobre los eventos generales del sistema. Cuanto más alto, más información sobre lo que sucede en la centralita se recibirá. Este nivel, se puede establecer de varias formas: •

Al arrancar el demonio: sudo asterisk vvvvvv



Al conectarse al demonio: sudo asterisk -rvvvvvvvv



Desde el CLI (Quitar opciones de visualización): *CLI>set verbose O

Nivel de “Debug”: Este valor indica la cantidad de mensajes que se recibirán sobre los eventos generales del sistema, pero utilizado normalmente para depurar problemas de drivers o de aplicaciones. Este nivel, se puede establecer de varias formas:

162



Al arrancar el demonio: sudo asterisk dddd



Al conectarse al demonio: sudo asterisk –rdddd



Desde el CLI (Recibir como máximo 30 mensajes): *CLI> Set Debug 30



Realizar un debug de un canal: *CLI>debug channel

Acciones del canal de consola (console channel): •

Permite hacer un llamada desde la consola : *CLI>console dial



Permite contestar una llamada desde la consola: *CLI>console answer



Cuelga la llamada en curso en la consola: *CLI>console hangup

Acciones sobre los módulos: •

Cargar/descargar un módulo específico: *CLI>module load/unload



Mostrar todos los módulos levantados: *CLI>module show

Acciones del Dialplan: •

Mostrar el plan de marcación actual: *CLI>dialplan show



Guardar los cambios realizados: 163

*CLI>dialplan dialplan save •

Agregar / eliminar una extensión en un contexto dado al plan de marcación: *CLI>dialplan dialplan add/remove extensión



Incorporar / eliminar un include en un contexto dado en el plan de marcación: *CLI>dialplan dialplan add/remove include

A través de la línea de comandos CLI también podemos controlar por ejemplo los usuarios SIP e IAX2, el estado de las tarjetas de telefonía o los buzones de voz existentes en la centralita Asterisk: *CLI>sip sip show peers *CLI>iax2 iax2 show peers *CLI>zap zap show status *CLI>voicemail voicemail show users Para obtener información detallada sobre todos los comandos del CLI basta con poner: *CLI>help

Versiones Enterprise de Asterisk: •

Asterisk Appliance

Descripción: El Asterisk Appliance (AA50) es un PBX basado y dirigido hacia las PyMES (2-50 50 usuarios), oficinas remotas de grandes organizaciones (2--50 usuarios por sitio), y los proveedores de servicios gestionados para la premisa CPE con las soluciones basadas en SIP o IAX trunking. El AA50 también ofrece una solución híbrida alternativa (una combinación de las aplicaciones de VoIP usando legado de equipo de telecomunicaciones) para los clientes empresariales que todavía no están preparados para migrar a una solución de VoIP. El Asterisk Appliance 50 tiene las características de la licencia comercial Asterisk Aste Business Edition ™, así como de la Digium AsteriskGUI 1.0 desarrollados. El AA50 está disponible en las siguientes configuraciones: Sólo VoIP (S800i), ocho FXO (S808B), y cuatro FXS y cuatro FXO (S844B). Características:

164

-Servidor Servidor Asterisk completo con con AsteriskGUI. - Asterisk Business Edition con licencia comercial. -Built-in in Router Ideal para pequeñas oficinas. oficinas. -Hasta Hasta ocho puertos analógicos. -Apoyo Apoyo a una combinación de módulos FXO y FXS. -1GB 1GB Compact Flash Card ®. -Hardware Hardware base de Cancelación de eco. -8 8 MB Onboard Flash. -64 64 MB de RAM Onboard. -5 5 Puertos Ethernet (4 LAN, 1 WAN) Beneficios:    





Paquetes “Todo en uno” con Hardware de Digium, Asterisk Digium Software, sistema de documentación, y servicios de suscripción. suscr Mayor fiabilidad en el PC. Baja necesidad de energía  Reducidos costes de propiedad. Permite un completo despliegue ofreciendo rentables soluciones de telefonía con una instalación sencilla y características como el auto-aprovisionamiento auto aprovisionamiento o la posibilidad osibilidad de utilización de teléfonos IP de Polycom. Una suscripción añade la paz mediante la prestación de apoyo en cualquier incidente, en curso de garantía, y en el acceso a las personas adecuadas. Asterisk Business Edition ™

Software Digium Digium ofrece Asterisk Business Edition, una versión perfeccionada de la versión de fuente abierta Asterisk PBX, para el sistema operativo Linux. Digium Partner también ofrece productos que se integran con Asterisk Business Edition y de fuente abierta Asterisk. Descripción: ¿Por qué Asterisk Business Edition? Asterisk es una completa plataforma de telecomunicaciones y representa una muy valiosa pieza de software por una serie de razones: -

Reducción de los costos extrema Control y personalización Flexible dial plan Rich, característica de base amplia

Fácil de Instalar, configurar y Usar

165

Asterisk Business Edition incluye soporte rPath ™ distribución de Linux con una mejor instalación, un manual técnico Asterisk, y una guía rápida; hace que Asterisk sea aún más fácil de instalar, configurar y utilizar. Para mejorar la interactividad del cliente con un Asterisk PBX, Asterisk Business Edition se integra con el reconocimiento LumenVox ™ Engine ™ y Cepstral Texto-a-Habla. Una versión de prueba de la Cepstral producto está incluido, y un puerto libre de Lumenvox Lite también está disponible la solicitud a Asterisk Business Edition clientes. La compra de una licencia es necesaria para activar funciones adicionales de estos productos. Rendimiento, interoperabilidad y fiabilidad El programa de pruebas de Digium asegura la fiabilidad, el rendimiento y la interoperabilidad de Asterisk Business Edition con los principales equipos, software y protocolos. Digium hardware tarjetas se realizarán las pruebas de la total compatibilidad con Asterisk Business Edition, como son varios modelos de seleccionar los servidores, VoIP, y los dispositivos TDM. Todas las principales funciones de software en Asterisk Business Edition son testeadas para la funcionalidad y la fiabilidad. Banco de pruebas de sistemas también son sometidos a extremas condiciones de estrés Empirix ™ utilizando equipos de prueba para simular cientos de miles de llamadas en el mundo real con diversas combinaciones y configuraciones. Como resultado, los clientes pueden confiar en su probada combinación de Asterisk Digium software y hardware que trabajan juntos para proporcionar una caracteristicarica VoIP PBX o sistema. Características: -Soporte de Asterisk Bussiness Ed. -AbsoluteTimeout -AddQueueMember -ADSIprog -AgentCallbackLogin -AgentLogin -AgentMonitorOutgoing -AGI -Answer -AppendCDRUserField -Authenticate -Background -BackgroundDetect -Busy -ChangeMonitor -ChanIsAvail -ChanSpy -CheckGroup -Congestion -ControlPlayback -Cut

-Hangup -HasNewVoicemail -HasVoicemail -IAX2Provision -ImportVar -LookupBlacklist -LookupCIDName -Macro -MacroExit -MacroIf -MailboxExists -Math -MD5 -MD5Check -MeetMe -MeetMeAdmin -MeetMeCount -Milliwatt -Monitor -MP3Player -MusicOnHold

-SayUnixTime -SendDTMF -SetAccount -SetAMAFlags -SetCallerID -SetCallerPres -SetCDRUserField -SetCIDName -SetCIDNum -SetGlobalVar -SetGroup -SetLanguage -SetMusicOnHold -SetRDNIS -SetVar -SIPAddHeader -SIPDtmfMode -SIPGetHeader -SoftHangup -StartMusicOnHold -StopMonitor 166

-DateTime -DBDel -DBdeltree -DBGet -DBPut -Dial -DigitTimeout -Directory -DISA -DumpChan -DUNDiLookup -Echo -Endwhile -EnumLookup -Eval -Exec -ExecIf -ExecIfTime -Flash -ForkCDR -GetCPEID -GetGroupCount -GetGroupMatchCount -Goto -GotoIf -GotoIfTime

-NoCDR -NoOp -Park -ParkAndAnnounce -ParkedCall -PauseQueueMember -Playback -PlayTones -Prefix -PrivacyManager -Progress -Queue -Random -Read -ReadFile -RealTime -RealTimeUpdate -RemoveQueueMember -RetryDial -ResetCDR -ResponseTimeout -Ringing -SayAlpha -SayDigits -SayNumber -SayPhonetic

-StopMusicOnHold -StopPlayTones -StripLSD -StripMSD -Suffix -System -TestClient -TestServer -Transfer -TryServer -TXTCIDName -UnpauseQueueMember -UserEvent -Verbose -VMAuthenticate -VoiceMail -VoiceMailMain -Wait -WaitExten -WaitForRing -WaitForSilence -WaitMusicOnHold -While -Zapteller -ZapBarge -ZapScan

Beneficios: •

Reducción de costos extrema

Combinado con la telefonía de bajo costo de hardware, Asterisk Business Edition se puede utilizar para crear un PBX a una fracción del precio tradicional de PBX y sistemas clave, proporcionando al mismo tiempo un nivel de funcionalidad superior a la de muchos de los más caros sistemas disponibles. •

Control

Asterisk Business Edition permite al usuario tomar el control de su sistema telefónico. Una vez que la llamada es en una caja linux ® con Asterisk, nada se puede hacer para él. De la misma forma que Apache le da al usuario un control de grano fino sobre prácticamente todos los aspectos de su operación (y de su carácter de fuente abierta da más flexibilidad), lo mismo se aplica a Asterisk. •

Rápido Despliegue y desarrollo

Asterisk PBX permite la IVR y aplicaciones que se creó y desplegó rápidamente. Su potente CLI texto y archivos de configuración permite una rápida configuración y diagnóstico en tiempo real.

167



Rich, característica de base amplia

Porque es de código abierto Asterisk y que se aplica de software, no sólo aportan características como el buzón de voz, menús de voz, IVR, y de las conferencias, que son muy costosas para los sistemas de propiedad, sino que también permite nuevas características que se añadirán rápidamente y con un mínimo de Esfuerzo. •

Personalización

A través de su apoyo a la internacionalización, los archivos de configuración, y el código fuente, cada uno de los aspectos de Asterisk pueden ser ajustados. Por ejemplo, los códigos de Asterisk para funciones de llamadas podría ser cambiado para que coincida con un sistema existente. •

Despliegue de contenido dinámico

De la misma forma que los servidores web como Apache permitirá a los usuarios desplegar contenido dinámico, como la información de la cuenta, la película muestra los tiempos, etc, en la web, Asterisk permite desplegar esos contenidos dinámicos a través del teléfono, con la misma facilidad como CGI. •

Marcado Extremadamente flexible

Asterisk es excepcionalmente flexible de marcado permite una integración sin problemas de IVR y la funcionalidad PBX. Muchas de las características de Asterisk (deseado y las características de la futura) se pueden aplicar usando nada más que la extensión lógica. Asterisk apoya una mezcla de longitudes de extensión.

Distribuciones Linux con Asterisk: Las distribuciones con Asterisk más conocidas son:  AsteriskNOW  TrixBox  Elastix El 80% de los usuarios que utilizan este tipo de distribuciones para montar su sistema de comunicaciones, no saben cómo modifican los ficheros de configuración o directamente jamás lo han hecho. Los usuarios de distribuciones controladas por interfaz web suelen olvidar (o no quieren reconocer)que toda interfaz es creada con un objetivo: simplificar la configuración y gestión de una aplicación (en este caso, de Asterisk), esta simplificación tiene un efecto muy negativo, impide realizar tareas que no han sido previamente preparadas por los creadores de dicha interfaz o incluso han sido 168

desechadas por su complejidad y poca utilidad para un público general, se dice entonces que esa distribución está “a merced” de lo que permita hacer la interfaz . En muchos casos se puede pensar que no se puede hacer algo, simplemente porque la interfaz web no lo permite. AsteriskNOW AsteriskNOW es el camino más rápido para empezar la construcción de soluciones personalizadas de telefonía con Asterisk. Simplemente descarga el archivo. Iso, grabarlo en un CD, colóquelo en la unidad de CD o DVD en el equipo de destino y en menos de 30 minutos tendrá un sistema Asterisk funcional lista para su aplicación personalizada de telefonía. Instalar Asterisk y la costumbre comenzar a construir aplicaciones de telefonía con AsteriskNOW. AsteriskNOW instala una distribución completa de Linux (rPath en las primeras versiones y CentOs en la última versión 1.5), Asterisk, el marco de conductor DAHDI, Asterisk-GUI, la base de datos MySQL, el servidor web Apache y una amplia variedad de herramientas de desarrollo y componentes. ¿Qué es AsteriskNOW? AsteriskNOW hace fácil crear soluciones personalizadas de telefonía por la instalación automática de la "plomería". Gran parte de la complejidad de Asterisk y Linux es manejado por el instalador y el GUI de administración. Los desarrolladores de aplicaciones e intergrators pueden concentrarse en la construcción de su solución.

169

¿Qué puedo crear con AsteriskNOW? Entre las muchas aplicaciones que puedes crear con AsteriskNOW son: • • • • •

VoIP Gateway Skype Gateway IP PBX Call Center ACD Conferencia de Puente

• • • • •

Servidor IVR Sistema de buzón de voz Call Recorder Servidor de fax Speech Server

¿A quién está dirigido? AsteriskNOW fue construido para los desarrolladores de aplicaciones, integradores de sistemas, estudiantes, piratas informáticos y otros que quieren para crear soluciones personalizadas con Asterisk. ¿Quién apoya a AsteriskNOW? Los usuarios de AsteriskNOW tienen dos opciones. Hay una comunidad activa de usuarios de AsteriskNOW, integradores y desarrolladores que ofrecen apoyo a la comunidad en los foros de AsteriskNOW y lista de correo. Digium ofrece suscripciones de soporte comercial para AsteriskNOW. Si su aplicación requiere el apoyo directo del fabricante, consulta la página de suscripciones. Características y funciones: AsteriskNOW tiene una larga lista de características que lo convierten en el preferido de Asterisk listo para ejecutar la distribución: -

Instalación fácil y rápida. Normalmente se instala en 15 minutos o menos. No requiere un profundo conocimiento de Linux. Seguro para los usuarios de Mac y Windows. Web-interfaz de configuración basada en las tareas de gestión hace que la mayoría de apuntar y hacer clic. Los datos Construir aplicaciones dirigidas con soporte integrado para ODBC y HTTPS. Asistente para la configuración de las conexiones de VoIP hace que sea fácil de conectar. Instalación de pre-construidos, paquetes de aplicaciones utilizando el administrador de aplicaciones. Detección automática y la configuración de analógicas Digium y hardware de telefonía Digitial.

170

-

Sound Manager hace fácil crear, instalar y gestionar el sistema de mensajes y grabaciones. Dialplan y editor de secuencia de comandos AEL con resaltado de sintaxis y validación simplifica el desarrollo. Nombre y Call Detail Record (CDR) Viewer proporciona acceso instantáneo a la actividad del sistema. Integrado de texto de ayuda para las aplicaciones, funciones, CLI, AGI y los comandos de AMI. En tiempo real de seguimiento y depuración de la consola ayuda a simplificar el proceso de desarrollo. Paso a paso el desarrollo de aplicación tutoriales enseñar los fundamentos rápidamente. Apoyo a la creación de agrupaciones y de alta disponibilidad que sea fácil de escalar las aplicaciones. Actualizaciones automáticas mantener su sistema en armonía y seguridad. Ahorre dinero con una oferta especial en el apoyo de Digium y servicios de formación.

Actualidad: El 1 de Abril Digium publicó la versión estable de AsteriskNOW 1.5.0. Digium publicó su primera beta de esta versión en Octubre de 2008 y ya iba siendo hora de que lo actualizaran. Los principales cambios: • • • •

Distribución CentOS actualizado. Web basada en httpd y FreePBX Asterisk 1.6 con soporte de DAHDI. Versiones x86 (32 bits) y x64 (64 bits)

Podéis descargarlo de aquí: http://www.asterisknow.org/downloads. TrixBox TrixBox es una distribución basada en CentOS que comercializa la empresa Fonality. Esta distribución tiene una versión gratuita y es de las distribuciones rápidas, una de las más utilizadas por newbies.

171

Una vez instalado TrixBox, el sistema dispone de: • • • • • •

Asterisk Apache MySQL SugarCRM ARI FreePBX

Principales características Trixbox es una completísima y poderosa plataforma. Los productos que incluye son: • • • • • • • • •

TrixBox dashboard Asterisk (tm) Open Source PBX FreePBX herramienta web de administración SugarCRM Munin (en paquete administrador) HUDLite server/admin (en paquete administrador) IVRGraph (en paquete administrador) phpMyAdmin (en paquete administrador) Webmin (en paquete administrador)

Códecs que soporta: • • • • • • • •

ADPCM G.711 (A-Law & μ-Law) G.722 G.723.1 (pass through) G.726 G.729 (through purchase of a commercial license) GSM iLBC 172

Protocolos con los que trabaja: • • • • • • • • • • •

IAX™ (Inter-Asterisk Exchange) IAX2™ (Inter-Asterisk Exchange V2) H.323 SIP (Session Initiation Protocol) MGCP (Media Gateway Control Protocol SCCP (Cisco® Skinny®) Traditional Telephony Interoperability FXS FXO DTMF support PRI Protocols

Versiones de TrixBox: Trixbox posee dos tipos de versiones: 1) TrixBox CE (Community Edition) Comenzó en el año 2004 como un proyecto popular PBX denominado Asterisk@Home. Desde ese momento se convirtió en la distribución más popular, con más de 65.000 descargas al mes. Dicha versión se caracteriza por dos pilares importantes: su flexibilidad para satisfacer las necesidades de los clientes y, sobre todo, por ser gratuita. ¿Por qué utilizar TrixBox CE? Como se acaba de comentar TrixBox CE es una versión muy flexible, que no solo permite configurar funciones y módulos parametrizables para las necesidades de cada cliente, sino que también es posible acudir a la comunidad de TrixBox para ayudar o ser ayudado. Esta es una de las más grandes y más activas del mundo y sus miembros trabajan entre ellos día a día con el fin de responder consultas, resolver problemas, fallos y en seguir desarrollando la herramienta. ¿Quién utiliza TrixBox CE? Empresas de todo el mundo, desde aquellas que posen muy pocas estaciones de trabajo, hasta medianas compañías que poseen cientos de empleados. 2) TrixBox Pro (Versión comercial de pago) Es una solución denominada "hibrid-hosted", que significa que el cliente puede realizar una monitorización 24 horas al día los 7 días de la semana, administrar la central desde cualquier lugar y recibir actualizaciones del software de manera automática. Trixbox Pro es una versión empresarial que se ejecuta sobre tecnologías PBXtra, comercializada desde el 2004 permitiendo enviar/recibir más de 120 millones de llamadas por día. La familia trixbox Pro posee 3 versiones: 173

• • •

Standard Edition (SE) Enterprise Edition (EE) Call Center Edition (CCE)

Características y beneficios: 1. Gratis y flexible: Las 3 versiones poseen las siguientes características: • •

Standard Edition (SE) : Gratis. Enterprise Edition (EE) y Call Center Edition (CCE): coste mensual muy bajo o una cuota de por vida.

2. Fácil instalación, uso y configuración: Posee un instalador que hace que la instalación sea sencilla; posee, además, un administrador intuitivo y un panel de control que facilita la instalación, configuración y administración. 3. Características avanzadas: Posee características como contestador automático, integración con el Outlook, voicemail a email, informes, llamadas en conferencia, etc. 4. HUD: El Hud es una herramienta denominada de "todo en uno", que permite a los empleados poder manejar las comunicaciones de la empresa desde su propio escritorio. De esta manera pueden acceder a chats privados, realizar llamadas con hacer un solo clic, realizar transferencia de llamadas, etc. 5. Seis idiomas: El panel de control de trixbox Pro está en 6 idiomas, permitiendo así que cualquier usuario pueda configurar la central: Inglés, Francés, Español, Alemán, Italiano y Portugués. Descripción de las principales características de TrixBox Pro: Contestador Automático (IVR): Una de sus características es la funcionalidad de Contestador-Automático que guía a los que llamen según las opciones predefinidas. Esta característica en este producto es muy poderosa y fácil de usar con solo unos clics. Se puede configurar el flujo de las llamadas, redirigir llamadas fuera del lugar de trabajo y algunas opciones más.

174

Integración con Outlook: Llamadas entrantes: cuando el teléfono suena, el identificador de llamadas puede analizar contra los contactos del Outlook y si una coincidencia es encontrada se mostrara una ventana con el nombre de la persona. Hacer llamadas desde su casilla de entrada personal: basta con hacer clic con el botón derecho en el contacto o en un mensaje del contacto para llamarle. Buzón de voz: Ofrece cuatro maneras fáciles de almacenar mensajes: • Presionando un botón en el teléfono. • Marcando remotamente desde cualquier teléfono. • Recibiendo archivos .WAV adjuntos en el mail. • Escuchando a través del panel de control web. Mensajes de voz a email: La posibilidad de recibir mensajes de voz como simples emails. Trixbox viene preconfigurado para enviar a cada empleado un email cuando estos reciban un mensaje de voz. También se puede tener el audio adjunto al email y escucharlo directamente en la bandeja de entrada. Scheduler: Se pueden reproducir diferentes mensajes a las personas que llaman según la hora del día. Configurar un menú totalmente diferente los fines de semana con opciones diferentes que se pueden elegir. Teléfonos analógicos e IP: Es el sistema de teléfonos más flexible del mercado, soportando todos los teléfonos analógicos y numerosos teléfonos IP de marcas como Cisco, Polycom, Aastra, SwissVoice y Snom. VoIP: Trixbox está preparado para VoIP dependiendo del producto que se esté usando, el cual limita la cantidad de teléfonos posibles. Fácilmente se puede conectar TrixBox con cualquier proveedor de VoIP (SIP o IAX). Panel de control web: Ofrece una interfaz web fácil de usar. Un panel de administrador que maneja todos los aspectos del TrixBox remotamente y un panel de usuario para empleados que les permite manejar sus configuraciones personales (como 175

escuchar sus mensajes de voz, responder llamados mediante un clic, traspaso de llamadas, etc.) desde cualquier parte. Reportes y monitorización: Con esta característica se pueden analizar en tiempo real los registros de llamadas para cualquier extensión usando potentes filtros y parámetros de búsqueda. También provee informes de los gastos que un cliente ha hecho o su registro de llamadas individual. Todos estos informes pueden ser exportados en formato .csv. Puentes para conferencias: Los puentes para conferencias vienen preconfigurados gratuitamente y soportan un número ilimitado de participantes internos y externos. Soporte de sucursales: Desarrollo de servidores de bajo coste en cada sucursal u oficina. Algunas de las opciones de las que se disponen en esta característica: • •

Llamadas gratis entre sucursales vía VoIP. Traspaso de llamadas a cualquier extensión que esté conectada al servidor.

Elastix Elastix es un software aplicativo que integra las mejores herramientas disponibles para PBXs basados en Asterisk en una interfaz simple y fácil de usar. Además añade su propio conjunto de utilidades y permite la creación de módulos de terceros para hacer de este el mejor paquete de software disponible para la telefonía de código abierto. Elastix implementa gran parte de su funcionalidad sobre 4 programas de software muy importantes como son Asterisk, Hylafax, Openfire y Postfix. Estos brindan las funciones de PBX, Fax, Mensajería Instantánea y Correo electrónico respectivamente. La meta de Elastix son la confiabilidad, modularidad y fácil uso. Estas características añadidas a la robustez para reportar hacen de él, la mejor opción para implementar un PBX basado en Asterisk.

176

Características: Es difícil hacer una lista con todas las características de Elastix en un simple listado, pero las más importantes son: VoIP PBX: • • • • • • • • • • •

• • • • • •

Grabación de llamadas con interfaz vía Web. Voicemails con soporte para notificaciones por e-mail. IVR configurable y bastante flexible. Soporte para sintetización de voz. Herramienta para crear lotes de extensiones lo cual facilita instalaciones nuevas. Cancelador de eco integrado. Provisionador de teléfonos vía Web. Esto permite instalar numerosos teléfonos en muy corto tiempo. Soporte para Video-teléfonos. Interfaz de detección de hardware de telefonía. Servidor DHCP para asignación dinámica de IPs a Teléfonos IP. Panel de operador. Desde donde el operador puede ver toda la actividad telefónica de manera gráfica y realizar sencillas acciones drag-n-drop como transferencias, aparcar llamadas, etc. Aparcamiento de llamadas. Reporte de detalle de llamadas (CDRs) con soporte para búsquedas por fecha, extensión y otros criterios. Tarifación con informes de consumo por destino. Informe de uso de canales por tecnología (SIP, ZAP, IAX, H323). Soporte para colas de llamadas. Centro de conferencias. Desde donde se puede programar conferencias estáticas o temporales. 177

• • • • • • • • • • • • • • • • •

Soporta protocolo SIP, IAX, H323, MGCP, SKINNY entre otros. Codecs soportados: ADPCM, G.711 (A-Law & μ-Law), G.722, G.723.1 (pass through), G.726, G.729 (si se compra licencia comercial), GSM, iLBC. Soporte para interfaces análogas FXS/FXO. Soporte para interfaces digitales E1/T1/J1 a través de protocolos PRI/BRI/R2. Soporte para interfaces bluetooth para celulares (canal chan_mobile). Identificación de llamadas. Troncalización (uso de trunks). Rutas entrantes y salientes las cuales se pueden configurar por coincidencia de patrones de marcado lo cual da mucha flexibilidad. Soporte para follow-me. Soporte para grupos de timbrado. Soporte para paging e intercom. El modelo de teléfono debe soportar también esta característica. Soporte para condiciones de tiempo. Es decir que la central se comporte de un modo diferente dependiendo del horario. Soporte para PINes de seguridad. Soporte DISA. Soporte Callback. Editor Web de archivos de configuración de Asterisk. Acceso interactivo desde el Web a la consola de Asterisk.

Fax: • • • • • •



Servidor de Fax administrable desde Web. Visor de Faxes integrado, pudiendo descargarse los faxes desde el Web en formato PDF. Aplicación fax-a-email. Personalización de faxes-a-email. Control de acceso para clientes de fax. Puede ser integrado con WinprintHylafax. Esta aplicación permite, desde cualquier aplicación Windows, enviar a imprimir un documento y este realmente se envía por fax. Configurador Web de plantillas de emails.

General: • • • • • • • • •

Ayuda en línea incorporada. Elastix está traducido a 22 idiomas. Monitor de recursos del sistema. Configurador de parámetros de red. Control de apagado/re-encendido de la central vía Web. Manejo centralizado de usuarios y perfiles gracias al soporte de ACLs. Administración centralizada de actualizaciones. Soporte para copias de seguridad y la restauración de las mismas a través del Web. Soporte para temas o skins. 178



Interfaz para configurar fecha/hora/huso horario de la central.

Email: • • • • • •

Servidor de correo electrónico con soporte multidominio. Administrable desde Web. Interfaz de configuración de Relay. Cliente de Email basado en Web. Soporte para "cuotas" configurable desde el Web. Soporte Antispam.

Colaboración: • • •

Calendario integrado con PBX con soporte para recordatorios de voz. Libreta telefónica (Phone Book) con capacidad clic-to-call. Dos productos de CRM integrados a la interfaz como vTigerCRM y SugarCRM.

Extras: • • •

Interfaz de generación de tarjetas de telefonía basada en software A2Billing. CRM completo basado en el producto vTigerCRM. También versión de código abierto de SugarCRM.

Centro de llamadas: •

Módulo de centro de llamadas con marcador predictivo incluido. El módulo de centro de llamadas puede manejar tanto campañas de llamadas entrantes como salientes. Algunas de las características son: -

Soporte para lista de números no-llamar (Do-Not-Call List). Soporte para campañas entrantes y salientes. Asociación de formularios por campaña. Asociación de guión por campaña. Consola de agente. Soporte para breaks, siendo estos configurables y de diferentes tipos. Marcador predictivo de código abierto. Informes avanzados.

Mensajería instantánea: •

• •

Servidor de mensajería instantánea basado en OpenFire e integrado a PBX con soporte para protocolo Jabber, lo que permite usar una amplia gama de clientes de mensajería instantánea disponibles. Se puede iniciar una llamada desde el cliente de mensajería (si se usa el cliente Spark). El servidor de mensajería es configurable desde Web. 179

• •

• • • •

Soporta grupos de usuarios. Soporta conexión a otras redes de mensajería como MSN, Yahoo Messenger, GTalk, ICQ, etc. Esto permite estar conectado a varias redes desde un mismo cliente. Informe de sesiones de usuarios. Soporte para plugins. Soporta LDAP. Soporta conexiones server-to-server para compartir usuarios.

Soporte para hardware de telefonía: Elastix cuenta con un buen soporte para hardware de telefonía, contando con drivers para los principales fabricantes de tarjetas como: • • • • • •

OpenVox Digium Sangoma Rhino Equipment Xorcom Yeastar

La mayoría de estos controladores se soportan a través de los drivers del proyecto Zaptel o versiones modificadas del mismo. Otros se soportan en base al proyecto mISDN u otros. Elastix también soporta muchas marcas de teléfonos gracias a que los protocolos SIP e IAX que usa Asterisk lo permiten. Estos protocolos son abiertos por lo que prácticamente cualquier fabricante puede implementar un teléfono que se comunique sobre estos estándares. Algunos fabricantes de teléfonos soportados son: • • • • • • • •

Polycom Atcom Aastra Linksys Snom Cisco Nokia UTstarcom

Casos de uso de una Centralita Asterisk: • • • •

Centralita nueva con conexiones y extensiones de varios tipos. Pasarela para dotar a una centralita tradicional de servicios nuevos. Pasarela para dotar a una centralita tradicional de nuevas extensiones. Varias Oficinas con un Asterisk Centralizado. 180



Varias Oficinas con Sistemas Asterisk interconectados.

Centralita nueva con conexiones y extensiones de varios tipos.

Pasarela para dotar a una centralita tradicional de servicios nuevos. Posibles servicios: Conexión con Operador IP, Buzón de Voz a email, Sistema de respuesta automático, etc.

181

Pasarela para dotar a una centralita tradicional de nuevas extensiones. Para poder hacer esto la centralita tradicional debería poder programarse para ello.

Varias Oficinas con un Asterisk Centralizado. De esta forma, además de comunicaciones entre Sedes, todas las sedes pueden hacer llamadas al exterior a través de la central Asterisk. Las extensiones externas podrán seguir el protocolo SIP o el Protocolo IAX.

182

Varias Oficinas con Sistemas Asterisk interconectados. Todos los Asterisk Pueden utilizar los otros Asterisk para hablar con números de las provincias donde se encuentran. Entre ellos se pueden conectar mediante IAX o SIP, e incluso se puede montar un plan de numeración único entre todos.

183

Ampliación del sistema de telefonía de una empresa Supongamos una empresa con una infraestructura de comunicaciones tradicional, basada en una red de telefonía y una red de datos independientes. El sistema de telefonía está controlado por una PBX propietaria que da servicio a un determinado número de extensiones analógicas y digitales, y que se encuentra conectada a la red de telefonía pública. La empresa experimenta un crecimiento inesperado, pero bienvenido, de personal y la PBX alcanza su máxima capacidad y todavía quedan extensiones por asignar.

⊗ Solución Uno: Ampliación de la PBX con los módulos apropiados, siempre que ese modelo no se encuentre descatalogado por el fabricante, asumiendo el elevado coste de este tipo de hardware y exponiéndonos a la misma situación en crecimientos futuros. ⊗ Solución Dos: Compra de nueva PBX, con mayores prestaciones y módulo de VoIP para acercar la empresa a la nueva tecnología. Lo que supone costes elevadísimos, dependencia del fabricante y poca flexibilidad en las aplicaciones disponibles.  Solución Asterisk: Instalación de una centralita Asterisk que aprovechando la PBX antigua, ofrece nuevas extensiones analógicas y/o digitales con hardware de menor coste. Pero que, sobretodo, ofrece un número mucho mayor de extensiones VoIP sin hardware adicional, y con gran escalabilidad para próximas ampliaciones.

184

Soluciones de Asterisk para sistemas de telefonía entre sedes remotas Una ventaja inmediata de las soluciones de telefonía IP consiste en la posibilidad de realizar llamadas entre sedes remotas sin coste e integrando el sistema de numeración (extensiones) entre ellas. Asterisk ofrece una solución ideal para este tipo de organizaciones con sedes distantes. Sistema Centralizado Existe un servidor centralizado por donde entran y salen las llamadas a la red de telefonía tradicional, y que se encarga de gestionar los clientes de VoIP (extensiones VoIP) de todas las delegaciones.

185

Sistema Distribuido Cada delegación tiene su propia centralita Asterisk conectada a la red WAN de la empresa (A través de internet o líneas dedicadas) y a la red telefónica. Entre los Asterisk, a través del protocolo IAX (Inter-Asterisk eXchange) intercambian información de rutado, permitiendo una gestión del sistema de telefonía de la compañía y un rutado inteligente de llamadas.

La revolución Asterisk Cambio en el concepto de PBX Probablemente lo más importante de Asterisk es que no es un sistema de telefonía en caja negra. Es una plataforma de comunicaciones basada en un servidor informático. Esto no sólo cambia la manera de concebir los sistemas de telefonía, sino que además presenta una serie de ventajas sorprendentes. Flexibilidad y Customización Efectivamente una instalación Asterisk puede ser diseñada, configurada, conectada e instalada de diferentes maneras, por lo que se convierte en una solución universal para todas las necesidades. •

Asterisk puede aceptar conexiones a teléfonos locales, pero también a teléfonos en otras partes del mundo, que se convierten en parte de la red telefónica de su oficina.

186



Asterisk puede interconectarse usando señalización analógica, digital o IP.



Asterisk funciona igual de bien con viejos teléfonos analógicos que con teléfonos IP o SoftPhones, que son en realidad software del PC.

Escalabilidad Asterisk es una solución muy buena de PBX para una pequeña oficina con 2 o 3 extensiones internas y 1 línea saliente, pero también funciona perfectamente para una plataforma de comunicaciones de una empresa con 900 teléfonos IP, centenares de llamadas simultáneas y varios primarios RDSI. Para Asterisk el tamaño no importa. Sin ningún coste añadido incluso la instalación más pequeña puede ofrecer las características más avanzadas de telefonía como IVR, buzón de voz, conferencias, servicio hasta ahora reservado a las grandes empresas. Es importante recordar que Asterisk puede crecer de forma lineal según sus necesidades. ¿Necesita otro teléfono en su oficina? Sólo debe comprar el teléfono; no deberá modificar las licencias de hardware o software ni justificar gasto alguno ante el Departamento de Finanzas. Integración Asterisk puede integrarse con otros sistemas TI (Tecnologías de Información) en la organización empresarial, aportando así un valor añadido a los procesos de negocio nuevos y/o mejorados. A continuación presentamos una serie de ejemplos que ilustran el valor añadido que representa para una empresa integrar las telecomunicaciones y otros sistemas TI.

Ejemplos de uso de Asterisk: Ejemplo 1: Centros médicos – Llamada recordatoria Cuando a un paciente le dan cita con semanas e incluso meses de antelación, es probable que se olvide del día. Si no acude a la cita repercutirá en los ingresos de ese día y el personal médico estará desocupado el tiempo previsto para la consulta. A fin de mejorar su funcionamiento y rendimiento, los centros médicos pueden instalar un sistema telefónico basado en Asterisk, que tras integrarlo con la agenda de visitas programadas, llamará al paciente el día o semana anterior recordándole su cita mediante un mensaje de voz grabado. De esta manera se garantizan los ingresos previstos y se aumenta la productividad.

187

Ejemplo 2: Centros de telemarketing – Integración con sistemas CRM Los centros de telemarketing llamarán a una lista de números para intentar vender a los usuarios un producto o servicio. La lista con los números se descarga en el software CRM (Customer Relationship Management). El sistema CRM contacta con el sistema de comunicaciones pidiendo que se marque de forma automática el número y de esta manera tener una serie de mejoras: • Llamada automática: los agentes sólo deben hacer clic sobre el número de teléfono que aparece en la pantalla y el sistema marca el número. • Registro de llamadas: el sistema de comunicaciones genera automáticamente una entrada para cada llamada como parte del historial telefónico del cliente. • Centrarse en el objetivo: el sistema de comunicaciones puede programarse de modo que en horas laborables sólo marque números de la lista de números, impidiendo a los empleados realizar llamadas personales. Esta integración genera más productividad al acelerar la cadencia de trabajo y centrar a los agentes en la tarea que están llevando a cabo. También disminuye los costes no relacionados con las operaciones de la empresa. Ejemplo 3: Agencias de viajes (Self service) Una agencia de viajes contrata vuelos, estancias en hoteles y visitas para sus clientes. En contextos como excursiones o viajes de trabajo son habituales las cancelaciones y los cambios de planes. ¿Qué sucede si hay que cancelar fuera de horarios de oficina? ¿Qué pasa si hay una avalancha de llamadas entrantes? Integrando el sistema de comunicaciones con el sistema de reservas, los clientes podrán llamar y cambiar o cancelar su reserva mediante menús interactivos. Por lo tanto, la agencia de viajes podrá optimizar los costes operativos y los costes derivados de proveedores (hoteles y empresas de transporte).

La complejidad Asterisk Los expertos resaltan que en cualquier Software sea libre o cerrado sus ventajas y riesgos están directamente relacionados con su uso adecuado. Y recuerdan que Asterisk es un sistema complejo, aunque sea una solución avanzada basada en software abierto. Es necesario apoyarse en un equipo técnico o empresas externas que conozcan bien Asterisk para que su implantación y ciclo de vida sea plenamente satisfactorio.

188

En muchos proyectos no solo se tiene que considerar un servicio de instalación, soporte sino también la integración con otros sistemas de la compañía. En el terreno de los problemas que puede presentar Asterisk hay que aclarar que por sí solo no ofrece escalabilidad o alta disponibilidad, pero se puede alcanzar una solución intermedia de alta disponibilidad a través de la redundancia y usando software de terceros.

¿Y el futuro? “Asterisk es un software abierto y como tal su evolución es posible gracias a una comunidad de usuarios y empresas que comparten su código y experiencias a través de Internet. Los Call Centers son los primeros beneficiados de una herramienta como Asterisk ya que para ellos el PBX es un componente imprescindible para prestar sus servicios .Igualmente las empresas que pueden beneficiarse de Asterisk no solo para reducir costes sino también para crear soluciones más sostenibles para diferentes tipos de negocios”, señala Iván Sixto, CEO Business Development manager de I6NET. Sobre el futuro de Asterisk podría trazarse un paralelismo a la situación que experimenta Linux en el mercado de los sistemas operativos. “No se convertirá en un monopolio, pero será un rival totalmente viable en ambos campos. Especialmente en tiempos de recortes de costes como los que se avecinan, aunado con un cambio en la tecnología (Voz IP) tendrá una oportunidad única de sustituir a soluciones existentes”, señala Eduardo Malpica, responsable de Consultoría Preventa de Altitude Software España.

Conclusiones La adopción de una centralita VoIP no debería ser una opción para aquellas personas o entidades que hayan llegado a la conclusión de que necesitan una centralita, sino que debería verse como algo inevitable. Los grandes operadores siguen cobrando precios desorbitados por un servicio que, desde la aparición de Internet y la interconexión de grandes redes, ha perdido su razón de ser: la transmisión de voz. Asterisk está revolucionando el mundo de la telefonía, nunca existió una herramienta tan completa, versátil, extensible y flexible en la industria de las comunicaciones de voz, y es que tiene una potencia y escalabilidad que es inalcanzable, en relación prestaciones-precio, para ninguna centralita convencional. Además gracias a que es libre, en licencia y en código, el único límite que existe para los servicios que podemos ofrecer, es nuestra imaginación. Una vez más se demuestra que el paradigma Open Source funciona, y funciona bien, no existen productos comerciales que superen en calidad y características a otros proyectos como son Linux, Apache o Mozilla, por mencionar unos cuantos. Asterisk es en pocas palabras, el futuro de la telefonía. 189

Capítulo

3

Pruebas realizadas

Iniciación en Linux Como todo iniciado en el mundo Linux, lo primero en lo que me centre fue en la elección de la distribución correcta para tener un aprendizaje lo más rápido posible. Tras mirar lo que me ofrecía cada una de las siguientes distribuciones, decidí instalar Kubuntu 9.04.

190

191

Kubuntu & Asterisk Pese a que el aprendizaje y familiarización con Linux fue sencillo y breve no lo fue tanto el primer contacto con Asterisk y tampoco la primera instalación aunque la información en cuanto a instalar de este tipo centralitas es abundante para la mayoría de las distribuciones Kubuntu no es de las más habituales o empleadas .Tras conseguir un funcionamiento correcto de la centralita Asterisk pasé a informarme sobre las distribuciones más empleadas para crear servidores de este tipo.

192

Elección del servidor adecuado para Asterisk ¿Qué hay que tener en cuenta en la elección del servidor Asterisk? Para la elección del equipo servidor de nuestro sistema Asterisk deberemos tener en cuenta:     

Número de usuarios, o extensiones internas, del sistema y tecnología empleada, VoIP o teléfonos analógicos. Códecs empleados y necesidades de conversión. Cantidad de tráfico de voz esperado. Existencia de conferencias. Funcionalidades avanzadas como menús interactivos de voz, integración con aplicaciones informáticas empresariales, sistemas de facturación,…

¿Cuál es la mejor distribución para instalar Asterisk? “Asterisk funciona perfectamente bajo cualquier distribución” No obstante, según una encuesta que se realizó hace algún tiempo en la página web de los usuarios de Asterisk-ES (foro de Asterisk), la mayoría se decantan por dos: Debian y CentOS. CentOS (acrónimo de Community ENTerprise Operating System) es un clon a nivel binario de la distribución Red Hat Enterprise Linux, compilado por voluntarios. Es una alternativa para aquellos que quieren usar la plataforma RHL pero no quiere alejarse de sus principios de software libre. Otra ventaja que tiene CentOS es la gran cantidad de usuarios que trabajan con esta distribución y la cantidad de paquetes en ‘rpm’ que existen, lo que hace que existan multitud de foros de usuarios que preguntan y responden basados en esta distribución. Debian es muy usado por su gran estabilidad y seguridad. Su gran estabilidad se basa en que llevan mucho tiempo arreglando los bugs que puede tener cierto programa antes de ser liberado como estable. Sin embargo este proceso puede durar hasta años por lo que muchos no son tan pacientes en esperar y quizás decidan en migrar a otra distribución. Mi elección definitiva para las prácticas y el montaje de la centralita Asterisk fue CentOs 5.4. Para instalarlo seguí el siguiente manual.

193

Puesta a punto del servidor antes de la instalación de Asterisk: Servidor HTTP Apache Apache es un proyecto nacido para crear un servidor web estable, fiable y veloz para plataformas Unix. Apache nace, por una parte, de un código ya existente y de una serie de patch para mejorar su fiabilidad y sus características; de ahí su nombre: ¡A PAtCHy sErver! El equipo de desarrollo, además, está formado por voluntarios, repartidos por todo el mundo, que sigue manteniendo este servidor web libre. Instalación yum install httpd httpd-devel php php-common php-devel

Arranque de Apache Iniciar el servicio service httod start chkconfig httpd on

Parar el servicio service httpd stop

Reiniciar el servicio service httpd restart

Servidor DHCP (DHCPD) DHCP es un protocolo diseñado principalmente para ahorrar tiempo gestionando direcciones IP en una red grande. El servicio DHCP está activo en un servidor donde se centraliza la gestión de la direcciones IP de la red. Hoy en día, muchos sistemas operativos incluyen este servicio dada su importancia. Funcionamiento El funcionamiento DHCP se basa en la arquitectura cliente / servidor (como casi todos los servicios de Internet), por lo que hace falta un servidor DHCP (dhcpd) y el cliente DHCP para su funcionamiento. En el caso más simple es un servidor DHCP el que recibe la solicitud de asignación de dirección IP ( y el resto de los parámetros de configuración) del cliente. Si no existe un servidor DHCP se necesitará un agente (normalmente un router) que sabe la dirección del servidor DHCP. El protocolo funciona en cuatro pasos:    

DHCP discover DHCP offer DHCP request DHCP ACK 194

Modos en DHCP Existen 3 modos en DHCP para poder asignar direcciones IP a otros equipos: •





Asignación manual: El administrador configura manualmente las direcciones IP del cliente en el servidor DCHP. Cuando la estación de trabajo del cliente pide una dirección IP, el servidor mira la dirección MAC y procede a asignar la que configuró el administrador. Asignación automática: Al cliente DHCP (ordenador, impresora, etc.) se le asigna una dirección IP cuando contacta por primera vez con el DHCP Server. En este método la IP es asignada de forma aleatoria y no es configurada de antemano. Asignación dinámica: El servidor DHCP asigna una dirección IP a un cliente de forma temporal. Digamos que es entregada al cliente que hace la petición por un espacio de tiempo. Cuando este tiempo acaba, la IP es revocada y la estación de trabajo ya no puede funcionar en la red hasta que no pida otra.

Instalación yum install –y dhcpd

Configuración El fichero de configuración está en /etc/ y se denomina dhcpd.conf. La configuración es la siguiente: ; Esta opción especifica si el servidor de DHCP debe intentar actualizar el servidor de DNS ddns-update-style interim; ignore client-updates; ;Segmento red y submascara de red subnet 192.168.1.0 netmask 255.255.255.0 { ;Definimos la gateway y la submascara de red option routers option subnet-mask

192.168.1.3; 255.255.255.0;

195

;Rango de IP´S que repartirá range 192.168.1.201 192.168.1.203; ; Tiempo de vida por defecto de la IP default-lease-time 86400; ;Máximo tiempo de vida de la IP max-lease-time 608400; ;DNS option domain-name-servers 194.179.1.100; ;Servidor TFTP option tftp-server-name "192.168.1.3"; }

DHCP también usa el fichero /var/lib/dhcp/dhcpd.leases para almacenar la información de los clientes, se utiliza para saber las IP´s que va asignando. Un ejemplo del contenido del archivo dhcpd.leases tras asignar la IP 192.168.1.203 a un teléfono IP Sipura es:

lease 192.168.1.203 { starts 2 2009/09/22 09:56:15; ends 3 2009/09/23 09:56:15; binding state active; next binding state free; hardware ethernet 00:0e:08:da:c2:3c; uid "\001\000\016\010\332\302" ${confmax}) exten => s,n,Gotoif($[${count} >= ${confmax}]?103) exten => s,n,MeetMe(${MACRO_EXTEN}) exten => s,n,Hangup exten => s,103,Playback(conf-invalid) exten => s,104,Hangup

Como podemos ver en el archivo meetme.conf: conf => 600,1234

Esto indica que sólo hay una conferencia creada y que para acceder a ella habrá que marcar el número 600. Por esto en la primera prueba al marcar el 610 nos saca esto por el CLI a la par que nos informa que no es un número de conferencia el que acabamos de marcar. -- Executing [610@acceso:1] Set("SIP/5000-08d7d7e0", "confmax=2") in new stack -- Executing [610@acceso:2] Macro("SIP/5000-08d7d7e0", "meetme") in new stack -- Executing [s@macro-meetme:1] MeetMeCount("SIP/5000-08d7d7e0", "610|count") in new stack == Parsing '/etc/asterisk/meetme.conf': Found [Dec 10 22:04:27] DEBUG[29699]: app_meetme.c:2587 find_conf: 610 isn't a valid conference

232

[Dec 10 22:04:27] DEBUG[29699]: app_macro.c:379 _macro_exec: Executed application: MeetMeCount -- Executing [s@macro-meetme:2] GotoIf("SIP/5000-08d7d7e0", "0?103") in new stack [Dec 10 22:04:27] DEBUG[29699]: app_macro.c:379 _macro_exec: Executed application: Gotoif -- Executing [s@macro-meetme:3] MeetMe("SIP/5000-08d7d7e0", "610") in new stack == Parsing '/etc/asterisk/meetme.conf': Found [Dec 10 22:04:27] DEBUG[29699]: app_meetme.c:2587 find_conf: 610 isn't a valid conference -- Playing 'conf-invalid' (language 'es') == Spawn extension (macro-meetme, s, 3) exited non-zero on 'SIP/5000-08d7d7e0' in macro 'meetme' == Spawn extension (acceso, 610, 2) exited non-zero on 'SIP/5000-08d7d7e0'

Modificamos el archivo meetme.conf añadiendo la linea: conf => 610 para así crear una nueva conferencia de extensión 610, la cual la limitaremos a 2 personas. No le ponemos contraseña porque esta conferencia al tener restringido el acceso a sólo 2 personas el acceso de ambas personas para hablar será instantáneo. Al igual que antes, agregamos los dos usuarios a la conferencia y probamos con un tercero para ver que resultados obtenemos: -- Executing [610@acceso:1] Set("SIP/5000-b6911148", "confmax=2") in new stack -- Executing [610@acceso:2] Macro("SIP/5000-b6911148", "meetme") in new stack -- Executing [s@macro-meetme:1] MeetMeCount("SIP/5000-b6911148", "610|count") in new stack [Dec 10 22:41:46] DEBUG[30235]: app_macro.c:379 _macro_exec: Executed application: MeetMeCount -- Executing [s@macro-meetme:2] GotoIf("SIP/5000-b6911148", "1?103") in new stack -- Goto (macro-meetme,s,103) [Dec 10 22:41:46] DEBUG[30235]: app_macro.c:379 _macro_exec: Executed application: Gotoif -- Executing [s@macro-meetme:103] Playback("SIP/5000-b6911148", "conf-invalid") in new stack -- Playing 'conf-invalid' (language 'es') [Dec 10 22:41:51] DEBUG[30235]: app_macro.c:379 _macro_exec: Executed application: Playback -- Executing [s@macro-meetme:104] Hangup("SIP/5000-b6911148", "") in new stack == Spawn extension (macro-meetme, s, 104) exited non-zero on 'SIP/5000-b6911148' in macro 'meetme' == Spawn extension (acceso, 610, 2) exited non-zero on 'SIP/5000-b6911148'

El mensaje es claro: "Este no es un numero de conferencia valido, inténtelo de nuevo". 3.) Como último ejemplo vamos a crear una conferencia dinámicamente, es decir, sin configurarla en el meetme.conf. ;Crear una conferencia dinámica exten => 620,1,Meetme(,scDM(default)) exten => 620,n,Hangup

El proceso de creacion es el siguiente: 233

1. Introduzca el numero de conferencia + #: -- Executing [620@acceso:1] MeetMe("SIP/5000-b6902bf0", "|scDM(default)") in new stack -- Playing 'conf-getconfno' (language 'es')

2. Introduzca el pin d ela conferencia -- Playing 'conf-getpin' (language 'es')

3. Crea la conferencia y te pide de nuevo el pin -- Created MeetMe conference 1023 for conference '621' -- Playing 'conf-getpin' (language 'es')

4. Te dice si estas solo o no -- Playing 'conf-onlyperson' (language 'es')

Ahora probemos a añadir otro usuario a la conferencia que la hemos creado con la extensión 621 y 1234 de contraseña.Es importante que no generemos una conferencia con la misma extensión de la creación dinámica de conferencias (620). Para el acceso a cualquier conferencia hay que definir una extensión, en el archivo extensions.conf en este caso la 621: ;Acceso a conferencias dinamicas y estaticas exten => 621,1,Meetme() exten => 621,n,Hangup -- Executing [621@acceso:1] MeetMe("SIP/2003-b6910c70", "") in new stack -- Playing 'conf-getconfno' (language 'es') -- Playing 'conf-getpin' (language 'es') -- Stopped music on hold on SIP/5000-b690f648

Tras poner el número de conferencia + # y el pin se accede a la conferencia. Pruebas Proveedor VoIP: Gizmo5 Uso de Gizmo 5 con Asterisk Este proveedor tiene dos servicios fácilmente acoplables a las centralitas Asterisk:  

Recepción de llamadas. Realización de llamadas.

El primero se consigue a través de una cuenta Call In, de forma que tras obtener la cuenta solo habría que configurar el archivo sip.conf con la información del proveedor

234

y el Dialplan a través del extensions.conf para que determinadas llamadas sean recibidas a través de dicho proveedor. El segundo se consigue a través de una cuenta Call Out, de forma que tras obtener la cuenta, al igual en el servicio Call In, se configuran los archivos sip.conf y extensions.conf. En los siguientes apartados se ve un ejemplo de estas configuraciones y del uso de este servicio. Configuración sip.conf [general] […] register => 17473702523:Yet100:[email protected]/17473702523 [proxy01.sipphone.com] type=peer context=from-external disallow=all allow=ulaw allow=alaw allow=ilbc dtmfmode=rfc2833 host=proxy01.sipphone.com fromdomain=proxy01.sipphone.com insecure=very qualify=yes username=17473702523 fromuser=17473702523 authuser=17473702523 secret=XXXXXXXX canreinvite=no

extensions.conf ;exten => _6XXXXXXXX,1,Dial(SIP/+34${EXTEN}@proxy01.sipphone.com,20,r) ;exten => _6XXXXXXXX,n,Hangup

Comprobación del registro *CLI> sip show peers Name/username Host ---------------------------proxy01.sipphone.com/1747 198.65.166.131

Dyn Nat ACL Port ----------------------5060

Status --------OK (216 ms)

Llamada a movil desde GIZMO 5 utilizando cuenta Call Out: Realización de una llamada desde el usuario SIP/102 hacia un móvil:

235

-- Executing [650XXXXXX@default:1] Dial("SIP/102-08913970", "SIP/[email protected]|20|r") in new stack -- Called [email protected] -- SIP/proxy01.sipphone.com-089213f8 answered SIP/102-08913970 -- Packet2Packet bridging SIP/102-08913970 and SIP/proxy01.sipphone.com-089213f8 == Spawn extension (default, 650XXXXXX, 1) exited non-zero on 'SIP/102-08913970'

Pruebas Trunk IAX entre dos servidores Asterisk ¿Qué es un Trunk? Un Trunk es una conexión, bien entre dos servidores o entre un servidor y las aplicaciones de un operador de Telefonía IP que permite el tráfico de VoIP. Trunk IAX Local entre dos servidores Asterisk Como se ve en la imagen siguiente el Trunk IAX enlaza dos servidores de la misma red.

La configuración necesaria para que las extensiones de ambos servidores puedan comunicarse es la siguiente:

236

Tras reiniciar ambos servidores, comprobamos que el registro de las extensiones trunk es correcto:

Al realizar una llamada desde la extensión 2003 del Servidor a la 100 del Portátil en el CLI de Asterisk obtenemos:

237

Al realizar una llamada desde la extensión 100 del Portátil a la 2003 del Servidor en el CLI de Asterisk obtenemos:

238

Trunk IAX entre dos servidores Asterisk La configuración sería igual a la del Trunk IAX local, la única diferencia es que sería necesario abrir el puerto correspondiente al protocolo IAX 2 en ambos routers para poder recibir los paquetes uno del otro.

Pruebas extensión remota Para configurar una extensión remota debemos configurarla como cualquier otra en iax.conf: [6000] type=friend username=6000 secret=1234 host=dynamic context=remoto canreinvite=yes dtmfmode=rfc2833

Debemos configurar su acceso en el fichero extensions.conf: [remoto] exten => 6000,1,Dial(IAX2/${EXTEN},30,Ttm) exten => 6000,n,Hangup

En el otro lado tendremos configurado en un softphone Zoiper una extensión IAX poniendo como Dominio la IP externa del servidor. 239

Para poder establecer el registro de dicha extensión es necesario abrir el puerto correspondiente al protocolo IAX 2 (4569) en el router por el que se comunica con el exterior la centralita Asterisk.Tras abrir el puerto deberíamos ver algo similar a esto:

Este es el esquema de la conexión con una extensión remota:

Para comprobar el correcto funcionamiento vemos el registro de la extensión remota(6000): -- Registered IAX2 '6000' (AUTHENTICATED) at 82.130.246.138:45755 localhost*CLI> iax2 show peers Name/Username Host Mask 6001/6001 192.168.1.50 (D) 255.255.255.255 6000/6000 82.130.246.138 (D) 255.255.255.255 2 iax2 peers [0 online, 0 offline, 2 unmonitored]

Port 4569 45755

Status Unmonitored Unmonitored

240

Y probamos a llamar desde la extensión de prueba 6001 a la extensión remota: -- Accepting AUTHENTICATED call from 192.168.1.50: > requested format = gsm, > requested prefs = (), > actual format = gsm, > host prefs = (gsm|ulaw|alaw), > priority = mine -- Executing [6000@remoto:1] Dial("IAX2/6001-14139", "IAX2/6000|30|Ttm") in new stack -- Called 6000 -- Started music on hold, class 'default', on IAX2/6001-14139 -- Call accepted by 82.130.246.138 (format gsm) -- Format for call is gsm -- IAX2/6000-9140 is ringing -- IAX2/6000-9140 answered IAX2/6001-14139 -- Stopped music on hold on IAX2/6001-14139 -- Hungup 'IAX2/6000-9140' == Spawn extension (remoto, 6000, 1) exited non-zero on 'IAX2/6001-14139' -- Hungup 'IAX2/6001-14139'

Prueba con Adaptador Telefónico Analógico SPA 3000 El esquema de las pruebas es el siguiente:

241

En primer lugar tenemos que acceder a la configuración del SPA 3000 a través de la IP (192.168.1.211) para configurar las llamadas entrantes a través del apartado PSTN Line (PSTN->VoIP) y las llamadas salientes a través del apartado Line 1 (VoIP->PSTN). Line 1

PSTN Line

Vemos la configuración del fichero sip.conf: [9000] type=friend username=9000 secret=1234 host=dynamic context=pstn qualify=yes

242

[9001] type=peer username=9001 fromuser=9001 secret=1234 host=dynamic port=5061 context=pstn dtmfmode=rfc2833 insecure=very

Comprobamos el registro de las dos líneas: -- Registered SIP '9000' at 192.168.1.211 port 5060 -- Saved useragent "Sipura/SPA3000-2.0.13(GWg)" for peer 9000 -- Registered SIP '9001' at 192.168.1.211 port 5061 -- Saved useragent "Sipura/SPA3000-2.0.13(GWg)" for peer 9001 NOTICE[3840]: chan_sip.c:13107 handle_response_peerpoke: Peer '9000' is now Reachable. (25ms / 2000ms) localhost*CLI> sip show peers Name/username Host Dyn Nat ACL Port Status 9001/9001 192.168.1.211 D 5061 Unmonitored 9000/9000 192.168.1.211 D 5060 OK (14 ms)

La configuración del fichero extensions.conf teniendo en cuenta que queremos que las llamadas entrantes de números que empiecen por 9 se redireccionen a un teléfono analógico y las de los números que empiecen por 6 se redireccionen a un teléfono IP y que también queremos que las llamadas salientes que empiecen por 9 salgan por la PSTN: [globals] PSTN=192.168.1.211:5061 [pstn] ;Entrantes exten => 9001,1,NoOP("El CALLERID es: ${CALLERID(num)}") exten => 9001,n,GotoIf($["${CALLERID(num):0:1}"= "9"]?100:200) exten => 9001,100,Goto(pstn,9000,1) exten => 9001,200,Goto(pstn,103,1) ;Si es un numero que empieza por 9 exten => 9000,1,Dial(SIP/9000,30,Ttm) exten => 9000,n,Hangup ;Si es un numero que empieza por 6 exten => 103,1,Dial(SIP/103,30,Ttm) exten => 103,n,Hangup ;Salientes exten => _9XXXXXXXX,1,Dial(SIP/${EXTEN}@${PSTN},30,Ttm) exten => _9XXXXXXXX,n,Hangup

Realizamos 3 pruebas para comprobar el correcto funcionamiento: Prueba 1) Llamada desde un móvil al número que está conectado con el SPA 3000: 243

-- Executing [9001@pstn:1] NoOp("SIP/9001-b7776538", ""El CALLERID es: 650664616"") in new stack -- Executing [9001@pstn:2] GotoIf("SIP/9001-b7776538", "0?100:200") in new stack -- Goto (pstn,9001,200) -- Executing [9001@pstn:200] Goto("SIP/9001-b7776538", "pstn|103|1") in new stack -- Goto (pstn,103,1) -- Executing [103@pstn:1] Dial("SIP/9001-b7776538", "SIP/103|30|Ttm") in new stack -- Called 103 -- Started music on hold, class 'default', on SIP/9001-b7776538 -- SIP/103-0a157af0 is ringing -- Stopped music on hold on SIP/9001-b7776538 == Spawn extension (pstn, 103, 1) exited non-zero on 'SIP/9001-b7776538'

Prueba 2) Llamada desde un teléfono fijo al número que está conectado con el SPA: -- Executing [9001@pstn:1] NoOp("SIP/9001-b7771ae0", ""El CALLERID es: 945177145"") in new stack -- Executing [9001@pstn:2] GotoIf("SIP/9001-b7771ae0", "1?100:200") in new stack -- Goto (pstn,9001,100) -- Executing [9001@pstn:100] Goto("SIP/9001-b7771ae0", "pstn|9000|1") in new stack -- Goto (pstn,9000,1) -- Executing [9000@pstn:1] Dial("SIP/9001-b7771ae0", "SIP/9000|30|Ttm") in new stack -- Called 9000 -- Started music on hold, class 'default', on SIP/9001-b7771ae0 -- SIP/9000-0a157af0 is ringing -- Stopped music on hold on SIP/9001-b7771ae0 == Spawn extension (pstn, 9000, 1) exited non-zero on 'SIP/9001-b7771ae0'

Prueba 3) Llamada desde la extensión 103 de la centralita a un número fijo: -- Executing [945177145@acceso2:1] Dial("SIP/103-0a157af0", "SIP/[email protected]:5061|30|Ttm") in new stack -- Called [email protected]:5061 -- Started music on hold, class 'default', on SIP/103-0a157af0 -- SIP/192.168.1.211:5061-0a15d138 is ringing -- SIP/192.168.1.211:5061-0a15d138 answered SIP/103-0a157af0 -- Stopped music on hold on SIP/103-0a157af0 == Spawn extension (acceso2, 945177145, 1) exited non-zero on 'SIP/103-0a157af0'

244

Capítulo

4

Centralita Asterisk para Yet Informática y Pruebas realizadas

Descripción de la centralita nueva: Asterisk Para la correcta creación e implantación de la centralita Asterisk en la empresa Yet Informática S.L. se ha hecho un Demo para ver el futuro funcionamiento de la central de una manera más reducida, tras las pruebas generales , las de las aplicaciones integradas en la centralita y las de otras funcionalidades nuevas estaremos preparados para dicha implantación. A continuación veremos cada uno de estos pasos a realizar.

245

Esquema Conceptual del Demo realizado antes de la implantación

246

Explicación del Plan de llamadas de la Centralita (Dialplan) Llamadas entrantes

247

248

249

250

251

Accesos Directos a usuarios de la Empresa

252

Gestión de Buzones de Voz

Gestión de las Colas de la aplicación

253

254

Funcionamiento de la Funcionalidad CallBack Los pasos para realizar el CallBack son los siguientes: 1) Marcar el teléfono al que se llamará. 2) Marcar la fecha de la llamada en el formato siguiente: 4 dígitos para el año 2 dígitos para el mes 2 dígitos para el día 3) Marcar la hora de la llamada en el formato siguiente: 2 dígitos para la hora 2 dígitos para los minutos 4) Verificar que los datos introducidos son correctos o volver a introducirlos. 5) Se generará el Call File teniendo en cuenta si la llamada será a un número externo o no, para comprobarlo mira que el primer digito sea un 6.

255

Uso de Conferencias en la aplicación Agregarse a la conferencia 600

Saber cuántas personas hay en la conferencia

Restringir el número de participantes de una conferencia

Uso de Conferencia dinámica

Última llamada recibida Esta funcionalidad en los teléfonos IP de gama media o alta no haría falta pero para poder obtener esta información usando cualquier teléfono IP se ha implementado.

256

Consiste en comprobar en la base de datos del CDR cuál ha sido la última llamada recibida para el CALLERID que ha llamado a la extensión de esta funcionalidad y llamarla.

Última llamada realizada Consiste en comprobar en la base de datos del CDR cuál ha sido la última llamada realizada por el CALLERID que ha llamado a la extensión de esta funcionalidad y llamarla. Si la última llamada a sido realizada a un usuario interno se mira cual es la llamada anterior y si no es interna se realiza la llamada.

257

Funcionamiento de la Funcionalidad DISA Configuración 1) Al llamar a la centralita un determinado número, está le llama y le da tono para llamar a través de esta.

Configuración 2) Al llamar a la extensión 333 de la centralita, está le llama y le da tono para llamar a través de esta.

258

Configuración 3) Al llamar a la extensión 9999 de la centralita, tras marcar la contraseña 1234 seguido del carácter #, está da tono para llamar a través de esta a cualquier número de salida que este en el contexto “acceso”.

Funcionamiento del desvío de las llamadas de usuarios internos a otro teléfono

Activación del desvío de llamadas de una extensión de un usuario interno

Desactivación del desvío de llamadas de una extensión de un usuario interno

259

Prueba para la extensión 5000 tras efectuar el desvío.

Pruebas generales Prueba 1) Llama a la centralita en un horario no laborable un usuario VIP. Parte de código utilizado: [acceso] exten => 787,1,Set(NUM=${EXTEN}) exten => 787,n,Macro(general,soportelaboral,${CALS},${NUM}) [macro-general] ;1)COMPROBACION CON EL CALENDARIO exten => s,1,Answer exten => s,n,Set(SALTO=${ARG1}) exten => s,n,AGI(${ARG2}) exten => s,n,Goto(${SALTO},${ARG3},1) [No Disponible Soporte] ;Comprobar en la base de datos si el cliente es VIP(contrato de mantenimiento de 24h).Si lo es se le envia a la prioridad 100 sino lo es a la 90. exten => 787,1,MYSQL(Connect connid localhost root root agenda) exten => 787,n,NoOp(connid = ${connid}) exten => 787,n,Set(NUM2= ${CALLERID(num)}) exten => 787,n,MYSQL(Query resultid ${connid} SELECT\ mant FROM\ clientes\ INNER\ JOIN\ telefono\ ON\ clientes.id=telefono.idEmp\ WHERE\ telefono=650664616) ;exten => 787,n,MYSQL(Query resultid ${connid} SELECT\ mant FROM\ clientes\ INNER\ JOIN\ telefono\ ON\ clientes.id=telefono.idEmp\ WHERE\ telefono=${NUM2}) exten => 787,n,NoOp(resultid = ${resultid}) exten => 787,n,MYSQL(Fetch fetchid ${resultid} MANT) exten => 787,n,NoOp(MANT = ${MANT}) exten => 787,n,MYSQL(Disconnect ${connid}) exten => 787,n,GotoIf($["${MANT}"="VIP"]?100:90) exten => 787,90,Macro(nodisponible,${BS}) exten => 787,100,Set(N=650664616) ;exten => 787,100,Set(N=${NUM2}) exten => 787,n,Gotoif($["${N:0:1}" = "6"]?200:300) exten => 787,200,Dial(SIP/+34${MOVIL1}@proxy01.sipphone.com,20,r) exten => 787,n,Dial(Sebi/g1/${MOVIL1},30) exten => 787,n,Dial(SIP/+34${MOVIL2}@proxy01.sipphone.com,20,r) exten => 787,n,Dial(Sebi/g1/${MOVIL2},30) exten => 787,n,AGI(sms_send.php) exten => 787,n,Voicemail(3333) exten => 787,n,Hangup ;sI ESTUVIERA CONECTADO A LA PSTN Y NO FUERA UN MOVIL SALDRIA POR AHI exten => 787,300,Dial(DAHDI/${MOVIL1},20,r)

260

exten => 787,n,Dial(DAHDI/${MOVIL2},20,r) exten => 787,n,AGI(sms_send.php) exten => 787,n,Voicemail(3333) exten => 787,n,Hangup

El log en caso de que coja el móvil el encargado de atender a usuarios 24 desde el proveedor IP Gizmo 5: -- Executing [787@acceso:1] Set("SIP/2003-b6901320", "NUM=787") in new stack -- Executing [787@acceso:2] Macro("SIP/2003-b6901320", "general|soportelaboral|pyastcal.py|787") in new stack -- Executing [s@macro-general:1] Answer("SIP/2003-b6901320", "") in new stack -- Executing [s@macro-general:2] Set("SIP/2003-b6901320", "SALTO=soportelaboral") in new stack -- Executing [s@macro-general:3] AGI("SIP/2003-b6901320", "pyastcal.py") in new stack -- Launched AGI Script /var/lib/asterisk/agi-bin/pyastcal.py -- AGI Script pyastcal.py completed, returning 0 -- Executing [s@macro-general:4] Goto("SIP/2003-b6901320", "No Disponible Soporte|787|1") in new stack -- Goto (No Disponible Soporte,787,1) == Channel 'SIP/2003-b6901320' jumping out of macro 'general' -- Executing [787@No Disponible Soporte:1] MYSQL("SIP/2003-b6901320", "Connect connid localhost root root agenda") in new stack -- Executing [787@No Disponible Soporte:2] NoOp("SIP/2003-b6901320", "connid = 1") in new stack -- Executing [787@No Disponible Soporte:3] Set("SIP/2003-b6901320", "NUM2= 2003") in new stack -- Executing [787@No Disponible Soporte:4] MYSQL("SIP/2003-b6901320", "Query resultid 1 SELECT mant FROM clientes INNER JOIN telefono ON clientes.id=telefono.idEmp WHERE telefono=650664616") in new stack -- Executing [787@No Disponible Soporte:5] NoOp("SIP/2003-b6901320", "resultid = 2") in new stack -- Executing [787@No Disponible Soporte:6] MYSQL("SIP/2003-b6901320", "Fetch fetchid 2 MANT") in new stack -- Executing [787@No Disponible Soporte:7] NoOp("SIP/2003-b6901320", "MANT = VIP") in new stack -- Executing [787@No Disponible Soporte:8] MYSQL("SIP/2003-b6901320", "Disconnect 1") in new stack -- Executing [787@No Disponible Soporte:9] GotoIf("SIP/2003-b6901320", "1?100:90") in new stack -- Goto (No Disponible Soporte,787,100) -- Executing [787@No Disponible Soporte:100] Set("SIP/2003-b6901320", "N=650664616") in new stack -- Executing [787@No Disponible Soporte:101] GotoIf("SIP/2003-b6901320", "1?200:300") in new stack -- Goto (No Disponible Soporte,787,200) -- Executing [787@No Disponible Soporte:200] Dial("SIP/2003-b6901320", "SIP/[email protected]|20|r") in new stack -- Called [email protected] -- SIP/proxy01.sipphone.com-0a1e3628 answered SIP/2003-b6901320 -- Packet2Packet bridging SIP/2003-b6901320 and SIP/proxy01.sipphone.com-0a1e3628 == Spawn extension (No Disponible Soporte, 787, 200) exited non-zero on 'SIP/2003-b6901320'

Para ver el correcto envio de SMS quito el valor a las variables que contienen los móviles a llamar en horario no laboral: -- Executing [787@acceso:1] Set("SIP/2003-b6900f70", "NUM=787") in new stack -- Executing [787@acceso:2] Macro("SIP/2003-b6900f70", "general|soportelaboral|pyastcal.py|787") in new stack -- Executing [s@macro-general:1] Answer("SIP/2003-b6900f70", "") in new stack -- Executing [s@macro-general:3] AGI("SIP/2003-b6900f70", "pyastcal.py") in new stack -- Launched AGI Script /var/lib/asterisk/agi-bin/pyastcal.py -- AGI Script pyastcal.py completed, returning 0

261

-- Executing [s@macro-general:4] Goto("SIP/2003-b6900f70", "No Disponible Soporte|787|1") in new stack -- Goto (No Disponible Soporte,787,1) == Channel 'SIP/2003-b6900f70' jumping out of macro 'general' -- Executing [787@No Disponible Soporte:1] MYSQL("SIP/2003-b6900f70", "Connect connid localhost root root agenda") in new stack -- Executing [787@No Disponible Soporte:2] NoOp("SIP/2003-b6900f70", "connid = 1") in new stack -- Executing [787@No Disponible Soporte:3] Set("SIP/2003-b6900f70", "NUM2= 2003") in new stack -- Executing [787@No Disponible Soporte:4] MYSQL("SIP/2003-b6900f70", "Query resultid 1 SELECT mant FROM clientes INNER JOIN telefono ON clientes.id=telefono.idEmp WHERE telefono=650664616") in new stack -- Executing [787@No Disponible Soporte:5] NoOp("SIP/2003-b6900f70", "resultid = 2") in new stack -- Executing [787@No Disponible Soporte:6] MYSQL("SIP/2003-b6900f70", "Fetch fetchid 2 MANT") in new stack -- Executing [787@No Disponible Soporte:7] NoOp("SIP/2003-b6900f70", "MANT = VIP") in new stack -- Executing [787@No Disponible Soporte:8] MYSQL("SIP/2003-b6900f70", "Disconnect 1") in new stack -- Executing [787@No Disponible Soporte:9] GotoIf("SIP/2003-b6900f70", "1?100:90") in new stack -- Goto (No Disponible Soporte,787,100) -- Executing [787@No Disponible Soporte:100] Set("SIP/2003-b6900f70", "N=650664616") in new stack -- Executing [787@No Disponible Soporte:101] GotoIf("SIP/2003-b6900f70", "1?200:300") in new stack -- Goto (No Disponible Soporte,787,200) -- Executing [787@No Disponible Soporte:200] Dial("SIP/2003-b6900f70", "SIP/[email protected]|20|r") in new stack == Everyone is busy/congested at this time (1:0/0/1) -- Executing [787@No Disponible Soporte:201] Dial("SIP/2003-b6900f70", "Sebi/g1/|30") in new stack == Everyone is busy/congested at this time (1:0/0/1) -- Executing [787@No Disponible Soporte:202] Dial("SIP/2003-b6900f70", "SIP/[email protected]|20|r") in new stack == Everyone is busy/congested at this time (1:0/0/1) -- Executing [787@No Disponible Soporte:203] Dial("SIP/2003-b6900f70", "Sebi/g1/|30") in new stack == Everyone is busy/congested at this time (1:0/0/1) -- Executing [787@No Disponible Soporte:204] AGI("SIP/2003-b6900f70", "sms_send.php") in new stack -- Launched AGI Script /var/lib/asterisk/agi-bin/sms_send.php -- AGI Script sms_send.php completed, returning 0 == Spawn extension (No Disponible Soporte, 787, 205) exited non-zero on 'SIP/2003-b6900f70'

Prueba 2) Llama a la centralita en un horario no laborable un usuario no VIP. Parte de código utilizado: [No Disponible Soporte] ;Comprobar en la base de datos si el cliente es VIP(contrato de mantenimiento de 24h).Si lo es se le envia a la prioridad 100 sino lo es a la 90. exten => 787,1,MYSQL(Connect connid localhost root root agenda) exten => 787,n,NoOp(connid = ${connid}) exten => 787,n,Set(NUM2= ${CALLERID(num)}) exten => 787,n,MYSQL(Query resultid ${connid} SELECT\ mant FROM\ clientes\ INNER\ JOIN\ telefono\ ON\ clientes.id=telefono.idEmp\ WHERE\ telefono=650664616) ;exten => 787,n,MYSQL(Query resultid ${connid} SELECT\ mant FROM\ clientes\ INNER\ JOIN\ telefono\ ON\ clientes.id=telefono.idEmp\ WHERE\ telefono=${NUM2}) exten => 787,n,NoOp(resultid = ${resultid}) exten => 787,n,MYSQL(Fetch fetchid ${resultid} MANT) exten => 787,n,NoOp(MANT = ${MANT}) exten => 787,n,MYSQL(Disconnect ${connid}) exten => 787,n,GotoIf($["${MANT}"="VIP"]?100:90)

262

exten => 787,90,Macro(nodisponible,${BS}) [macro-nodisponible] exten => s,1,PLayBack(grabacion2) exten => s,n,Voicemail(${ARG1}) exten => S,n,Hangup

El log desde el CLI es el siguiente: -- Executing [787@acceso:1] Set("SIP/2003-0a1e3110", "NUM=787") in new stack -- Executing [787@acceso:2] Macro("SIP/2003-0a1e3110", "general|soportelaboral|pyastcal.py|787") in new stack -- Executing [s@macro-general:1] Answer("SIP/2003-0a1e3110", "") in new stack -- Executing [s@macro-general:2] Set("SIP/2003-0a1e3110", "SALTO=soportelaboral") in new stack -- Executing [s@macro-general:3] AGI("SIP/2003-0a1e3110", "pyastcal.py") in new stack -- Launched AGI Script /var/lib/asterisk/agi-bin/pyastcal.py -- AGI Script pyastcal.py completed, returning 0 -- Executing [s@macro-general:4] Goto("SIP/2003-0a1e3110", "No Disponible Soporte|787|1") in new stack -- Goto (No Disponible Soporte,787,1) == Channel 'SIP/2003-0a1e3110' jumping out of macro 'general' -- Executing [787@No Disponible Soporte:1] MYSQL("SIP/2003-0a1e3110", "Connect connid localhost root root agenda") in new stack -- Executing [787@No Disponible Soporte:2] NoOp("SIP/2003-0a1e3110", "connid = 1") in new stack -- Executing [787@No Disponible Soporte:3] Set("SIP/2003-0a1e3110", "NUM2= 2003") in new stack -- Executing [787@No Disponible Soporte:4] MYSQL("SIP/2003-0a1e3110", "Query resultid 1 SELECT mant FROM clientes INNER JOIN telefono ON clientes.id=telefono.idEmp WHERE telefono= 2003") in new stack -- Executing [787@No Disponible Soporte:5] NoOp("SIP/2003-0a1e3110", "resultid = 2") in new stack -- Executing [787@No Disponible Soporte:6] MYSQL("SIP/2003-0a1e3110", "Fetch fetchid 2 MANT") in new stack -- Executing [787@No Disponible Soporte:7] NoOp("SIP/2003-0a1e3110", "MANT = ") in new stack -- Executing [787@No Disponible Soporte:8] MYSQL("SIP/2003-0a1e3110", "Disconnect 1") in new stack -- Executing [787@No Disponible Soporte:9] GotoIf("SIP/2003-0a1e3110", "0?100:90") in new stack -- Goto (No Disponible Soporte,787,90) -- Executing [787@No Disponible Soporte:90] Macro("SIP/2003-0a1e3110", "nodisponible|3333") in new stack -- Executing [s@macro-nodisponible:1] Playback("SIP/2003-0a1e3110", "grabacion2") in new stack -- Executing [s@macro-nodisponible:2] VoiceMail("SIP/2003-0a1e3110", "3333") in new stack -- Playing 'vm-intro' (language 'es') == Spawn extension (macro-nodisponible, s, 2) exited non-zero on 'SIP/2003-0a1e3110' in macro 'nodisponible' == Spawn extension (No Disponible Soporte, 787, 90) exited non-zero on 'SIP/2003-0a1e3110'

Prueba 3) Llama a la centralita en un horario laboral un usuario VIP. 1) Pausar todos los miembros menos el 2001 de la cola del Departamento de Soporte, al que le llegarán todas las llamadas. 2) El 2005 llama a la cola.(se le mantiene en espera) 3) El 4000 llama a la cola.(se le mantiene en espera) 4) El 2003 llama a la cola --> QUEUE_PRIO=10 (se le mantiene en espera) 5) Cuando el 2001 coja el telefono deberia hablar con 2003.

263

El código utilizado en el apartado 1 es el siguiente: exten => _XXXX22,1,PauseQueueMember(${QS}|SIP/${EXTEN:0:4}) exten => _XXXX22,n,Hangup

El log del CLI del apartado 1 es: -- Executing [200022@acceso:1] PauseQueueMember("SIP/2003-b6900590", "soportequeue|SIP/2000") in new stack -- Executing [200022@acceso:2] Hangup("SIP/2003-b6900590", "") in new stack -- Executing [200522@acceso:1] PauseQueueMember("SIP/2003-b690ea58", "soportequeue|SIP/2005") in new stack -- Executing [200522@acceso:2] Hangup("SIP/2003-b690ea58", "") in new stack == Spawn extension (acceso, 200522, 2) exited non-zero on 'SIP/2003-b690ea58' -- Executing [200322@acceso:1] PauseQueueMember("SIP/2003-b690d430", "soportequeue|SIP/2003") in new stack -- Executing [200322@acceso:2] Hangup("SIP/2003-b690d430", "") in new stack

El código utilizado en los apartados 2,3,4 y 5 es el siguiente: exten => 787,1,Set(NUM=${EXTEN}) exten => 787,n,Macro(general,soportelaboral,${CALS},${NUM}) [macro-general] ;1)COMPROBACION CON EL CALENDARIO exten => s,1,Answer exten => s,n,Set(SALTO=${ARG1}) exten => s,n,AGI(${ARG2}) exten => s,n,Goto(${SALTO},${ARG3},1) [soportelaboral] exten => 787,1,Macro(laboral,${QS}) [macro-laboral] exten => s,1,Answer exten => s,n,Wait(2) exten => s,n,SetMusicOnHold(default) ;Consultar con la base de datos si es VIP para pasar a la primera posicion de la cola exten => s,n,MYSQL(Connect connid localhost root root agenda) exten => s,n,MYSQL(Query resultid ${connid SELECT\ mant FROM\ clientes\ INNER\ JOIN\ telefono\ ON\ clientes.id=telefono.idEmp WHERE\ telefono="NUM2"}) exten => s,n,NoOp(resultid = ${resultid}) ;Si es VIP --> POSICIONAR DELANTE EN LA COLA exten => s,n,MYSQL(Fetch fetchid ${resultid} PRIO) exten => s,n,NoOp( ${PRIO}) exten => s,n,GotoIf($["${PRIO}"="VIP"]?prio:no) exten => s,n(prio),MYSQL(Disconnect ${connid}) ;exten => s,n,GotoIf($["${NUM}"=2003]?prio2:no) exten => s,n,Set(QUEUE_PRIO=10) exten => s,n,Queue(${ARG1}|r) exten => s,n,Hangup exten => s,n(no),MYSQL(Disconnect ${connid}) exten => s,n,Queue(${ARG1}|r) exten => s,n,Hangup

264

El log del CLI del apartado 2 es: -- Executing [787@acceso:1] Set("SIP/2005-b6902d00", "NUM=787") in new stack -- Executing [787@acceso:2] Macro("SIP/2005-b6902d00", "general|soportelaboral|pyastcal.py|787") in new stack -- Executing [s@macro-general:1] Answer("SIP/2005-b6902d00", "") in new stack -- Executing [s@macro-general:2] Set("SIP/2005-b6902d00", "SALTO=soportelaboral") in new stack -- Executing [s@macro-general:3] AGI("SIP/2005-b6902d00", "pyastcal.py") in new stack -- Launched AGI Script /var/lib/asterisk/agi-bin/pyastcal.py -- AGI Script pyastcal.py completed, returning 0 -- Executing [s@macro-general:4] Goto("SIP/2005-b6902d00", "soportelaboral|787|1") in new stack -- Goto (soportelaboral,787,1) == Channel 'SIP/2005-b6902d00' jumping out of macro 'general' -- Executing [787@soportelaboral:1] Macro("SIP/2005-b6902d00", "laboral|soportequeue") in new stack -- Executing [s@macro-laboral:1] Answer("SIP/2005-b6902d00", "") in new stack -- Executing [s@macro-laboral:2] Wait("SIP/2005-b6902d00", "2") in new stack -- Executing [s@macro-laboral:3] SetMusicOnHold("SIP/2005-b6902d00", "default") in new stack -- Executing [s@macro-laboral:5] MYSQL("SIP/2005-b6902d00", "Query resultid ") in new stack -- Executing [s@macro-laboral:6] NoOp("SIP/2005-b6902d00", "resultid = ") in new stack -- Executing [s@macro-laboral:7] MYSQL("SIP/2005-b6902d00", "Fetch fetchid PRIO") in new stack -- Executing [s@macro-laboral:8] NoOp("SIP/2005-b6902d00", " ") in new stack -- Executing [s@macro-laboral:9] GotoIf("SIP/2005-b6902d00", "0?prio:no") in new stack -- Goto (macro-laboral,s,14) -- Executing [s@macro-laboral:14] MYSQL("SIP/2005-b6902d00", "Disconnect 1") in new stack -- Executing [s@macro-laboral:15] Queue("SIP/2005-b6902d00", "soportequeue|r") in new stack -- Called SIP/2001 -- SIP/2001-0a17d960 is ringing

El log del CLI del apartado 3 es: -- Executing [787@acceso:1] Set("SIP/4000-b6900590", "NUM=787") in new stack -- Executing [787@acceso:2] Macro("SIP/4000-b6900590", "general|soportelaboral|pyastcal.py|787") in new stack -- Executing [s@macro-general:1] Answer("SIP/4000-b6900590", "") in new stack -- Executing [s@macro-general:2] Set("SIP/4000-b6900590", "SALTO=soportelaboral") in new stack -- Executing [s@macro-general:3] AGI("SIP/4000-b6900590", "pyastcal.py") in new stack -- Launched AGI Script /var/lib/asterisk/agi-bin/pyastcal.py -- AGI Script pyastcal.py completed, returning 0 -- Executing [s@macro-general:4] Goto("SIP/4000-b6900590", "soportelaboral|787|1") in new stack -- Goto (soportelaboral,787,1) == Channel 'SIP/4000-b6900590' jumping out of macro 'general' -- Executing [787@soportelaboral:1] Macro("SIP/4000-b6900590", "laboral|soportequeue") in new stack -- Executing [s@macro-laboral:1] Answer("SIP/4000-b6900590", "") in new stack -- Executing [s@macro-laboral:2] Wait("SIP/4000-b6900590", "2") in new stack -- Executing [s@macro-laboral:3] SetMusicOnHold("SIP/4000-b6900590", "default") in new stack -- Executing [s@macro-laboral:4] MYSQL("SIP/4000-b6900590", "Connect connid localhost root root agenda") in new stack -- Executing [s@macro-laboral:5] MYSQL("SIP/4000-b6900590", "Query resultid ") in new stack -- Executing [s@macro-laboral:6] NoOp("SIP/4000-b6900590", "resultid = ") in new stack -- Executing [s@macro-laboral:7] MYSQL("SIP/4000-b6900590", "Fetch fetchid PRIO") in new stack -- Executing [s@macro-laboral:8] NoOp("SIP/4000-b6900590", " ") in new stack -- Executing [s@macro-laboral:9] GotoIf("SIP/4000-b6900590", "0?prio:no") in new stack -- Goto (macro-laboral,s,14) -- Executing [s@macro-laboral:14] MYSQL("SIP/4000-b6900590", "Disconnect 1") in new stack

265

-- Executing [s@macro-laboral:15] Queue("SIP/4000-b6900590", "soportequeue|r") in new stack -- Called SIP/2001 -- SIP/2001-0a1fb1b8 is ringing -- Nobody picked up in 10000 ms

El log del CLI del apartado 4 es: -- Executing [787@acceso:1] Set("SIP/2003-b6902d00", "NUM=787") in new stack -- Executing [787@acceso:2] Macro("SIP/2003-b6902d00", "general|soportelaboral|pyastcal.py|787") in new stack -- Executing [s@macro-general:1] Answer("SIP/2003-b6902d00", "") in new stack -- Executing [s@macro-general:2] Set("SIP/2003-b6902d00", "SALTO=soportelaboral") in new stack -- Executing [s@macro-general:3] AGI("SIP/2003-b6902d00", "pyastcal.py") in new stack -- Launched AGI Script /var/lib/asterisk/agi-bin/pyastcal.py -- AGI Script pyastcal.py completed, returning 0 -- Executing [s@macro-general:4] Goto("SIP/2003-b6902d00", "soportelaboral|787|1") in new stack -- Goto (soportelaboral,787,1) == Channel 'SIP/2003-b6902d00' jumping out of macro 'general' -- Executing [787@soportelaboral:1] Macro("SIP/2003-b6902d00", "laboral|soportequeue") in new stack -- Executing [s@macro-laboral:1] Answer("SIP/2003-b6902d00", "") in new stack -- Executing [s@macro-laboral:2] Wait("SIP/2003-b6902d00", "2") in new stack -- Executing [s@macro-laboral:3] SetMusicOnHold("SIP/2003-b6902d00", "default") in new stack -- Executing [s@macro-laboral:4] MYSQL("SIP/2003-b6902d00", "Connect connid localhost root root agenda") in new stack -- Executing [s@macro-laboral:5] MYSQL("SIP/2003-b6902d00", "Query resultid 1 SELECT mant FROM clientes INNER JOIN telefono ON clientes.id=telefono.idEmp WHERE telefono=650664616") in new stack -- Executing [s@macro-laboral:6] NoOp("SIP/2003-b6902d00", "resultid = 2") in new stack -- Executing [s@macro-laboral:7] MYSQL("SIP/2003-b6902d00", "Fetch fetchid 2 PRIO") in new stack -- Executing [s@macro-laboral:8] NoOp("SIP/2003-b6902d00", " VIP") in new stack -- Executing [s@macro-laboral:9] GotoIf("SIP/2003-b6902d00", "1?prio:no") in new stack -- Goto (macro-laboral,s,10) -- Executing [s@macro-laboral:10] MYSQL("SIP/2003-b6902d00", "Disconnect 1") in new stack -- Executing [s@macro-laboral:11] Set("SIP/2003-b6902d00", "QUEUE_PRIO=10") in new stack -- Executing [s@macro-laboral:12] Queue("SIP/2003-b6902d00", "soportequeue|r") in new stack -- Called SIP/2001 -- SIP/2001-0a1ee040 is ringing -- Nobody picked up in 10000 ms

El log del CLI del apartado 5 es: -- SIP/2001-0a217400 answered SIP/2003-b69196e8 -- Native bridging SIP/2003-b69196e8 and SIP/2001-0a217400

Prueba 4) Llama a la centralita en un horario laboral un usuario no VIP. Parte de código utilizado: [macro-general] ;1)COMPROBACION CON EL CALENDARIO exten => s,1,Answer exten => s,n,Set(SALTO=${ARG1})

266

exten => s,n,AGI(${ARG2}) exten => s,n,Goto(${SALTO},${ARG3},1) [soportelaboral] ;PRUEBAS exten => 787,1,Macro(laboral,${QS}) [macro-laboral] exten => s,1,Answer exten => s,n,Wait(2) exten => s,n,SetMusicOnHold(default) ;Consultar con la base de datos si es VIP para pasar a la primera posicion de la cola exten => s,n,MYSQL(Connect connid localhost root root agenda) exten => s,n,MYSQL(Query resultid ${connid SELECT\ mant FROM\ clientes\ INNER\ JOIN\ telefono\ ON\ clientes.id=telefono.idEmp WHERE\ telefono="NUM2"}) ;exten => s,n,MYSQL(Query resultid ${connid} SELECT\ mant FROM\ clientes\ INNER\ JOIN\ telefono\ ON\ clientes.id=telefono.idEmp\ WHERE\ telefono=650664616) exten => s,n,NoOp(resultid = ${resultid}) ;Si es VIP --> POSICIONAR DELANTE EN LA COLA exten => s,n,MYSQL(Fetch fetchid ${resultid} PRIO) exten => s,n,NoOp( ${PRIO}) exten => s,n,GotoIf($["${PRIO}"="VIP"]?prio:no) exten => s,n(prio),MYSQL(Disconnect ${connid}) ;exten => s,n,GotoIf($["${NUM}"=2003]?prio2:no) exten => s,n,Set(QUEUE_PRIO=10) exten => s,n,Queue(${ARG1}|r) exten => s,n,Hangup exten => s,n(no),MYSQL(Disconnect ${connid}) exten => s,n,Queue(${ARG1}|r) exten => s,n,Hangup

El log desde el CLI es el siguiente: -- Executing [787@acceso:1] Set("SIP/2003-092dc808", "NUM=787") in new stack -- Executing [787@acceso:2] Macro("SIP/2003-092dc808", "general|soportelaboral|pyastcal.py|787") in new stack -- Executing [s@macro-general:1] Answer("SIP/2003-092dc808", "") in new stack -- Executing [s@macro-general:2] Set("SIP/2003-092dc808", "SALTO=soportelaboral") in new stack -- Executing [s@macro-general:3] AGI("SIP/2003-092dc808", "pyastcal.py") in new stack -- Launched AGI Script /var/lib/asterisk/agi-bin/pyastcal.py -- AGI Script pyastcal.py completed, returning 0 -- Executing [s@macro-general:4] Goto("SIP/2003-092dc808", "soportelaboral|787|1") in new stack -- Goto (soportelaboral,787,1) == Channel 'SIP/2003-092dc808' jumping out of macro 'general' -- Executing [787@soportelaboral:1] Macro("SIP/2003-092dc808", "laboral|soportequeue") in new stack -- Executing [s@macro-laboral:1] Answer("SIP/2003-092dc808", "") in new stack -- Executing [s@macro-laboral:2] Wait("SIP/2003-092dc808", "2") in new stack -- Executing [s@macro-laboral:3] SetMusicOnHold("SIP/2003-092dc808", "default") in new stack -- Executing [s@macro-laboral:4] MYSQL("SIP/2003-092dc808", "Connect connid localhost root root agenda") in new stack -- Executing [s@macro-laboral:5] Set("SIP/2003-092dc808", "NUM = 2003") in new stack -- Executing [s@macro-laboral:6] MYSQL("SIP/2003-092dc808", "Query resultid ") in new stack -- Executing [s@macro-laboral:7] NoOp("SIP/2003-092dc808", "resultid = ") in new stack

267

-- Executing [s@macro-laboral:8] GotoIf("SIP/2003-092dc808", "0?prio:no") in new stack -- Goto (macro-laboral,s,13) -- Executing [s@macro-laboral:13] MYSQL("SIP/2003-092dc808", "Disconnect 1") in new stack -- Executing [s@macro-laboral:14] Queue("SIP/2003-092dc808", "soportequeue|r") in new stack -- Called SIP/2001 -- Called SIP/2004 -- Called SIP/2003 -- Called SIP/2002 -- SIP/2001-09337208 is ringing -- Got SIP response 486 "Busy Here" back from 192.168.1.206 -- SIP/2004-0933b228 is busy -- Nobody picked up in 1000 ms -- Got SIP response 486 "Busy Here" back from 192.168.1.206 -- SIP/2003-0933f248 is busy -- Nobody picked up in 1000 ms -- Got SIP response 486 "Busy Here" back from 192.168.1.206 -- SIP/2002-09343268 is busy -- Nobody picked up in 1000 ms -- Nobody picked up in 10000 ms -- Nobody picked up in 10000 ms -- Called SIP/2001 -- Called SIP/2004 -- Called SIP/2003 -- Called SIP/2002 -- SIP/2001-09337208 is ringing -- Got SIP response 486 "Busy Here" back from 192.168.1.206 -- SIP/2004-0933b228 is busy -- Nobody picked up in 0 ms -- Got SIP response 486 "Busy Here" back from 192.168.1.206 -- SIP/2003-0933f248 is busy -- Nobody picked up in 0 ms -- Got SIP response 486 "Busy Here" back from 192.168.1.206 -- SIP/2002-09343268 is busy -- Nobody picked up in 1000 ms == Spawn extension (macro-laboral, s, 14) exited non-zero on 'SIP/2003-092dc808' in macro 'laboral' == Spawn extension (soportelaboral, 787, 1) exited non-zero on 'SIP/2003-092dc808'

Prueba 5) Comportamiento en el menú Parte de código utilizado: exten => 902147424,1,Answer exten => 902147424,n,Background(menu) exten => 902147424,n,Wait(10) exten => 0,1,Goto(recepcion,${PHONE1},1) exten => 1,1,Goto(comercial,${PHONE1},1) exten => 2,1,Goto(soporte,${PHONE2},1) exten => 3,1,Goto(twister,${PHONE3},1) exten => 4000,1,Goto(acceso,${EXTEN},1) exten => t,1,Goto(${PHONE1},1) exten => i,1,Goto(${PHONE1},1) exten => 4000,1,Macro(acceso,${EXTEN})

268

[macro-acceso] exten => s,1,Dial(SIP/${ARG1},30,Ttm) exten => s,n,Voicemail(${ARG1}) exten => s,n,Hangup

El log desde el CLI es el siguiente: -- Executing [902147424@acceso:1] Answer("SIP/2003-b6900590", "") in new stack -- Executing [902147424@acceso:2] BackGround("SIP/2003-b6900590", "menu") in new stack -- Playing 'menu' (language 'es') == CDR updated on SIP/2003-b6900590 -- Executing [4000@acceso:1] Macro("SIP/2003-b6900590", "acceso|4000") in new stack -- Executing [s@macro-acceso:1] Dial("SIP/2003-b6900590", "SIP/4000|30|Ttm") in new stack -- Called 4000 -- Started music on hold, class 'default', on SIP/2003-b6900590 -- SIP/4000-0a17d5c8 is ringing -- Stopped music on hold on SIP/2003-b6900590 == Spawn extension (macro-acceso, s, 1) exited non-zero on 'SIP/2003-b6900590' in macro 'acceso' == Spawn extension (acceso, 4000, 1) exited non-zero on 'SIP/2003-b6900590'

Configuración de ficheros más utilizados Tabla de descripción de ficheros de configuración Fichero

Descripción

extensions.conf

En este fichero, junto con los ficheros que incluye la carpeta dialplan se concentra el núcleo de la centralita, el plan de llamadas, explicado anteriormente.

sip.conf

En este fichero se registran los usuarios SIP

iax.conf

En este fichero se registran los usuarios IAX

features.conf

En Este fichero se establece la configuración de Call Parking y Call Pickup

269

manager.conf

En este fichero se configuran los usuarios del AMI.

meetme.conf

En este fichero se configuran las conferencias por defecto de la centralita.

queues.conf

En este fichero se configuran las colas de la centralita.

voicemail.conf

En este fichero se configuran los buzones de voz.

Fichero de configuración: EXTENSIONS.CONF, SIP.CONF, IAX.CONF Para visualizar estos ficheros acudir al anexo. Fichero de configuración: FEATURES.CONF

270

Fichero de configuración: MANAGER.CONF

Fichero de configuración: MEETME.CONF

Fichero de configuración: QUEUES.CONF

271

Fichero de configuración: VOICEMAIL.CONF

272

Bases de datos empleadas Tabla de descripción de las bases de datos utilizadas

Nombre de Base de Datos

Descripción

cdr

En esta base de datos se guardan los datos del registro de llamadas y los canales de la aplicación CDR Reports.

fop2

En esta base de datos se guardan los datos del FOP 2.

qstats

En esta base de datos se guardan los datos del Asternic Call Center Stats.

273

agenda

En esta base de datos se guardan los usuarios, clientes y teléfonos de estos de la aplicación YetBook.

nagios

En esta base de datos se guarda la configuración y los datos de Nagios.

Conocimiento de las tablas de cada base de datos mostrando parte de su contenido Base de Datos: cdr

Tablas de cdr cdr channels

 Tabla cdr

calldate

clid

src

dst

dcontext

channel

dstchannel

lastapp

2009-12-22 21:44:43

"2000"

2000

2003

acceso

SIP/2000b6800a38

SIP/20030a30b038

VoiceMail

lastdata

duration

billsec

disposition

amaflags

2003

34

3

ANSWERED

3

accountcode

uniqueid

userfield

 Tabla channels id

channel

1

SIP/2003

2

SIP/2000

accountcode

name

David

274

Mikel

3

SIP/2001

Eduardo

4

SIP/2004

Josemi

5

SIP/2002

Josean

Base de Datos: fop2

Tablas de cdr visual_phonebook

 Tabla visual_phonebook

id

firstname

1

lastname

company

phone1

Mikel

Yet Informatica

2000

2

Eduardo

Yet Informatica

2001

3

Josean

Yet Informatica

2002

4

David

Yet Informatica

2003

5

Josemi

Yet Informatica

2004

phone2

picture 1-mark.jpg

Base de Datos: qstats

Tablas de cdr qagent qevent qname queue_stats

275

 Tabla qagent

agent_id

agent

2

SIP/2001

3

SIP/2004

4

SIP/2003

5

SIP/2002

6

SIP/2000

7

SIP/2005

8

SIP/4000

 Tabla qevent

event_id

event

1

ABANDON

2

AGENTDUMP

3

AGENTLOGIN

4

AGENTCALLBACKLOGIN

5

AGENTLOGOFF

6

AGENTCALLBACKLOGOFF

7

COMPLETEAGENT

8

COMPLETECALLER

9

CONFIGRELOAD

10

CONNECT

11

ENTERQUEUE

12

EXITWITHKEY

13

EXITWITHTIMEOUT

14

QUEUESTART

15

SYSCOMPAT

16

TRANSFER

17

PAUSE

276

18

UNPAUSE

 Tabla qname

qname_id

queue

2

recepcionqueue

3

comercialqueue

4

soportequeue

 Table queue_stats

queue_stats_id

1



705

uniqueid SIP/2003

… SIP/2003

datetime

qname

qagent

qevent

2009-11-05 05:01:19

4

4

14









2009-12-22 23:35:20

4

4

9

info1

info2

Base de Datos: agenda

Tablas de agenda clientes telefono usuarios

 Tabla clientes

id

nameEmp

cliente

mant

1

Calnaba

Yet

VIP

2

Puma

Yet

Completo

277

info3

3

Adidas

Yet

VIP

 Tabla telefono

idEmp

telefono

1

650664616

2

654545454

2

676767676

2

943212112

2

945787876

3

654323232

3

656997878

3

698987332

 Tabla usuarios

id

name

extension

tipo

2

Mikel

2000

Soporte

5

Valentin

5000

Direccion

6

Alberto Acosta

3000

Twister

7

Eduardo

2001

Soporte

9

Josean

2002

Soporte

10

Irune

1000

Administracion

Base de Datos: nagios

Tablas de nagios nagios_acknowledgements nagios_commands nagios_commenthistory nagios_comments

278

nagios_configfiles nagios_configfilevariables …. nagios_timedeventqueue nagios_timedevents nagios_timeperiod_timeranges nagios_timeperiods

279

Explicación teórica y práctica de funcionalidades extra: Agenda de Contactos: YetBook Esta aplicación Web se diseñó para solucionar varios problemas: 

Necesidad de control exhaustivo de clientes de la empresa, así como, del mantenimiento que tienen contratado con esta.



Control de número de extensión de los usuarios de la empresa y de las opciones programadas en el Dialplan para satisfacer determinadas funcionalidades de la centralita Asterisk. Por ejemplo, extensión para agregarse a una cola en concreto o como realizar el desvío de llamadas de tu extensión a tu móvil.



Acceso a las diferentes aplicaciones necesarias para el control de distintas actividades a realizar, como por ejemplo la aplicación FOP 2.

Como se puede ver en la siguiente imagen, la aplicación está dividida en diferentes apartados, en los cuales se puede añadir/eliminar/modificar usuarios y clientes, tener acceso a las extensiones especiales del Dialplan y a las direcciones de las aplicaciones integradas con la centralita.

A continuación se explicará el funcionamiento de cada una de estas funciones:

280

En este apartado tenemos una visión de los usuarios de la centralita.

Añadir Usuarios: Permite agregar un usuario a la base de datos a la que está enlazada la aplicación, no modifica el fichero sip.conf, la idea es agregar el usuario y después modificar dicho fichero de configuración.

281

En la imagen anterior hemos visto como es el proceso de adicción de un usuario, rellenando los campos Nombre, Extensión y Departamento, y en la imagen siguiente vemos el resultado.

Eliminar Usuarios: Permite eliminar un usuario de la base de datos a la que está enlazada la aplicación, no modifica el fichero sip.conf, la idea es eliminar el usuario y después modificar dicho fichero de configuración.

282

En la imagen anterior vemos el identificador del usuario a eliminar, en el ejemplo será el 8, y a continuación en la siguientes imágenes vemos la elección de usuario a eliminar y comprobamos que se ha eliminado.

283

Modificar Usuarios: Permite modificar un usuario en la base de datos a la que está enlazada la aplicación, no modifica el fichero sip.conf, la idea es modificar el usuario y después modificar dicho fichero de configuración. En la siguiente imagen vemos el usuario que vamos a modificar.

En la siguiente imagen vemos el formulario de modificación de usuarios, rellenando el identificador de usuario, Nombre, Extensión y Departamento.

284

En la imagen siguiente vemos el resultado de la modificación:

En este apartado tenemos una visión de los clientes de la expresa.

285

Añadir Clientes: Permite agregar un cliente a la base de datos a la que está enlazada la aplicación. En la siguiente imagen vemos como es el proceso de adicción de un cliente, rellenando los campos Nombre de Empresa, Mantenimiento (Parcial, Completo, VIP) y el nº de teléfonos asociados a dicha empresa.

En la siguiente imagen vemos el formulario de introducción de teléfonos.

286

En la siguiente imagen vemos el resultado tras añadir el cliente:

Eliminar Clientes: Permite eliminar un cliente de la base de datos a la que está enlazada la aplicación. En la imagen siguiente vemos el formulario es similar al de la eliminación de usuarios.

287

Comprobamos que la eliminación se ha efectuado adecuadamente.

Modificar Clientes: Permite modificar un cliente en la base de datos a la que está enlazada la aplicación. A continuación vemos los formularios de modificación:

288

En las dos imágenes siguientes vemos como nos da la posibilidad de simplemente modificar los valores actuales o agregar también más teléfonos al cliente.

289

Rellenamos el campo del teléfono que vamos a añadir:

Vemos las modificaciones realizadas:

A continuacion veremos un recordatorio de las extensiones del Dialplan para que los usuarios puedan consultarlo cuando quieran.

290

291

292

293

Por último para recordar el acceso a la aplicaciones integradas con la centralita Asterisk :

294

295

296

Integración con Google Calendar

La utilización de Google Calendar será la siguiente: •

Para tener diferentes calendarios y así hacer una gestión óptima de las llamadas, comprobando los eventos de dichos calendarios y redireccionando a unos contextos u otros dependiendo de estos en el momento de las llamadas.



Uso de los recordatorios a través de mensajes de texto en determinadas situaciones.

Para tener un uso correcto de Google Calendar visualizar la Guía. Pruebas de existencia de evento en el momento en un calendario El código de la aplicación que comprueba la existencia de eventos es el siguiente:

297

Prueba 1 ) Hay un evento de 10:30 a 11:30 [root@localhost agi-bin]# python pyastcal.py ---------------------------------Fecha inicio evento: 2009-12-23 Fecha actual: 2009-12-23 Fecha fin evento: 2009-12-23 Hora inicio evento: 10:30:00 Hora actual: 10:48:47.174531 Hora fin evento: 11:30:00 ---------------------------------SET VARIABLE "SALTO" "No Disponible Soporte"

298

El calendario tiene el siguiente aspecto:

Prueba 2 ) No hay ningun evento [root@localhost agi-bin]# python pyastcal.py ---------------------------------Fecha inicio evento: 2009-12-23 Fecha actual: 2009-12-23 Fecha fin evento: 2009-12-24 Hora inicio evento: 23:00:00 Hora actual: 10:47:05.294826 Hora fin evento: 08:00:00 ---------------------------------SET VARIABLE "SALTO" "soportelaboral"

299

El calendario tiene el siguiente aspecto:

Prueba 2 ) Hay un evento de dia completo [root@localhost agi-bin]# python pyastcal.py ---------------------------------Fecha inicio evento: 2009-12-22 Fecha actual: 2009-12-23 Fecha fin evento: 2009-12-23 Hora inicio evento: 23:00:00 Hora actual: 10:50:29.834773 Hora fin evento: 23:00:00 ---------------------------------SET VARIABLE "SALTO" "No Disponible Soporte"

300

El calendario tiene el siguiente aspecto:

Pruebas de envío de recordatorios a través de SMS con Google Calendar Configuración de la extensión que ejecuta el programa que interactúa con Google Calendar para que se genere un evento en el calendario por el cual se enviará el SMS como recordatorio: exten => 1200,1,Answer exten => 1200,n,NoOp("CallerID=${ARG1}") exten => 1200,n,AGI(sms_send.php) exten => 1200,n,NoOp("Sms_send.php ejecutado...") exten => 1200,n,Hangup

Vemos el comportamiento de Asterisk al llamar a la extensión 1200 a través del CLI: -- Executing [1200@acceso:1] Answer("SIP/4000-b68150b0", "") in new stack -- Executing [1200@acceso:2] NoOp("SIP/4000-b68150b0", ""CallerID="") in new stack -- Executing [1200@acceso:3] AGI("SIP/4000-b68150b0", "sms_send.php") in new stack -- Launched AGI Script /var/lib/asterisk/agi-bin/sms_send.php -- AGI Script sms_send.php completed, returning 0 -- Executing [1200@acceso:4] NoOp("SIP/4000-b68150b0", ""Sms_send.php ejecutado..."") in new stack -- Executing [1200@acceso:5] Hangup("SIP/4000-b68150b0", "") in new stack == Spawn extension (acceso, 1200, 5) exited non-zero on 'SIP/4000-b68150b0'

Comprobamos el log de la aplicación para ver que los datos enviados son los correctos:

301

[email protected] Password=XXXXXXX Minutos despues de la hora actual en la que empieza el evento=10 Duracion del Evento=10 Mensaje enviado: 'Asterisk: Tiene una llamada perdida de la extension: 100' Enviado: Resource id #8

Miramos en el calendario para comprobar que se ha creado el evento:

Para ver el código de los archivos utilizados acudir al anexo correspondiente.

302

Chan_Sebi ¿Qué?,¿Cómo? y ¿Por qué? Chan_sebi es un canal para Asterisk, que utiliza modems Huawei para proveer de gateways gsm de voz y/o sms. En principio se ha hecho pensando en los E169/K3520 de Huawei, modems que tienen capacidades de llamada de voz. Internamente utilizan un chipset de Qualcomm (de la serie MSM7200). Con un modem usb de estos modelos, tenemos un gateway de voz que además no tiene que hacer conversiones de audio como las que se hacen con un FXO analógico, ni los problemas de señalización inherentes a los canales analógicos, ya que toda la gestión de audio y de señalización se hace de forma digital (bien a través del canal de audio, bien a través del canal de datos), pudiendo ser comparado a un router RDSI=>GSM de un puerto. La idea surgió, según su creador “Odicha”, de la posibilidad de aprovechar las capacidades de voz de estos modems para tener un gateway gsm a un costo muy económico. La mayor parte de los operadores los dan a costo cero cumpliendo unos mínimos de permanencia o consumo, como cualquier otro terminal telefónico. Técnicamente estos modems son vistos por el S.O. como un “hub” usb con varios dispositivos. En principio tres puertos seriales y un puerto de almacenamiento con dos dispositivos (un cd y un lector de memoria). Asi los subid 00,01 y 02 serán los puertos de comunicación, cada uno con distintas funciones (audio, datos y gestión general) y el subid 03 que nos dará control sobre el cd virtual y el lector de tarjetas. A partir de esta base se construye un controlador de canal que toma como punto de partida el chan_mobile, ya existente en Asterisk. Para descargar asterisk-addons con chan_sebi: svn export http://asterisk-es-rsp.irontec.com/svn/team/Odicha/asterisk-addons-1.4.9 asterisk-addons/

Instalación y Configuración de chan_sebi A nivel de descarga e instalación comentar cuáles son sus prerrequisitos. El S.O. debe ser capaz de montar los subid 00, 01 y 02 del modem Huawei como usbTTYx. Los kernels antiguos (por debajo de 2.6.20 generalmente) no son capaces de hacerlo automáticamente por lo que habrá que modificar algunas cosas para que se detecten de la forma adecuada y sean cargados por usbserial. Normalmente es suficiente con /sbin/modprobe usbserial vendor=0×12d1 product=0×1003 o bien /sbin/modprobe usbserial vendor=0×12d1 product=0×1001 dependiendo de si el modem es 1001 (169,k3520, e270,etc…) o es 1003 (e220…). A veces también entran en conflicto con el driver de option resolviendose añadiendo al blacklist el módulo ”option”. Si aun así sigue intentando cargar puede intentar resolverse eliminando el fichero option.ko y ejecutando un depmod después. 303

Los puertos ttyUSBx que se crean al conectar el modem tienen que tener permiso de lectura y escritura para el usuario que ejecuta Asterisk, si no es así no será posible que Asterisk se comunique con el modem. Si no se ejecuta Asterisk como root lo mejor es agregar el usuario que corre Asterisk al grupo propietario de los puertos que en función de distros y kernels puede variar (en Fedora es uucp, por ej.). Algo como esto por ejemplo: chmod 660 /dev/ttyUSB* chown asterisk:uucp /dev/ttyUSB* echo ‘KERNEL==”ttyUSB[0-9*]“, MODE=”0660″, OWNER=”asterisk”, GROUP=”uucp”‘ >> /etc/udev/rules.d/92-sebi.rules

Cumpliendo esto podremos instalar asterisk-addons sobre nuestro asterisk 1.4.x con chan_sebi incluido. Al instalarlo y arrancarlo el canal analizará los dispositivos usb que tenemos conectados y generará un fichero sebi_devices.conf en /etc/asterisk/ que contendrá algo similar a esto: [2-1] data = /dev/ttyUSB2 voice = /dev/ttyUSB1 imei = 35413702XXXXXXX

A partir de aquí sabemos que el modem está siendo detectado correctamente y pasaremos a generar el fichero de configuración sebi.conf. Si hicimos un make samples al instalar asterisk-addons ya tendremos un fichero sebi.conf en /etc/asterisk/ que tendremos que adaptar. [huawei1] imei=35xxxxxxxxxxx ; imei of modem ;pin=1234 ; pin (use only if sim card has pin request enabled) csca=+34607003110 ; sms centre number (vodafone es – example) sms=yes ; enable sms send/receive voice=yes ; enable voice for calls context=from-pstn ; dialplan context for incoming calls group=1 ; this phone is in channel group 1 volume=5 ; modem volume (1-5) language=es ; channel language ;nocallsetup=yes ; set this only if you want override call status notifications

El campo imei del canal es el que combina la información de configuración del modem con el equipo físico. No olviden que el número de puerto ttyUSB depende del orden en que se cargan o de la cantidad de dispositivos usb que están conectados en cada momento. Los demás campos de configuración creo que están claros, prácticamente se describen solos. Es interesante hacer notar que el nombre del canal lo asignamos nosotros libremente en el identificador de sección (en el ejemplo [huawei1]) Si reiniciamos Asterisk y todo ha ido bien tras cargar ejecutaremos el comando sebi show devices y obtendremos algo parecido a esto: 304

*CLI> sebi show devices Id huawei1

Imei Group 3541370xxxxxxxx 1

Provider vodafone es

Connected State Voice SMS yes free yes yes

A partir de aquí podemos usar el modem como una canal de voz realizando y recibiendo llamadas y como gateway sms. Cabe observar que en los modelos que no soporten voz el resultado será como este: *CLI> sebi show devices Id huawei1

Imei Group 3541370xxxxxxxx 1

Provider vodafone es

Connected State Voice SMS yes free no yes

Nos dirá que no tenemos servicios de voz en ese dispositivo, y lo usaremos solo como gateway sms. Para enviar y recibir sms, usaremos convenciones muy similares a las de chan_mobile. Para recibir un sms y guardarlo en la base de datos tendremos las instruccciones correspondientes en el Dialplan (por cierto, solo procesa sms recibidos mientras está activo, por el momento). [from-pstn] exten => sms,1,verbose(incoming sms from ${smssrc} ${smstxt}) exten => sms,n,set(db(sms/${smssrc})=${smstxt}) exten => sms,n,hangup

Para enviar un sms: originate sip/109 application sebisendsms huawei1|6xxxxxxxx|”texto de prueba del sms”

Para revisar si el canal está libre antes de enviar el sms tenemos la aplicación SebiStatus: SebiStatus(device,variable) Device : Id del dispositivo en sebi.conf Variable: Variable donde almacenamos el estado (1-3) 1-Desconectado 2-Disponible 3-Ocupado

305

Pruebas realizadas con un Modem Huawei K3520

Tras introducir en el modem Huawei K3520 una tarjeta Orange y conectarlo a nuestro servidor por un puerto USB, instalamos como se indica en los apartados anteriores el chan_sebi y lo siguiente que tenemos que hacer es comprobar que Asterisk a captado el modem, para esto comprobamos el contenido del fichero de configuración situado en la carpeta /etc/asterisk/ sebi_devices.conf: [6-1] data = /dev/ttyUSB2 imei = 353284021181626 voice = /dev/ttyUSB1

Si no lo hemos hecho antes, damos a los dispositivos USB los permisos adecuados: chmod a+x /dev/ttyUSB*

Confuramos el chan_sebi desde el fichero de configuración sebi.conf: [huawei1] dataport=/dev/ttyUSB2 voiceport=/dev/ttyUSB1 imei=35328XXXXXXXXXX pin=1626 csca=+34644109030 sms=yes voice=yes context=from-sebi group=1 volume=5 language=es

; SMS centre number (SYMYO)

Reiniciamos Asterisk y comprobamos que la configuración realizada es la correcta: *CLI> sebi show devices ID IMEI Group Provider Connected State Voice SMS huawei1 353284021181626 1 Orange Yes Free Yes Yes

Las 3 pruebas realizadas con el chan_sebi serán recepción y envio de SMS y realización de llamadas a través de este canal. Prueba 1) Llamada con chan_sebi Configuración del fichero extensions.conf: [from-sebi] ;LLamadas con Chan_Sebi exten => 650664616,1,NoOp(Outgoing call through the SEBI device to ${EXTEN}) exten => 650664616,n,Dial(Sebi/g1/${EXTEN},60) exten => 650664616,n,Hangup

306

Miramos el log en el CLI de Asterisk al hacer una llamada: -- Executing [650664616@acceso2:1] NoOp("SIP/100-08bedc70", "Outgoing call through the SEBI device to 650664616") in new stack -- Executing [650664616@acceso2:2] Dial("SIP/100-08bedc70", "Sebi/g1/650664616|60") in new stack -- Called g1/650664616 -- Sebi/huawei1-4b5e is making progress passing it to SIP/100-08bedc70 == Spawn extension (acceso2, 650664616, 2) exited non-zero on 'SIP/100-08bedc70

Prueba 2) Envio de SMS con chan_sebi: Configuración del fichero extensions.conf: [from-sebi] include => acceso2 exten => 1111,1,NoOp(Envio de Sms) exten => 1111,n,SebiSendSMS(huawei1,650664616,"sms prueba") exten => 1111,n,Hangup [acceso2] exten => 100,1,Dial(SIP/100,30,Ttm) exten => 100,n,Hangup

Hacemos la prueba marcando 1111 y vemos el log del CLI: -- Executing [1111@acceso2:1] NoOp("SIP/100-08bf7548", "Envio de Sms") in new stack -- Executing [1111@acceso2:2] SebiSendSMS("SIP/100-08bf7548", "huawei1|650664616|"sms prueba"") in new stack -- Executing [1111@acceso2:3] Hangup("SIP/100-08bf7548", "") in new stack == Spawn extension (acceso2, 1111, 3) exited non-zero on 'SIP/100-08bf7548'

El sms ha llegado al instante. También se puede realizar esta prueba desde el CLI directamente, pero de esta forma suena la extensión que le indicas, en este caso la 100, y al contestar se envía el SMS: *CLI> originate sip/100 application SebiSendSMS huawei1|650664616|"SMS DE PRUEBA" -- Launching SebiSendSMS(huawei1|650664616|SMS DE PRUEBA) on SIP/100-b7780b98

Prueba 3) Recepción de SMS desde el chan_sebi: Configuración del fichero extensions.conf: [from-sebi] exten => sms,1,NoOp(Incoming SMS from ${SMSSRC}) exten => sms,n,System(/usr/src/recvSMS.sh "${SMSSRC}" "${SMSTXT}") exten => sms,n,Hangup

Para esta prueba hacemos uso de un ejecutable que enviará un email a una dirección indicada al recibir el SMS, el código de este archivo es:

307

#!/bin/bash if [ $# -ne 2 ] then echo "Invalid parameters." exit 0 fi echo $2 | mail -s "SMS from $1" [email protected]

Miramos el log en el CLI de Asterisk al hacer una llamada: -- Executing [sms@from-sebi:1] NoOp("Sebi/huawei1-1de3", "Incoming SMS from +34650664616") in new stack -- Executing [sms@from-sebi:2] System("Sebi/huawei1-1de3", "/usr/src/recvSMS.sh "+34650664616" "Prueba recepcion de SMS."") in new stack -- Executing [sms@from-sebi:3] Hangup("Sebi/huawei1-1de3", "") in new stack == Spawn extension (from-sebi, sms, 3) exited non-zero on 'Sebi/huawei1-1de3'

308

Flash Operator Panel 2 (FOP 2) ¿Qué es FOP2? Flash Operator Panel 2 es una aplicación de tipo panel de control para las PBX Asterisk. Se ejecuta en un navegador web con el plugin de flash. Es capaz de mostrar información sobre su actividad PBX en tiempo real. El diseño es configurable (tamaño y color de los botones, etc.). Su creador, Nicolas Gudiño, fue ganador hace unos meses del premio que otorga Digium, Digium Innovation Awards, y es que FOP 2 es un producto ideal y muy recomendable. Características •

Acciones o o o o o o o o o o o



Botones de Extensión o o o o o



2 líneas por botón Callerid y temporizador Indicador de pausa Indicador de pertenencia a una cola Indicador de grabación

Botones Trunk o



Iniciar llamadas Acceso telefónico a cualquier número Acceso a la agenda de llamadas Notificación de entrada de llamadas Agenda de Contactos (Visual Phonebook) Transferencia de llamadas Transferencia al buzón de voz Registro de llamadas Atención de llamadas directas (Pick Up) Colgar llamadas Funcionalida Spy & Whisper (Escuchar llamada y comunicarse con uno de los hablantes sin que el otro escuche)

Muestra una lista con los trunks establecidos o configurados

Botones de Conferencia o o o o o

Lista de miembros de la conferencia Bloqueo / Desbloqueo de conferencias Silenciar / Activar audio a los miembros Silenciar / Activar a todos los miembros Expulsar miembros de la conferencia 309



Botones de Cola o o o o o o

Lista de agentes/miembros Lista de llamadas en espera Miembros en pausa Miembros ocupados Miembros disponibles Miembros invalidos

¿A quién va dirigido FOP 2? A los recepcionistas: Desarrollado con una recepcionista en la mente. Todas las acciones están disponibles en dos clics del ratón. • • • •

Ver quién está disponible o no. Transferencia en forma directa a la extensión de destino o al buzón de voz. Habilitar los permisos de PickUp. Búsqueda en tiempo real y filtro de extensiones (ideal para las grandes empresas con cientos de extensiones).

A los supervisores del centro de llamadas: No sólo puede ver el estado de la extensión, sino también una rápida visión de las colas: • • • •

Ver agentes registrados en una cola. Ver estado del agente (en pausa, ocupado, disponible, no válido). Ver todas las llamadas en espera en la cola con su temporizador. Espiar y/o susurrar a sus agentes.

A los usuarios finales: Usted no necesita ser un recepcionista o tener un centro de llamadas para aprovechar las características de FOP2, ya que este permite controlar sus propias llamadas, incluso antes de cogerlas. • • •

Notificaciones de llamadas (número y nombre de callerid, llamada de la cola). Búsqueda de llamada o marcarción a cualquier número escrito. Control de llamadas: Trasferencia, Colgar, etc.

310

Instalación Requisitos del Sistema El programa consta de dos componentes, un demonio del lado del servidor que se conecta a la interfaz de Asterisk y será el mediador entre Asterisk y los clientes Web. Si tiene instalada una distribución de Linux Red Hat y va a instalar el panel desde un tarball(.tar), tendrá que obtener el tarball correcto dependiendo de su versión de glibc. Puede averiguar la versión de glibc escribiendo en la consola: #> /lib/libc.so.6

La respuesta será similar a esta: GNU C Library stable release version 2.3.6, by Roland McGrath et al. Copyright (C) 2005 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Compiled by GNU CC version 3.4.4 20050721 (Red Hat 3.4.4-2). Compiled on a Linux 2.4.20 system on 2005-11-03. Available extensions: GNU libio by Per Bothner crypt add-on version 2.1 by Michael Glad and others linuxthreads-0.10 by Xavier Leroy The C stubs add-on version 2.1.2. BIND-8.2.3-T5B NIS(YP)/NIS+ NSS modules 0.19 by Thorsten Kukuk Glibc-2.0 compatibility add-on by Cristian Gafton GNU Libidn by Simon Josefsson libthread_db work sponsored by Alpha Processor Inc Thread-local storage support included. For bug reporting instructions, please see: .

El otro componente es la aplicación web, que consiste en su mayoría en Javascript, HTML, CSS y un componente Flash. Por esa razón se necesita un servidor web corriendo para servir a estos archivos. Para la agenda de llamadas necesita soporte para PHP en el servidor web y base de datos MySQL instalada. Por último, su navegador necesita Adobe Flash Player (versión 9) y el Javascript activado. Instalación desde tarball Después de descargar el paquete adecuado, tendrá que extraerlo y comenzar la instalación: #> tar zxvf fop2-001-i386-glibc2.5-centos5.tgz #> cd fop2 #> make install

311

La instalación copiará los archivos del servidor en / usr/local/fop2 y las páginas web bajo / var/www/html/fop2. Before starting the service, some basic configuration is required in fop2.cfg and probably in /etc/asterisk/manager.conf, because the FOP2 daemon connects via TCP to the Asterisk Manager Interface (AMI) using a username and secret. Antes de iniciar el servicio, es necesaria la configuración básica de fop2.cfg y de manager.conf en /etc /asterisk/, porque el demonio FOP2 se conecta a través de TCP a la interfaz de Asterisk Manager (IAM), utilizando un nombre de usuario y una clave. Una vez configurado esto habrá que iniciar el servicio. #> cd / usr/local/fop2 #> ./fop2_server

Configuración El archivo principal de configuración del servidor es / usr/local/fop2/fop2.cfg. Los parámetros más importantes y necesarios para este fichero son los establecidos en el manager.conf. Ejemplos de configuración: /usr/local/fop2/fop2.cfg [general] ; AMI definitions manager_host = 127.0.0.1 manager_port = 5038 manager_user = admin manager_secret = amp111

/etc / asterisk / manager.conf [general] enabled = yes port = 5038 bindaddr = 127.0.0.1 [admin] secret = amp111 deny = 0.0.0.0/0.0.0.0 permit = 127.0.0.1/255.255.255.0 read = system,call,command,agent,user,originate write = system,call,command,agent,user,originate

También es recomendable la configuración siguiente: /etc/asterisk/sip.conf callevents=yes

312

Para que se efectue el envio de eventos al FOP2. /etc/asterisk/queues.conf [testqueue] eventwhencalled=yes

Para que efectue el envio de eventos relacionados con las colas y los agentes. Configuración de botones Además de la configuración del servidor, es importante la configuración de los botones que desea mostrar. Los botones de configuración se realizan en distintos archivos de configuración para que sean más fáciles de mantener y organizar. En el fichero / usr/local/fop2/fop2.cfg hay que especificar el parámetro buttonfile, que apunta al archivo que contendrá las definiciones de los botones. /usr/local/fop2/fop2.cfg ... ... buttonfile= buttons.cfg

Botones de Extensión Este tipo de botones representan una extension. Se mostrarán dos líneas para cada botón y algunos datos específicos, como la presencia, estado de pausa, etc. /usr/local/fop2/ buttons.cfg [SIP/600] type=extension extension=600 context=from-internal label=John mailbox=600@default extenvoicemail=*600@default

Botones de cola Similares a los botones de extensión, los botones de cola hacen uso de los mismos parámetros con la diferencia que no sólo el tipo se debe establecer en la cola, sino también el nombre, entre paréntesis, debe estar precedido de "QUEUE /". /usr/local/fop2/buttons.cfg [QUEUE/101] type=queue label=Sales

313

extension=101 context=from-internal

Los botones de cola no aceptan los parámetros mailbox o extenvoicemail, ya que sólo se aplican a los botones de extensión. Botones de Conferencia Al igual que los botones de cola, los botones de conferencia tienen que ser definidos como type=conference y el contexto debe empezar con el prefijo "CONFERENCE/". /usr/local/fop2/buttons.cfg [CONFERENCE/1000] type=conference label=Main Conference extension=1000 context=from-internal

Botones Trunk Para los trunks que hay muy pocos parámetros que establecer. Un trunk no se puede marcar, por esa razón no es necesario especificar la extensión ni el contexto. Sólo el type que sería “trunk” debe ser especificado, junto con la etiqueta del botón. /usr/local/fop2/buttons.cfg [DAHDI/1] type=trunk label=DAHDI 1-4 server=1

Tenga en cuenta que también hay que establecer el parámetro server, ya que si se supervisa más de un servidor, y tiene DAHDI / 1 definido sin especificar el servidor, usted experimentará una colisión por el canal, y la situación no será correcta. Configuración de Visual Phonebook La agenda requiere php y mysql para ser instalada y funcionar. Es necesario crear una base de datos con una tabla y dar los adecuados permisos. También tienes que configurar el idioma de la aplicación PHP. Con el fin de empezar, asegúrese de crear una base de datos MySQL utilizando la contraseña correcta (sustituir XXXXX con su contraseña de root de MySQL): #> cd /var/www/html/fop2 #> mysqladmin -u root -pXXXXX create fop2 #> mysql -u root -pXXXXX < mysql.db

Después de crear una base de datos y la tabla, dar permisos:

314

#> mysql -u root -pXXXXX -e \"grant all privileges on fop2.* to root@localhost \" identified by 'myPassw0rd'"

Por último hay que editar el archivo de configuración y seleccionar el idioma adecuado: /var/www/html/fop2/config.php
View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF