Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Sistemas de VOIP con Asterisk: MODULO 1 Marzo 2010 – Guayaquil, Ecuador Instructor: Ing. José Córdova
Presentación del Curso <ul><ul><li>MODULO 1 </li></ul></ul><ul><ul><ul><li>Introducción a VOIP y SIP. </li></ul></ul></ul>...
Presentación del Curso <ul><li>Perfil de los participantes: </li></ul><ul><ul><li>Nombre </li></ul></ul><ul><ul><li>Estudi...
Presentación del Curso <ul><li>Target del Curso. </li></ul><ul><li>Resultados del Curso. </li></ul><ul><li>Competencias a ...
Asterisk Professional Path
Evaluación del Curso <ul><li>Para obtener el CERTIFICADO DE APROBACION del curso usted necesita obtener por lo menos el 70...
Programa Resumido del curso <ul><li>Conceptos básicos de VOIP. </li></ul><ul><li>Linux para administradores de Asterisk. <...
Conceptos básicos de VOIP
Un poco de Historia <ul><li>Telefonía Tradicional </li></ul><ul><li>Teléfono Inventado en 1876 por Antonio Meucci (atribui...
Introduccion a Central Telefonica Digital <ul><li>En la central nació el concepto de switch que inicialmente lo realizaba ...
La Interconexion de centrales <ul><li>No es posible realizar un mallado de todos contra todos, sin embargo se necesita un ...
La Interconexión de centrales tradicional  <ul><li>El uso del canal (troncal) de interconexion nos permite comunicarnos en...
Que es una troncal? <ul><li>Una troncal es una línea conectada entre dos sistemas de switcheo, no necesariamente en grande...
Principios de VOIP <ul><li>VoIP : Voice over Internet Protocol </li></ul><ul><li>Uso de una red de datos para  todo el pro...
Que funciones debe realizar VOIP? <ul><li>Digitalización de la voz. </li></ul><ul><li>Paquetización de la voz. </li></ul><...
Algo de Actualidad <ul><li>Internet es la mayor red de datos del mundo    VOIP permite realizar llamadas por internet. </...
Algo de Actualidad <ul><li>La convergencia de servicios de Telecomunicaciones Actuales se basa en IP. </li></ul><ul><li>Wi...
Problemas de VOIP  <ul><li>Existen problemas que no existian o tenian una solucion sencilla en la telefonia Tradicional y ...
Agentes Implicados <ul><li>Usuarios VoIP:  Utilizan tecnologías VoIP para realizar llamadas. </li></ul><ul><li>Proveedores...
Agentes Implicados <ul><li>Proveedor de VOIP:  El principal servicio de los diferentes proveedores de Voz sobre IP es el d...
Elementos Implicados <ul><li>Telefono IP : apariencia común, tiene por lo menos 1 conector RJ45 para conectarse a una red ...
Elementos Implicados <ul><li>Adaptador Analógico IP (ATA):  transforman la señal analógica de los teléfonos tradicionales ...
Elementos Implicados <ul><li>Softphones:  Programas que proveen toda la funcionalidad de un teléfono, adicionando los serv...
Elementos Implicados <ul><li>Terminos de uso común y su aplicación como agentes de VOIP: </li></ul><ul><ul><ul><ul><li>Gat...
Elementos Implicados <ul><li>Tarjetas de Telefonia: Tipo PCI o PCI express vienen en variedad: 2,4,8,24 puertos analogicos...
Elementos Implicados <ul><li>Tarjetas de hasta 4 modulos FXS o FXO: TDM410 </li></ul><ul><li>Tarjetas de hasta 8 puertos a...
Como funciona la VOIP? <ul><li>Paso 1:  Los dos comunicantes se registran en el servidor VoIP con sus teléfonos (Hardphone...
Protocolos de VOIP <ul><li>H.323 </li></ul><ul><li>IAX2 </li></ul><ul><li>SIP </li></ul><ul><li>MGCP </li></ul><ul><li>Ski...
Protocolos de VOIP <ul><li>Protocolo H.323 </li></ul><ul><li>Es un estándar del ITU (International Telecommunications Unio...
Protocolos de VOIP <ul><li>Protocolo H.323: Ventajas </li></ul><ul><li>Implementa QoS de forma interna. </li></ul><ul><li>...
Protocolos de VOIP <ul><li>IAX (Inter Asterisk eXchange) </li></ul><ul><li>Es un protocolo abierto, originalmente diseñado...
Protocolos de VOIP <ul><li>El futuro de IAX </li></ul><ul><li>Debido a que IAX fue diseñado pensando en voz ha recibido cr...
Protocolos de VOIP <ul><li>IAX: Consideraciones de Seguridad </li></ul><ul><li>Tres formas de autentificar: Texto plano, M...
Protocolos de VOIP <ul><li>Protocolo SIP </li></ul><ul><li>SIP: Session Initiation Protocol, protocolo del  IETF  para Voz...
Protocolos de VOIP <ul><li>Protocolo SIP </li></ul><ul><li>Capacidades de SIP: </li></ul><ul><ul><li>Localización del usua...
Protocolos de VOIP <ul><li>Protocolo SIP : Esquema de funcionamiento </li></ul><ul><li>El protocolo SIP es de forma nativa...
Protocolos de VOIP: Señalización SIP
Codecs de VOIP <ul><li>Los códecs se utilizan para transforma la señal de voz analógica en una versión digital. </li></ul>...
Codecs de VOIP <ul><li>Si la voz esta entre los 300 y 4.000 Hz una frecuencia de 8.000 muestras por segundo reconstruirá p...
Codecs de VOIP GSM 13 kbps iLBC 15 kbps G.711 64 kbps G.723 5.3/6.3 kbps G.726 16/24/32/40 kbps G.729 8 kbps Speex 2.15 a ...
Telefonia Convencional vs. Telefonia IP <ul><li>Telefonia Convencional: </li></ul><ul><li>PBX (Private Branch eXhange) pro...
Telefonia Convencional vs. Telefonia IP <ul><li>Telefonia IP </li></ul><ul><ul><ul><li>Transporta voz convertida en datos ...
Open Source PBX <ul><li>Utiliza hardware estándar. </li></ul><ul><li>Es desarrollada y mantenida por la comunidad (centena...
Linux para administradores de Asterisk
Paquetes necesarios para la compilación
Linea de Comandos de Linux: Shell <ul><li>El shell prompt será algo como:  </li></ul><ul><ul><ul><ul><li>[username@localho...
Linux Shell <ul><li>Wildcards,  funcionan como ocupantes de lugar para distintas funciones en modo texto: </li></ul><ul><u...
Linux Shell y Manejo de Archivos <ul><li>Algunos comandos útiles para manejar archivos: </li></ul>Action Command Format De...
Comandos Generales <ul><li>dmesg  : Imprime los mensajes desplegados por el &quot;kernel&quot; al inicio.  </li></ul><ul><...
Comandos Generales <ul><li>stat  : Despliega información detallada sobre el archivo especificado como: fechas de modificac...
La Red en Linux <ul><li>Ejecute el Comando IFCONFIG. </li></ul><ul><li>Verifique los resultados. </li></ul><ul><li>Cada in...
La Red en Linux <ul><li>Como setear Broadcast, Mascara y la direccion ip de la interfaz? </li></ul><ul><li>Que hace  ifup ...
Comandos de Red <ul><li>host :  Determina la dirección IP de un &quot;Host&quot; , host -a despliega toda la información d...
Comandos de Red <ul><li>lsof -n -i:25 :  Determinar el programa del sistema operando bajo el puerto 25  </li></ul><ul><li>...
Control de Procesos <ul><li>ps -aux :  Despliega todos los procesos del sistema, con nombre y tiempo de inicio  kill :  Es...
Mas Comandos <ul><li>kill -KILL <pid> :  Señala al proceso con numero <pid>,que termine de inmediato, el proceso es termin...
YUM <ul><li>Yum (Yellow dog Updater Modified)  es un programa automático para instalar / desinstalar los RPM del sistema. ...
Preparando el Laboratorio <ul><li>Realice las siguientes verificaciones: </li></ul><ul><ul><ul><li>Interfaces levantadas. ...
Introducción a Asterisk
Algo de historia <ul><li>60s aparecen las centrales electrónicas analogicas,  conmutación  por relés. </li></ul><ul><li>Te...
Algo de Historia y Actualidad <ul><li>Las PBX se venden como CAJAS NEGRAS, mientras se pensaba que VoIP no tendria éxito p...
Introducción a Asterisk: Que es? <ul><li>Se han revisado muchos conceptos para definir Asterisk: </li></ul><ul><li>Es un s...
Asterisk y su Funcionalidad <ul><li>Asterisk es un B2BUA: Back to Back User Agent, Agente de usuario de extremo a extremo....
Asterisk… <ul><li>Los terminales ven a Asterisk como un servidor, en medio de toda la señalización (a diferencia de un pro...
Asterisk Arquitectura en el stack de Linux Julián Dunayevich, Lázaro Baca, Andrés Brassara, Santiago Alberch ZAPTEL/ DAHDI...
Asterisk Arquitectura
Asterisk Arquitectura <ul><li>+ Integración de casi todas las formas de comunicación </li></ul><ul><li>+ Integración de ca...
<ul><li>Extensiones móviles </li></ul><ul><li>Enrutamiento por Indetificador de llamada  </li></ul><ul><li>Mensajería SMS ...
CTI(Integración de Telefonía con el Ordenador): AGI (Asterisk Gateway Interface) Monitor de Llamadas Gráfico  Sistema de C...
Codecs de Audio: <ul><li>ADPCM  </li></ul><ul><li>G.711 (A-Law & μ-Law)  </li></ul><ul><li>G.723.1 (sin intervenir en la c...
Asterisk: Protocolos de SEÑALIZACION soportados <ul><li>Full supported: </li></ul><ul><ul><ul><li>SIP (Session Initiation ...
Asterisk como viene? <ul><li>Asterisk se ejecuta en background, al igual que el resto de los servidores conocidos (apache,...
Preparando un Sistema para Asterisk <ul><li>Los requisitos dependen directamente de: </li></ul><ul><ul><li>Las llamadas co...
Preparando un sistema para Asterisk <ul><li>Asterisk puede ser instalado en las siguientes plataformas: </li></ul><ul><ul>...
Hardware para Telefonia: Interfaces Analogicas <ul><li>Puertos FXO: Estos interfaces que integra el Asterisk es utilizado ...
Hardware para Telefonia
Hardware para Telefonia: Interfaces Digitales <ul><li>La Red Digital de Servicios Integrados (RDSI) utiliza, en principio,...
Hardware para Telefonia: Interfaces Digitales
Clientes SIP en Asterisk <ul><li>El tipo USER permite realizar llamadas desde Asterisk. </li></ul><ul><li>El tipo PEER per...
Asterisk: Estado y Autenticación <ul><li>Asterisk mantiene una tabla con sus clientes SIP (algo como una tabla de enrutami...
Asterisk y las tarjetas HW <ul><li>Fabricantes de hardware para conectividad con otras redes (PSTN) hay variedad. </li></u...
Asterisk y Los sistemas Tradicionales de VOIP Sistema Tradicional de Comunicaciones Servidor Linux con Asterisk
Instalando Asterisk
Compilando e Instalando Asterisk <ul><li>Asterisk es un proyecto muy ACTIVO, repositorio es actualizado en cuestión de día...
Preparando el sistema <ul><li>Se recomienda tener todos los paquetes actualizados: </li></ul><ul><ul><ul><ul><li>yum updat...
Preparando el sistema <ul><li>Para instalar las dependencias y soporte para DB: </li></ul><ul><ul><ul><ul><li>yum -y  inst...
Paquetes de Asterisk <ul><li>Asterisk esta compuesto por: </li></ul><ul><ul><ul><ul><li>El paquete  “Asterisk”  contiene t...
DAHDI <ul><li>Dahdi (Digium Asterisk Hardware Device Interface) </li></ul><ul><ul><ul><ul><li>“ dahdi-linux”   modulos del...
Descargando Asterisk <ul><li>Descargue los paquetes en /usr/src </li></ul><ul><ul><li>wget -c http://downloads.digium.com/...
Descripción de comandos de Instalación <ul><li>Siguiendo el LSB (Linux Standard Base) Asterisk deberá ser descomprimido en...
Descripcion de comandos de Instalación <ul><li>Compilará y en uso de  ncurses  creará una interfaz de selección de opcione...
Instalando Asterisk (ver comentarios) /USR/SRC <ul><ul><li>cd ../asterisk-1.4.22 </li></ul></ul><ul><ul><li>make clean </l...
DAHDI la instalación <ul><li>Luego de la instalación DAHDI ha creado modulos del kernel y ha cargado aplicaciones (módulos...
Como quedó la Instalación? <ul><li>Binario Asterisk:  </li></ul><ul><ul><ul><ul><ul><li>ls /usr/sbin/asterisk </li></ul></...
Directorios de Asterisk <ul><li>/usr/lib/asterisk/modules  Directorio donde se encuentran los modulos compilados en extens...
Configuración Inicial de Asterisk
Asterisk CLI <ul><li>Ejecute el comando:  asterisk  !! </li></ul><ul><li>Conectese a la CLI de Asterisk: </li></ul><ul><ul...
Asterisk conceptos de la configuración <ul><li>Canal (Channel – Chan) </li></ul><ul><ul><ul><li>Es una conexión que conduc...
Dialplan  <ul><li>El plan del marcado es el corazon de una central telefonica y la parte principal de asterisk. </li></ul>...
Extension <ul><li>Extension o exten encierra un concepto diferente a lo que normalmente pensamos. </li></ul><ul><li>Que ti...
Aplicación <ul><li>Asterisk ejecuta secuencialmente los comandos asociados a cada extensión. Esos comandos son realmente a...
Contexto <ul><li>El dialplan de Asterisk se divide en uno o varios contextos. </li></ul><ul><li>Un contexto es una colecci...
Dialplan: Arquitectura
Primeros pasos sip.conf <ul><li>Accese a la carpeta /etc/asterisk </li></ul><ul><li>Que se encuentra en esa carpeta? </li>...
Generando una llamada <ul><ul><ul><li>Realice la instalacion de x-lite descargue el tar.gz. </li></ul></ul></ul><ul><ul><u...
Primeros pasos: Los archivos de Canales <ul><li>Archivos de configuración de canales: </li></ul><ul><ul><li>iax.conf : can...
Carga de Configuraciones <ul><li>La configuración se carga al iniciar Asterisk, por lo que para aplicar cualquier cambio s...
SIP.conf <ul><li>En primer lugar existe la sección [general], donde se definen variables globales y aspectos por defecto p...
SIP.conf Registrar <ul><li>Register  permite a Asterisk registrar su presencia en el otro extremo. De esta forma, el prove...
SIP.conf seccion General <ul><li>Las variables generales más importantes son: </li></ul><ul><li>allow y disallow : indican...
SIP.conf <ul><li>user : envía llamadas a Asterisk. </li></ul><ul><li>peer : recibe llamadas de Asterisk. </li></ul><ul><li...
SIP.conf Variables de canales <ul><li>type : peer / friend </li></ul><ul><li>context : contexto donde entrarán las llamada...
SIP.conf Ejemplo [pepe] ; usuario type=friend ; IN/OUT secret=pepin ; clave context=internos ; rela dial plan callerid=&qu...
SIP.conf Verificacion en el CLI <ul><li>Mediante el comando “ reload ” en el CLI de Asterisk, se indica que recargue la co...
IAX.conf <ul><li>En el archivo IAX.CONF se definen todos los enlaces que se establecerán usando el protocolo IAX tiene la ...
IAX.conf <ul><li>El protocolo IAX permite el trunking de llamadas, es decir, que múltiples streams de voz compartan un úni...
Definiciones con Plantillas <ul><li>Para definiciones estáticas de usuarios con características comunes como en grupos de ...
Detalles del Extensions.conf <ul><li>El archivo extensions.conf es la parte central de toda la  configuración, dado que es...
Detalles del Extensions.conf <ul><li>Existen dos contextos especiales:  [general]  (variables predefinidas) y  [globals ] ...
Detalles del Extensions.conf Prioridades <ul><li>Una extensión puede tener varios pasos, denominados  prioridades . </li><...
Prioridades en Extensions.conf <ul><li>Prioridades sin numerar : Asterisk introduce el uso de la  prioridad  n  (next). Ca...
Prioridades en Extensions.conf <ul><li>;Va a n+101 en caso de que el canal esté ocupado: </li></ul><ul><li>exten => 555, L...
Detalles del Extensions.conf <ul><li>Las aplicaciones realizan una acción determinada en el canal actual, controlando el c...
extensions.conf <ul><li>En el archivo extensions.conf se configura el plan de marcado (dialplan) de la central telefónica....
Sintaxis en extensions.conf <ul><li>Sintaxis General de un contexto en extensions.conf </li></ul><ul><li>Ejemplo: “Hola Mu...
<ul><li>La lección sobre Telefonía sera esta semana (Miercoles o Viernes), tendra alrededor de 30 preguntas TEORICAS. </li...
Contextos y Extensiones <ul><li>Cada extensión SIP o llamada entrante de la PSTN tendrá asociado un contexto. </li></ul><u...
Manejo de Variables en extensions.conf <ul><li>Para el acceso a una variable: </li></ul><ul><ul><ul><ul><ul><li>${VARIABLE...
Practica <ul><li>Configuración de extensiones para el laboratorio. </li></ul>
Conceptos básicos del plan de marcado
Las voces de Asterisk <ul><li>Ahora definiremos pasos para llamadas entrantes: </li></ul><ul><ul><li>Contestar la llamada....
Las voces de Asterisk <ul><ul><li>Playback() reproduce un archivo previamente grabado. Recibe como parámetro el nombre del...
Ejemplo de Configuración de una Linea <ul><ul><ul><ul><li>[300] </li></ul></ul></ul></ul><ul><ul><ul><ul><li>type=friend <...
CODECS de Alta Calidad y Bajo Ancho de Banda <ul><li>Codecs de Alta Calidad </li></ul><ul><li>disallow=all </li></ul><ul><...
Básicos de otras aplicaciones <ul><li>Background(). Similar a playback, pero si el usuario presiona dígitos, la aplicación...
Dialplan interactivo <ul><li>La persona que llama puede ingresar informacion presionando las teclas del telefono. </li></u...
IVR Básico <ul><li>[interno] </li></ul><ul><li>exten => 101,1,Answer( ) ; contesta la llamada </li></ul><ul><li>exten => 1...
IVR Basico <ul><li>[interno] </li></ul><ul><li>exten => 4000,1,Answer( ) </li></ul><ul><li>exten => 4000,2,Background(ente...
La extension i y los timeouts <ul><li>Cuando el usuario teclea una entrada inválida, la llamada es enviada a la extensión ...
Uso de las extensiones i y t <ul><li>[interno] </li></ul><ul><li>exten => 4000,1,Answer( ) </li></ul><ul><li>exten => 4000...
Saltos y Bucles <ul><li>Con la aplicación GOTO se puede saltar de un lugar a otro dentro del dialplan. </li></ul><ul><li>L...
Uso de GOTO <ul><li>Pruebe el uso de la aplicación GOTO y el paso de parametros con: </li></ul><ul><ul><ul><ul><li>[prueba...
Incluyendo el uso de Etiquetas <ul><li>Pruebe la siguiente extension: </li></ul><ul><ul><ul><ul><li>exten => 128,1,Answer(...
La aplicación Dial <ul><li>Permite conectar 2 ó más canales. </li></ul><ul><li>Es especialmente útil cuando los dispositiv...
La aplicación Dial <ul><li>El segundo argumento es el tiempo que se intentará llamar al destino. Si en ese tiempo no conte...
Usando Dial <ul><li>Compruebe el uso de Dial con el siguiente contexto </li></ul><ul><li>[interno] </li></ul><ul><li>exten...
Dial: Caracteristicas Adicionales <ul><li>El tercer parámetro es una cadena que puede estar compuesta por varios caractere...
Dial: Recapitulando <ul><li>[interno] </li></ul><ul><li>exten => 4000,1,Answer( ) </li></ul><ul><li>exten => 4000,2,Backgr...
Dial: Recapitulando <ul><li>exten => 4002,1,Dial(Iax2/4010,10) </li></ul><ul><li>exten => 4002,2,Playback(vm-nobodyavail) ...
Conceptos avanzados del plan de marcado
Manejo de Variables <ul><li>En el dialplan de Asterisk existen variables, que pueden ser modificadas por el propio Asteris...
Manejo de Variables <ul><li>Asignación de variables: </li></ul><ul><ul><li>Set(Variable=valor) </li></ul></ul><ul><ul><li>...
Manejo de Variables Globales <ul><li>Permite que se pueda hacer referencia a ellas en todos los contextos, en todas las ex...
Uso de Variables en el Dial Plan <ul><ul><li>[globals] </li></ul></ul><ul><ul><li>JUAN=Sip/juan ; define la variable JUAN ...
Uso de Variables en el Dial Plan <ul><ul><li>exten => 4002,1,Dial(${PEDRO},10) </li></ul></ul><ul><ul><li>exten => 4002,2,...
Variables Predefinidas <ul><li>Listado de variables más importantes: </li></ul><ul><ul><li>${CALLERID}: caller ID actual, ...
Variable ${EXTEN} <ul><li>Permite saber cuál es la extensión que fue marcada. </li></ul><ul><li>Se utiliza comunmente para...
Coincidencia de Patrones <ul><li>Permite definir una sola extensión que permita lograr igualar una serie de posibles valor...
Coincidencia de Patrones (Pruebelos) <ul><ul><li>X . Hace match con cualquier dígito de 0 a 9.  </li></ul></ul><ul><ul><li...
Aplicación a la salidas de Troncales <ul><li>Se generan contextos especificos para llamadas locales a la PSTN para regular...
Include <ul><li>Puede utilizarse un contexto dentro de otro contexto a través de la directiva  include </li></ul><ul><li>P...
Agregando al Plan de Marcado <ul><ul><li>[internos] </li></ul></ul><ul><ul><li>include => llamadas-locales </li></ul></ul>...
Uso de Variables y Expresiones <ul><li>Las expresiones son una combinación de variables, operadores y valores que arrojan ...
Condicionales <ul><li>Permite tomar desiciones dentro del dialplan. </li></ul><ul><li>Aplicación GotoIf() </li></ul><ul><u...
Uso de Condicionales <ul><li>exten => 104,1,Set(TEST=1) </li></ul><ul><li>exten => 104,2,GotoIf($[${TEST} = 1]?104,20) </l...
Uso de Condicionales <ul><li>exten => 106,1,GotoIf($[${CALLERID(num)} = 8842374]?20:10) </li></ul><ul><li>exten => 106,10,...
While y EndWhile <ul><li>Vamos a crear un Loop que se ejecute 3 veces de manera tradicional antes de introducir el While <...
While() y EndWhile() <ul><ul><ul><li>exten => s,1,NoOp(El Loop con While) </li></ul></ul></ul><ul><ul><ul><li>exten => s,n...
Correo de Voz (Voicemail) <ul><li>Se pueden dejar mensajes de voz a los usuarios. </li></ul><ul><li>Se permite un número i...
Correo de Voz <ul><li>mailbox => password, nombre [,e-mail [, pager-email [, opciones]]] </li></ul><ul><li>mailbox: número...
La aplicación Voicemail <ul><li>En Voicemail.conf se encuentra la configuracion de las casillas individuales de voicemail....
Configuracion de Voicemail <ul><li>Voicemail.conf </li></ul><ul><ul><li>[default] </li></ul></ul><ul><ul><li>4001 => 1234,...
Ejemplo de Voicemail <ul><li>[stations] </li></ul><ul><li>Exten => _NXX,1,Dial(SIP/${EXTEN},20) </li></ul><ul><li>Exten =>...
La aplicación Record <ul><li>Podemos grabar nuestros mensajes (voces) a nuestro gusto. </li></ul><ul><li>Si utilizamos el ...
Sala de Conferencias <ul><li>Permite crear conferencias protegidas por clave. </li></ul><ul><li>Administrar conferencias. ...
Sala de Conferencias <ul><li>Meetme.conf </li></ul><ul><ul><li>[rooms] </li></ul></ul><ul><ul><li>Conf => 600 </li></ul></...
Directorio <ul><li>Con el a
VOIP I - Marzo 2010
VOIP I - Marzo 2010
Upcoming SlideShare
Loading in …5
×

VOIP I - Marzo 2010

6,875 views

Published on

Curso VOIP usando Asterisk Modulo I dictado en ESPOL, Guayaquil, Ecuador.
Basado en recursos de la Web y en contenido generado en ESPOL.

Published in: Entertainment & Humor

VOIP I - Marzo 2010

  1. 1. Sistemas de VOIP con Asterisk: MODULO 1 Marzo 2010 – Guayaquil, Ecuador Instructor: Ing. José Córdova
  2. 2. Presentación del Curso <ul><ul><li>MODULO 1 </li></ul></ul><ul><ul><ul><li>Introducción a VOIP y SIP. </li></ul></ul></ul><ul><ul><ul><li>Componentes de VOIP. </li></ul></ul></ul><ul><ul><ul><li>Configuración de Central Telefónica Asterisk. </li></ul></ul></ul><ul><ul><ul><li>Planes de Marcado y Aplicaciones. </li></ul></ul></ul><ul><ul><ul><li>Análisis de Redes de VOIP. </li></ul></ul></ul><ul><ul><li>MODULO 2 </li></ul></ul><ul><ul><ul><li>Características Avanzadas de Asterisk </li></ul></ul></ul><ul><ul><ul><li>SIP, IAX y DUNDi. </li></ul></ul></ul><ul><ul><ul><li>Trunking, Tarjetas Analogas, Digitales, Channel Bank, Appliances. </li></ul></ul></ul><ul><ul><ul><li>AGI y AMI. </li></ul></ul></ul><ul><ul><ul><li>Dimensionamiento y Planificación de Redes VoIP. </li></ul></ul></ul><ul><ul><ul><li>Seguridad en VOIP. </li></ul></ul></ul>
  3. 3. Presentación del Curso <ul><li>Perfil de los participantes: </li></ul><ul><ul><li>Nombre </li></ul></ul><ul><ul><li>Estudios (Carrera) </li></ul></ul><ul><ul><li>Expectativas del curso </li></ul></ul><ul><ul><li>Conocimientos de: </li></ul></ul><ul><ul><ul><ul><li>Networking </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Telefonia/VOIP </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Linux </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Adicional? </li></ul></ul></ul></ul>
  4. 4. Presentación del Curso <ul><li>Target del Curso. </li></ul><ul><li>Resultados del Curso. </li></ul><ul><li>Competencias a adquirir al finalizar el Curso. </li></ul><ul><li>Introducción al Mercado VOIP en Ecuador. </li></ul><ul><li>Expectativas de los participantes. </li></ul>
  5. 5. Asterisk Professional Path
  6. 6. Evaluación del Curso <ul><li>Para obtener el CERTIFICADO DE APROBACION del curso usted necesita obtener por lo menos el 70% de calificación. </li></ul><ul><ul><ul><ul><li>50% Evaluación Teórica a mitad del contenido del curso. </li></ul></ul></ul></ul><ul><ul><ul><ul><li>50% Evaluación Práctica al final del curso. </li></ul></ul></ul></ul><ul><ul><ul><ul><li>10% Adicional por Asistencia (Prácticas grupales). </li></ul></ul></ul></ul><ul><li>Para obtener el CERTIFICADO DE ASISTENCIA al curso usted necesita tener por lo menos el 70% de asistencias del total de horas impartidas del curso. </li></ul><ul><li>Las practicas serán “hands-on”!! </li></ul>
  7. 7. Programa Resumido del curso <ul><li>Conceptos básicos de VOIP. </li></ul><ul><li>Linux para administradores de Asterisk. </li></ul><ul><li>Introducción a Asterisk. </li></ul><ul><li>Instalando Asterisk. </li></ul><ul><li>Configuración Inicial de Asterisk. </li></ul><ul><li>Conceptos básicos del plan de marcado. </li></ul><ul><li>Conceptos avanzados del plan de marcado. </li></ul><ul><li>Interfaces gráficas de administración de Asterisk. </li></ul><ul><li>Análisis de Redes de VOIP. </li></ul>
  8. 8. Conceptos básicos de VOIP
  9. 9. Un poco de Historia <ul><li>Telefonía Tradicional </li></ul><ul><li>Teléfono Inventado en 1876 por Antonio Meucci (atribuido a Alexander Graham Bell hasta el 2002). </li></ul><ul><li>Originalmente: Transmisión sobre un hilo de hierro, comunicación punto a punto. </li></ul><ul><li>Hoy en día: 1000 millones de teléfonos repartidos por todo el mundo. </li></ul><ul><li>Arquitectura Mallada: Todos contra todos </li></ul>
  10. 10. Introduccion a Central Telefonica Digital <ul><li>En la central nació el concepto de switch que inicialmente lo realizaba manualmente una persona, luego aparecieron los conmutadores electrónicos. </li></ul><ul><li>Que parte es digital? Que parte es Analógica? </li></ul><ul><ul><ul><li>En muchos casos la comunicación es analógica hasta la central </li></ul></ul></ul><ul><ul><ul><li>En la central se realiza PCM a 64kbps sin perdida de calidad, Por que 64kbps? </li></ul></ul></ul>
  11. 11. La Interconexion de centrales <ul><li>No es posible realizar un mallado de todos contra todos, sin embargo se necesita un circuito dedicado para cada llamada, la solucion es multiplexar las llamadas: TDM – Time Division Multiplexing. </li></ul><ul><li>Que realmente se multiplexa?  El enlace troncal entre centrales. </li></ul>
  12. 12. La Interconexión de centrales tradicional <ul><li>El uso del canal (troncal) de interconexion nos permite comunicarnos entre centrales (inter TELCO/ entre TELCOs). </li></ul><ul><li>El recurso que se ha establecido para la llamada (circuito) esta ocupado el tiempo de duracion de la llamada. </li></ul><ul><li>Metodo ideado para voz </li></ul><ul><li>El precio, derechos, uso, liberacion, garantia de disponibilidad es regulacion de cada pais, en Ecuador: CONATEL/SENATEL y vigilado por SUPERTEL. </li></ul>
  13. 13. Que es una troncal? <ul><li>Una troncal es una línea conectada entre dos sistemas de switcheo, no necesariamente en grandes centrales. </li></ul><ul><li>No todos los usuarios o agentes requieren una troncal, las troncales se organizan en grupos. </li></ul><ul><li>E1/T1: se multiplexan TDM por lo que necesitan estar sincronizados vienen en 4 hilos 1 par para Tx y otro para Rx. </li></ul><ul><li>E1: 32 Canales a 2.048Mbps con ley A, T1: 24 Canales a 1.544Mbps con ley u. </li></ul><ul><li>Estas medidas se usan para tramas/troncales para conectar centrales, para clientes corporativos y tx de datos dedicados. </li></ul><ul><li>Mas usado en mercado: E1 MFC-R2 CAS 30 canales simultaneos a 64Kbps y 2 de señalización, normalmente carriers no entregan SIP. </li></ul>
  14. 14. Principios de VOIP <ul><li>VoIP : Voice over Internet Protocol </li></ul><ul><li>Uso de una red de datos para todo el proceso de llamadas de voz. </li></ul><ul><li>Permite unir dos mundos distintos: Telefónia y Redes de Datos. </li></ul><ul><li>Usan un protocolo común de convergencia: IP – Protocolo de Internet. </li></ul><ul><li>Preguntas: </li></ul><ul><ul><ul><ul><li>Llamadas en Locutorios. </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Llamadas en Internet (Skype, Messenger). </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Llamadas celulares – 3.5G. </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Se utiliza realmente VOIP? </li></ul></ul></ul></ul>
  15. 15. Que funciones debe realizar VOIP? <ul><li>Digitalización de la voz. </li></ul><ul><li>Paquetización de la voz. </li></ul><ul><li>Enrutamiento de los paquetes. </li></ul><ul><li>Además: </li></ul><ul><ul><li>Conversión de números telefónicos a direcciones IP y viceversa. </li></ul></ul><ul><ul><li>Generación de la señalización requerida por la red telefónica. </li></ul></ul>
  16. 16. Algo de Actualidad <ul><li>Internet es la mayor red de datos del mundo  VOIP permite realizar llamadas por internet. </li></ul><ul><li>Existen DOS enfoques diferentes: </li></ul><ul><ul><ul><ul><li>VOIP: cualquier comunicación de voz por paquetes en una red IP. </li></ul></ul></ul></ul><ul><ul><ul><ul><li>TOIP: TELEFONIA IP, la diferencia es que esta se rige por los parámetros de calidad y control estrictos de la ITU. </li></ul></ul></ul></ul><ul><li>El 50% de las llamadas de grandes operadoras son encaminadas por IP. </li></ul><ul><li>Para el control de calidad se pueden usar CODECS específicos. </li></ul><ul><li>VOIP sobre una red privada: red local debe controlar toda la fiabilidad similar a la de una TELCO. </li></ul><ul><li>En Internet se puede estudiar e INTENTAR controlar el índice de fiabilidad. </li></ul>
  17. 17. Algo de Actualidad <ul><li>La convergencia de servicios de Telecomunicaciones Actuales se basa en IP. </li></ul><ul><li>WiFI, WiMAX, ADSL, ADSL2+ tienden a usar IP como protocolo de red que permita handover vertical. </li></ul><ul><li>Las nuevas Redes Moviles tambien estan basando toda su red de datos antes propietaria a IP (IMS). </li></ul><ul><li>REFERENCIA WEBOK </li></ul>
  18. 18. Problemas de VOIP <ul><li>Existen problemas que no existian o tenian una solucion sencilla en la telefonia Tradicional y que afectan la QoS en VOIP: </li></ul><ul><ul><ul><li>Requerimientos dinamicos de ancho de banda. </li></ul></ul></ul><ul><ul><ul><li>Control y paquetizacion. </li></ul></ul></ul><ul><ul><ul><li>Latencia </li></ul></ul></ul><ul><ul><ul><li>Jitter </li></ul></ul></ul><ul><li>Como controlarlos en Internet? </li></ul><ul><li>No hay control ni “responsabilidad” en internet. </li></ul><ul><li>Y la perdida de paquetes? </li></ul><ul><li>VOIP se montará sobre RTP que funciona sobre UDP, existe retransmisión de paquetes? </li></ul>
  19. 19. Agentes Implicados <ul><li>Usuarios VoIP: Utilizan tecnologías VoIP para realizar llamadas. </li></ul><ul><li>Proveedores de VoIP: permiten llamar desde VoIP a telefonía tradicional. Cobran por ese servicio. </li></ul><ul><li>Carriers de VoIP: Venden sus rutas VoIP a los proveedores, son 'mayoristas' de minutos IP. </li></ul><ul><li>Terminadores VoIP: Venden sus líneas para llamar a telefonía tradicional a los proveedores de VoIP. </li></ul><ul><li>Integradores de Soluciones VoIP: Conectan centralitas a VoIP, servidores dedicados para servicios adicionales, conexiones </li></ul><ul><li>CRM -> VoIP, Softphones </li></ul>
  20. 20. Agentes Implicados <ul><li>Proveedor de VOIP: El principal servicio de los diferentes proveedores de Voz sobre IP es el de hacer de puerta de enlace hacia la red telefónica pública (conocida como PSTN/POTS) a costos muy reducidos </li></ul>
  21. 21. Elementos Implicados <ul><li>Telefono IP : apariencia común, tiene por lo menos 1 conector RJ45 para conectarse a una red IP. NO provee conexión RJ11. Tambien se incluyen telefonos WIFI. El conector RJ45 provee 10/100/1000Mbps </li></ul>Grandstream Budgetone 102 Grandstream GXP-2000 LINKSYS WIP300
  22. 22. Elementos Implicados <ul><li>Adaptador Analógico IP (ATA): transforman la señal analógica de los teléfonos tradicionales a lo que VOIP entiende (protocolo y códec) proveen conectores RJ11 y RJ45. </li></ul><ul><li>Permite reutilizar los teléfonos actuales. </li></ul>Linksys PAP2T-NA Grandstream Handytone 386
  23. 23. Elementos Implicados <ul><li>Softphones: Programas que proveen toda la funcionalidad de un teléfono, adicionando los servicios de valor agregado de VOIP (toda comunicación voz/video sobre IP). </li></ul>
  24. 24. Elementos Implicados <ul><li>Terminos de uso común y su aplicación como agentes de VOIP: </li></ul><ul><ul><ul><ul><li>Gateway: “pasarela” entre una red convencional PSTN y una red IP, se encarga de digitalizacion y paquetización y garantiza la comunicación entre dispositivos IP y no IP, centrales IP y no IP. </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Gatekeeper: “controlador” o “core” de los gateways, AuC de usuarios, control de BW, enrutamiento IP, el básico de H.323. </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Sip Proxy: actua como conmutador (switch) de llamadas con funciones limitadas, Asterisk puede proveer muchos servicios pero menos capacidad de conmutacion y funciones de Switch. Se usan como sistemas de balanceo de carga y tolerancia a fallos, capacidades para ambientes distribuidos. </li></ul></ul></ul></ul>
  25. 25. Elementos Implicados <ul><li>Tarjetas de Telefonia: Tipo PCI o PCI express vienen en variedad: 2,4,8,24 puertos analogicos o 1, 2 o 4 lineas digitales </li></ul><ul><li>Las tarjetas de 24 puertos analogicos permiten hasta 6 modulos FXS o FXO o una mezcla entre ellos, cada modulo tiene 4 lineas. </li></ul><ul><li>Modulo adicional de cancelación de ECO y capacidad de anfenol a patch panel o channel bank. </li></ul>Digium TDM2400P
  26. 26. Elementos Implicados <ul><li>Tarjetas de hasta 4 modulos FXS o FXO: TDM410 </li></ul><ul><li>Tarjetas de hasta 8 puertos analógicos y soportan quads y duals FXS, FXO: TDM800. </li></ul><ul><ul><ul><ul><li>Manejan 1  4 Módulos de 2 lineas cada uno. </li></ul></ul></ul></ul><ul><li>Con o sin modulo cancelador de ECO. </li></ul>
  27. 27. Como funciona la VOIP? <ul><li>Paso 1: Los dos comunicantes se registran en el servidor VoIP con sus teléfonos (Hardphones, Softphones). </li></ul><ul><li>Paso 2: El equipo del emisor pregunta por el equipo del receptor. </li></ul><ul><li>Paso 3: El servidor VoIP devuelve datos de contacto al emisor (puertos, direcciones IP). </li></ul><ul><li>Paso 4: Se establecen comunicación entre los interlocutores. </li></ul><ul><ul><ul><ul><li>Todo ello utilizando un protocolo determinado: SIP, IAX2, H323 ... </li></ul></ul></ul></ul><ul><li>Que es un protocolo? </li></ul><ul><li>Es el 'lenguaje' que se utiliza para negociar y establecer las comunicaciones de voz sobre IP. </li></ul>
  28. 28. Protocolos de VOIP <ul><li>H.323 </li></ul><ul><li>IAX2 </li></ul><ul><li>SIP </li></ul><ul><li>MGCP </li></ul><ul><li>Skinny/SCCP </li></ul><ul><li>UNISTIM </li></ul><ul><li>Los protocolos de transporte o de “Internet” no fueron originalmente diseñados para entregar paquetes en tiempo real los puntos finales son diseñados para esperar, retransmitir, descartar, esto no funciona en las conversaciones de voz </li></ul>
  29. 29. Protocolos de VOIP <ul><li>Protocolo H.323 </li></ul><ul><li>Es un estándar del ITU (International Telecommunications Union) que provee especificaciones para ordenadores, sistemas y servicios multimedia por redes que no proveen calidad de servicio. </li></ul><ul><li>Provee control y señalización para negociar las posibilidades de la comunicación: </li></ul><ul><ul><li>Negociación de codecs </li></ul></ul><ul><ul><li>Verificación de la posibilidad de establecer canales de 'media'. </li></ul></ul><ul><ul><li>Control de secuencia </li></ul></ul><ul><li>Para el streaming, se basa como SIP en RTP / RTCP </li></ul>
  30. 30. Protocolos de VOIP <ul><li>Protocolo H.323: Ventajas </li></ul><ul><li>Implementa QoS de forma interna. </li></ul><ul><li>Más completo: control de conferencias, recursos .. </li></ul><ul><li>Soporta conferencias de forma nativa de vídeo y datos. </li></ul><ul><li>SIP vs H323: </li></ul><ul><li>SIP se perfila como el claro vencedor. </li></ul><ul><li>H323 se actualizó a la versión 7. </li></ul><ul><li>En EEUU se apostó por SIP y de ahí se ha derivado en prácticamente un estándar. </li></ul>
  31. 31. Protocolos de VOIP <ul><li>IAX (Inter Asterisk eXchange) </li></ul><ul><li>Es un protocolo abierto, originalmente diseñado por Digium para comunicarse con otros servidores Asterisk. </li></ul><ul><li>Es un protocolo de transporte que utiliza el puerto UDP 4569 tanto para señalización como para los flujos de RTP (real time transfer protocol). </li></ul><ul><li>Es el único que tiene la capacidad de “trunkar” múltiples sesiones en un solo flujo de datos, esto ayuda a reducir la latencia, la necesidad de procesamiento y el ancho de banda requerido. </li></ul><ul><li>Permite escalar mas fácilmente una gran cantidad de canales de voz entre dos puntos finales. </li></ul>
  32. 32. Protocolos de VOIP <ul><li>El futuro de IAX </li></ul><ul><li>Debido a que IAX fue diseñado pensando en voz ha recibido criticas por no tener un soporte adecuado para video. </li></ul><ul><li>Sin embargo tiene todo el potencial para desarrollar soporte para cualquier flujo de datos multimedia. </li></ul><ul><li>El que sea un protocolo abierto es quizás su mayor ventaja pues la comunidad que lo diseña puede agregar las nuevas funcionalidades que desee. </li></ul>
  33. 33. Protocolos de VOIP <ul><li>IAX: Consideraciones de Seguridad </li></ul><ul><li>Tres formas de autentificar: Texto plano, MD5 e intercambio de clave RSA. </li></ul><ul><li>Esta autenticación no encripta el flujo de datos (trafico multimedia, headers) por lo que se recomienda el uso de VPNs para mayor seguridad. </li></ul><ul><li>En el futuro se prevé que IAX permita la encriptación de los flujos multimedia entre dos puntos, con el uso de una llave RSA compartida o de asignación dinámica al momento de establecer una llamada </li></ul>
  34. 34. Protocolos de VOIP <ul><li>Protocolo SIP </li></ul><ul><li>SIP: Session Initiation Protocol, protocolo del IETF para VozIP, texto y sesiones multimedia. </li></ul><ul><li>Es principalmente un protocolo de señalización de capa de aplicación para iniciación, modificación y terminación de sesiones de comunicación multimedia entre usuarios. </li></ul><ul><li>Principales elementos implicados: </li></ul><ul><ul><li>User Agent (Usuario) </li></ul></ul><ul><ul><li>Registrar y SIP Proxy </li></ul></ul><ul><li>El sector tiende globalmente hacia SIP. </li></ul>
  35. 35. Protocolos de VOIP <ul><li>Protocolo SIP </li></ul><ul><li>Capacidades de SIP: </li></ul><ul><ul><li>Localización del usuario. </li></ul></ul><ul><ul><li>Disponibilidad del usuario: determinación de la voluntad del receptor de la llamada de participar en las comunicaciones. </li></ul></ul><ul><ul><li>Capacidad del usuario: Determinación del medio y de sus parámetros. </li></ul></ul><ul><ul><li>Gestión de la sesión: transferencia, terminación de sesiones, modificación de los parámetros de la sesión desde el propio </li></ul></ul><ul><ul><li>'User Agent'. </li></ul></ul><ul><li>En SIP, el usuario es el 'dueño' de su sesión. </li></ul>
  36. 36. Protocolos de VOIP <ul><li>Protocolo SIP : Esquema de funcionamiento </li></ul><ul><li>El protocolo SIP es de forma nativa “peer to peer”: Dos User Agents pueden establecer una sesión entre sí: </li></ul><ul><li>Dos Canales: </li></ul><ul><ul><li>Señalización(UDP 5060): Establecimiento, Negociación, Fin...) </li></ul></ul><ul><ul><li>Streaming RTP (UDP 10000-20000 normalmente) y control RTCP. </li></ul></ul>
  37. 37. Protocolos de VOIP: Señalización SIP
  38. 38. Codecs de VOIP <ul><li>Los códecs se utilizan para transforma la señal de voz analógica en una versión digital. </li></ul><ul><li>Los Softphones, Hardphones, PBX-IP ... soportan una serie de códecs cada uno. Cuando hablan entre si negocian un códec común. </li></ul><ul><li>Lo básico: PCM </li></ul>
  39. 39. Codecs de VOIP <ul><li>Si la voz esta entre los 300 y 4.000 Hz una frecuencia de 8.000 muestras por segundo reconstruirá perfectamente la señal. </li></ul><ul><li>Si se utilizan 8 bits para cuantizar la señal se necesitarían=8 bits x 8.000 Hz=64 kbps (G.711 o PCM puro) </li></ul><ul><ul><li>Cuando se muestrea una señal, la señal de muestreo debe ser al menos el doble del ancho de banda de la señal de entrada, con la finalidad de reconstruir perfectamente la señal a partir de la muestra tomada. </li></ul></ul><ul><ul><li>Autor? </li></ul></ul>
  40. 40. Codecs de VOIP GSM 13 kbps iLBC 15 kbps G.711 64 kbps G.723 5.3/6.3 kbps G.726 16/24/32/40 kbps G.729 8 kbps Speex 2.15 a 44.2 kbps
  41. 41. Telefonia Convencional vs. Telefonia IP <ul><li>Telefonia Convencional: </li></ul><ul><li>PBX (Private Branch eXhange) propietarias </li></ul><ul><ul><li>Requieren hardware y módulos de software costosos. </li></ul></ul><ul><ul><li>Incompatibles. El Hard de una marca no funciona en otra marca. </li></ul></ul><ul><ul><li>Sistema rígido y cerrado, sin personalización. </li></ul></ul><ul><ul><li>Su modelo de licenciamiento condiciona el crecimiento. </li></ul></ul><ul><ul><li>Requiere hardware especializado. </li></ul></ul><ul><li>Redes telefónicas </li></ul><ul><ul><li>Sobre la base de conmutación de circuitos. </li></ul></ul><ul><ul><li>El circuito está dedicado a una comunicación telefónica, inclusive en los silencios. </li></ul></ul><ul><ul><li>Se “garantiza” la calidad de la transmisión. </li></ul></ul>
  42. 42. Telefonia Convencional vs. Telefonia IP <ul><li>Telefonia IP </li></ul><ul><ul><ul><li>Transporta voz convertida en datos (transmisión de paquetes). </li></ul></ul></ul><ul><ul><ul><li>La llamada se transmite por varios caminos (en paquetes de datos) sin bloquear el enlace. </li></ul></ul></ul><ul><ul><ul><li>Un Gateway se encarga de interactuar entre la telefonía convencional y la telefonía IP. </li></ul></ul></ul><ul><ul><ul><li>Integra las dos redes (voz y datos) en una sola red. </li></ul></ul></ul><ul><ul><ul><li>Reduce costos en el usuario final. </li></ul></ul></ul><ul><ul><ul><li>Integra telefonía, video, mensajería instantánea. </li></ul></ul></ul><ul><ul><ul><li>Problema: pueden perderse paquetes </li></ul></ul></ul>
  43. 43. Open Source PBX <ul><li>Utiliza hardware estándar. </li></ul><ul><li>Es desarrollada y mantenida por la comunidad (centenares). </li></ul><ul><li>El desarrollo es modular, dinámico, flexible, adaptable. </li></ul><ul><li>Aprovecha lo mejor que encuentra en otros PBX. </li></ul><ul><li>No se limita a las leyes del mercado. </li></ul><ul><li>Es interoperable. </li></ul><ul><li>Tiene su base en estándares abiertos. </li></ul><ul><li>Permite personalización por parte del usuario. </li></ul><ul><li>Su infraestructura no está manejada por una sola empresa. </li></ul><ul><li>Facilita el trabajo remoto. </li></ul><ul><li>El cliente decide lo que quiere, elimina lo que no le interesa </li></ul><ul><li>Su crecimiento es ilimitado; escalable. </li></ul><ul><li>Telefonía: una aplicación más de red que se integra al resto de las aplicaciones (voz-datos). </li></ul><ul><li>Entorno de desarrollo, plataforma de aplicación. </li></ul><ul><li>Escalable a Pyme, call centers y grandes empresas. </li></ul><ul><li>Incorpora toda la funcionalidad de los PBX propietarios. </li></ul><ul><li>Aprovecha el crecimiento de la banda ancha y las tecnologías WiMAX, Wireless. </li></ul>
  44. 44. Linux para administradores de Asterisk
  45. 45. Paquetes necesarios para la compilación
  46. 46. Linea de Comandos de Linux: Shell <ul><li>El shell prompt será algo como: </li></ul><ul><ul><ul><ul><li>[username@localhost.localdomain username]$ </li></ul></ul></ul></ul><ul><li>Siendo $ el indicador de un usuario normal. </li></ul><ul><ul><ul><ul><li>[root@localhost.localdomain root]# </li></ul></ul></ul></ul><ul><li>Siendo # el indicador de que se ha iniciado como root, para acceder se usa su. </li></ul><ul><li>Todo comando en el shell prompt tendrá la sintaxis: </li></ul><ul><ul><ul><ul><li>command -options <filename> </li></ul></ul></ul></ul><ul><li>Los comandos se completan usando “tab” </li></ul>
  47. 47. Linux Shell <ul><li>Wildcards, funcionan como ocupantes de lugar para distintas funciones en modo texto: </li></ul><ul><ul><ul><ul><ul><li>* — Matches all characters </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>? — Matches one character </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>* — Matches the * character </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>? — Matches the ? character </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>) — Matches the ) character </li></ul></ul></ul></ul></ul><ul><li>El comando pwd muestra el directorio actual de trabajo. </li></ul>
  48. 48. Linux Shell y Manejo de Archivos <ul><li>Algunos comandos útiles para manejar archivos: </li></ul>Action Command Format Details Copy a file cp cp filename destination Copies the file filename to the location destination. List Directory Contents ls ls The ls command lists files in the current working directory. Move a file mv mv which_file destination To move a file from one directory to another, use mv. Rename a file mv mv oldname newname The use of the mv command changes the name of the file from oldname to newname.
  49. 49. Comandos Generales <ul><li>dmesg : Imprime los mensajes desplegados por el &quot;kernel&quot; al inicio. </li></ul><ul><li>free : Estadísticas de uso de Memoria. </li></ul><ul><li>ldconfig : Actualiza las librerías utilizadas por el sistema, recomendable ejecutarlo cada vez que se instale un programa. </li></ul><ul><li>lsmod : Despliega la información referente a los módulos que están habilitados por el &quot;kernel&quot;. </li></ul><ul><li>mount Permite que particiones del sistemas,CD-ROMs, floppys puedan ser leídas en el sistema. Su formato: mount -t <file system(ext2,vfat)> <partición (/dev/hda1,/dev/cdrom)> <punto de lecutra&quot; mount point &quot; (/mnt/home/ /mnt/cdrom)>. </li></ul>
  50. 50. Comandos Generales <ul><li>stat : Despliega información detallada sobre el archivo especificado como: fechas de modificación y cambio, dueño del archivo..etc. </li></ul><ul><li>sudo : Ejecuta un comando como usario raiz (&quot;root&quot;), significa &quot;super user do&quot;(Super usuario hacer). </li></ul><ul><li>umount : Desactiva la partición que se indicada, los parámetros que toma este comando son similares a los de mount . </li></ul><ul><li>uname -a : Información completa sobre el &quot;Host&quot;. </li></ul><ul><li>uptime : Hora actual, tiempo que lleva el sistema corriendo desde el ultimo &quot;reboot&quot;, usuarios conectados al servidor, carga del sistema en los últimos 1,5 y 15 minutos. </li></ul><ul><li>hostname : El nombre del &quot;Host&quot;. </li></ul>
  51. 51. La Red en Linux <ul><li>Ejecute el Comando IFCONFIG. </li></ul><ul><li>Verifique los resultados. </li></ul><ul><li>Cada interfaz activa se identifica con su nombre, Identifique las interfaces activas. </li></ul><ul><li>En el caso de un NIC Hard se identificara la MAC address precedido por el termino HWaddr. </li></ul><ul><li>La Direccion IP esta precedido por el termino inetaddr y la direccion broadcast por el termino Bcast, la subred en donde estamos por el termino Mask . </li></ul><ul><li>Como obtener la informacion unicamente de la Interfaz de Interes? </li></ul>
  52. 52. La Red en Linux <ul><li>Como setear Broadcast, Mascara y la direccion ip de la interfaz? </li></ul><ul><li>Que hace ifup [interfaz] ?? </li></ul><ul><li>Que nos muestra netstat ?? </li></ul><ul><li>Accese al archivo resolv.conf en /etc haga un VI o NANO </li></ul><ul><li>Accese al archivo /etc/sysconfig/network </li></ul><ul><li>Accese al archivo de configuracion de su interfaz ethernet </li></ul><ul><ul><ul><ul><li>/etc/sysconfig/network-scripts/ </li></ul></ul></ul></ul><ul><li>Accese al archivo de configuracion de los modulos para dispositivos </li></ul><ul><ul><ul><ul><li>/etc/modprobe.conf </li></ul></ul></ul></ul>
  53. 53. Comandos de Red <ul><li>host : Determina la dirección IP de un &quot;Host&quot; , host -a despliega toda la información de DNS. </li></ul><ul><li>ifconfig : Permite configurar una interfase de Red y ver el &quot;status&quot; de ésta.Esa de la forma ifconfig <interfase> , ejemplo: ifconfig eth0 </li></ul><ul><li>ifup : Habilita la interfase especificada,ejemplo: ifup eth0 . </li></ul><ul><li>ifdown : Deshabilita la interfase especificada,ejemplo: ifdown eth0 . </li></ul><ul><li>netstat -a : Todas la conexiones de Red originadas y recibidas por el &quot;Host&quot; </li></ul><ul><li>netstat -an | grep 25 : Listar las conexiones de red originadas y recibidas por el &quot;Host&quot;, sobre el puerto 25 </li></ul><ul><li>netstat -r : Muestra la tabla de ruteo &quot;routing table&quot; del sistema </li></ul><ul><li>netstat -i : Estadísticas de red de cada interfase </li></ul>
  54. 54. Comandos de Red <ul><li>lsof -n -i:25 : Determinar el programa del sistema operando bajo el puerto 25 </li></ul><ul><li>ping -s 1016 : Manda paquetes de ping de 1024 bytes (header 8 bytes), mientras que el &quot;default&quot; es 512. </li></ul><ul><li>route -n : Despliega la tabla de ruteo del &quot;Host&quot;. NOTA: Debe de estar &quot;IP Forwarding&quot; ON en /etc/sysconfig/network , además el &quot;kernel&quot; debe de estar configurado para &quot;IP Forwarding&quot; . </li></ul><ul><li>smbclient : Funciona como un cliente FTP, que simula conexiones que serán realizadas a través de Samba. (Vea smbclient ) </li></ul><ul><li>tcpdump : Permite el &quot;debugging&quot; de una interfase en el host. </li></ul>
  55. 55. Control de Procesos <ul><li>ps -aux : Despliega todos los procesos del sistema, con nombre y tiempo de inicio kill : Es utilizado para mandar señales a los procesos en Linux. </li></ul><ul><li>kill -HUP <pid> : Señala al proceso con numero <pid>, que vuelva a leer sus archivos de configuración </li></ul><ul><li>kill -INT <pid> : Señala al proceso con numero <pid>, que sera interrumpido </li></ul><ul><li>kill -TERM <pid> : Señala al proceso con numero <pid>,que debe de terminar, a diferencia de -KILL , esta opción da la oportunidad al proceso de terminar. </li></ul><ul><li>kill -STOP <pid> : Señala al proceso con numero <pid>, que pare momentáneamente </li></ul><ul><li>kill -CONT <pid> : Señala al proceso con numero <pid>, que continué, este comando se utiliza para reanudar un proceso que le fue aplicado -STOP </li></ul>
  56. 56. Mas Comandos <ul><li>kill -KILL <pid> : Señala al proceso con numero <pid>,que termine de inmediato, el proceso es terminado abruptamente. </li></ul><ul><li>killall : A diferencia de kill , killall permite mandar un señal al proceso por nombre . </li></ul><ul><li>killall <nombre del proceso > : Envía la señal -TERM al proceso con el nombre especificado. NOTA: Por &quot;default&quot; la señal que toma kill y killall es -TERM . </li></ul>
  57. 57. YUM <ul><li>Yum (Yellow dog Updater Modified) es un programa automático para instalar / desinstalar los RPM del sistema. Obtiene automáticamente dependencias y permite instalar correctamente los paquetes. Hace más fácil mantener grupos de máquinas sin tener poner al día manualmente cada RPM que usan. </li></ul><ul><li>Ejecute yum check-update, Que resultado muestra? </li></ul><ul><li>RPM (RedHat Package Manager), Sistema Gestor de Paquetes de linux, mantiene una DB con los datos/dependencias/relaciones de los archivos que generan aplicaciones en Linux. </li></ul><ul><li>Evita el manejo directo con archivos binarios, codigo fuente, configuraciones, compilacion, etc. </li></ul><ul><ul><ul><ul><li>{nombre}-{version de la aplicación}-{versión del paquete}.{arquitectura}.rpm </li></ul></ul></ul></ul>
  58. 58. Preparando el Laboratorio <ul><li>Realice las siguientes verificaciones: </li></ul><ul><ul><ul><li>Interfaces levantadas. </li></ul></ul></ul><ul><ul><ul><li>Puntos de red correctamente conectados. </li></ul></ul></ul><ul><ul><ul><li>IP asignada. </li></ul></ul></ul><ul><ul><ul><li>Acceso a Internet. </li></ul></ul></ul>
  59. 59. Introducción a Asterisk
  60. 60. Algo de historia <ul><li>60s aparecen las centrales electrónicas analogicas, conmutación por relés. </li></ul><ul><li>Telefonía digital utilizada para trunking. </li></ul><ul><li>Se introduce la IDSN o RDSI. </li></ul><ul><li>Las centrales PBX se vuelven Software, especifico del fabricante. (1997) basandose en H323. </li></ul><ul><li>Aparecen caracteristicas de valor agregado como buzon de voz, conferencias, llamada en espera, musica en espera. </li></ul>
  61. 61. Algo de Historia y Actualidad <ul><li>Las PBX se venden como CAJAS NEGRAS, mientras se pensaba que VoIP no tendria éxito por requerimientos de BW. </li></ul><ul><li>1998 Aparece SIP como evolución de H.323 y empieza la revolución de “banda ancha”. </li></ul><ul><li>Comenzó en 1999 desarrollado por Mark Spencer y Digium como sponsor. </li></ul><ul><li>2000 las empresas aun no confian en soluciones “libres” como Linux y *. </li></ul><ul><li>Asterisk sigue evolucionando como sinonimo de VoIP. </li></ul><ul><li>Aparecen otras empresas para desarrollar HW para * como Sangoma, Openvox, etc. </li></ul><ul><li>CISCO compra empresas VoIP basadas en H.323 y propone un SIP. Huawei soporta SIP. </li></ul><ul><li>Asterisk soluciona el NAT con IAX!! </li></ul><ul><li>Aparece IAX2 y Asterisk tiene soporte para casi todos los protocolos. </li></ul>
  62. 62. Introducción a Asterisk: Que es? <ul><li>Se han revisado muchos conceptos para definir Asterisk: </li></ul><ul><li>Es un sistema de comunicaciones con aplicaciones, basado TOTALMENTE en software. </li></ul><ul><li>Permite integrar e instanciar gran cantidad de agentes de redes de datos y de voz de acuerdo a la aplicación. </li></ul><ul><li>VOZ, DATOS y VIDEO convergen en Asterisk como la base para el desarrollo de muchas aplicaciones. </li></ul><ul><li>Es una IP – PBX, Asterisk como Softswitch? </li></ul><ul><li>En grandes proyectos se puede usar Clustering, y redundancia. </li></ul><ul><li>Se ejecuta en una PC estándar (arquitectura x86, x86_64, ppc) bajo GNU/Linux, BSD o MacOSX. </li></ul><ul><li>Appliances de Asterisk. </li></ul>
  63. 63. Asterisk y su Funcionalidad <ul><li>Asterisk es un B2BUA: Back to Back User Agent, Agente de usuario de extremo a extremo. </li></ul><ul><li>Entidad del protocolo SIP. </li></ul><ul><li>El RFC de SIP define la siguiente funcionalidad: </li></ul><ul><ul><ul><ul><li>Gestion de llamadas (facturacion, desconexion automatica . . . ) </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Interconexion de red(adaptacion de protocolos) </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Ocultar la estructura de la red (direcciones privadas, topologias de red) </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Transcodicacion entre las dos partes de una llamada. </li></ul></ul></ul></ul>
  64. 64. Asterisk… <ul><li>Los terminales ven a Asterisk como un servidor, en medio de toda la señalización (a diferencia de un proxy o un router). </li></ul><ul><li>Asterisk “traduce” las “conversaciones” entre agentes que hablen diferentes “idiomas” – transcoding. </li></ul><ul><ul><ul><ul><li>Tiene funciones de GW, maneja diferentes protocolos en los diferentes extremos de funcionalidad del GW. </li></ul></ul></ul></ul><ul><li>Asterisk NO es un servidor proxy. </li></ul><ul><li>Asterisk siempre se encuentra en medio de una conversación entre terminales SIP, (señalización y datos). </li></ul>
  65. 65. Asterisk Arquitectura en el stack de Linux Julián Dunayevich, Lázaro Baca, Andrés Brassara, Santiago Alberch ZAPTEL/ DAHDI Asterisk Módulos Kernel 2.4 / 2.6 Módulos Motor SQL Config TXT Interfaz AMI Consola CLI ASTERISK Gestión Aplicaciones GNU/Linux
  66. 66. Asterisk Arquitectura
  67. 67. Asterisk Arquitectura <ul><li>+ Integración de casi todas las formas de comunicación </li></ul><ul><li>+ Integración de casi todos los codecs de audio </li></ul><ul><li>+ Integración de multitud de Aplicaciones de telefonía </li></ul><ul><li>+ API de canales: Sirve para controlar todas las llamadas del sistema, sean Voz IP, analógicas cualquier otra tecnología pudiendo desarrollar nuevos canales </li></ul><ul><li>+ API de Formato de Ficheros: Sirve para controlar el formato de ficheros que pueden ser controlados por el sistema </li></ul><ul><li>+ API de Aplicaciones: Se han desarrollado muchas aplicaciones de IVR, MultiConferencia, etc, etc. Pudiendo desarrollar todas aquellas aplicaciones más mediante AGI (Asterisk Gateway Interface) pudiendo desarrollarse aplicaciones en C, C++, perl, php, etc. </li></ul><ul><li>+ API de Traducción de Codec: Controla la traducción de codecs entre participantes en una comunicación. Se pueden implementar codecs nuevos. </li></ul>
  68. 68. <ul><li>Extensiones móviles </li></ul><ul><li>Enrutamiento por Indetificador de llamada </li></ul><ul><li>Mensajería SMS </li></ul><ul><li>Sistema TextToSpeach </li></ul><ul><li>Emitir Letras y Números </li></ul><ul><li>Detección de Voz </li></ul><ul><li>Llamada a tres </li></ul><ul><li>Fecha y Hora </li></ul><ul><li>Traducción de Codec </li></ul><ul><li>Trunking </li></ul><ul><li>Pasarelas VozIP </li></ul><ul><li>Sistema de Buzón de Voz </li></ul><ul><li>Indicador visual de mensaje no escuchado </li></ul><ul><li>Indicador sonoro de mensaje no escuchado </li></ul><ul><li>Mensajes del Buzón de Voz a Email </li></ul><ul><li>Grupos de Buzón de Voz </li></ul><ul><li>Interfaz Web de acceso al Buzón de Voz </li></ul><ul><li>Identificación de llamada en Llamada en Espera </li></ul><ul><li>Soporte de oficina Remoto </li></ul><ul><li>Sistema de Menú en Pantalla </li></ul><ul><li>Receptor de Alarmas </li></ul><ul><li>Adición de Mensajes </li></ul><ul><li>Autentificación </li></ul><ul><li>Atención de llamada Automática </li></ul><ul><li>Listas Negras </li></ul><ul><li>Transferencia Ciega </li></ul><ul><li>Transferencia con Consulta </li></ul><ul><li>Registro de detalles de Llamada </li></ul><ul><li>Reenvío de llamada en ocupado </li></ul><ul><li>Reenvío de llamada en No-disponible </li></ul><ul><li>Reenvío de llamada variable </li></ul><ul><li>Monitorización de Llamadas </li></ul><ul><li>Aparcamiento de Llamada </li></ul><ul><li>Sistemas de Colas </li></ul><ul><li>Grabación de llamadas </li></ul><ul><li>Recuperación de Llamadas </li></ul><ul><li>Enrutamiento de llamadas (DID & ANI) </li></ul><ul><li>Escucha de Llamadas </li></ul><ul><li>Transferencia de Llamadas </li></ul><ul><li>Llamada en Espera </li></ul><ul><li>Identificación de LLamada </li></ul><ul><li>Bloqueo por identificación de llamada </li></ul><ul><li>Tarjetas prepago </li></ul><ul><li>Multiconferencia </li></ul><ul><li>Almacenamiento / Recuperación en BBDD </li></ul><ul><li>Integración con BBDD </li></ul><ul><li>Llamada por Nombre </li></ul><ul><li>Sistema de Acceso directo entrante </li></ul><ul><li>Timbre personalizable </li></ul><ul><li>No molestar </li></ul><ul><li>E911 </li></ul><ul><li>ENUM </li></ul><ul><li>Recepción y Envío de FAx </li></ul><ul><li>Lógica de extensiones Flexible </li></ul><ul><li>Listado de directorio Interactivo </li></ul><ul><li>Respuesta de Voz Interactiva(IVR) </li></ul><ul><li>Agentes de llamada Locales y Remotos </li></ul><ul><li>Macros </li></ul><ul><li>Música en Espera </li></ul><ul><li>Música en Espera en transferencia </li></ul><ul><li>Sistema de MP3 configurable </li></ul><ul><li>Control de Volumen </li></ul><ul><li>Marcador Predictivo </li></ul><ul><li>Privacidad </li></ul><ul><li>Protocolo de establecimiento abierto (OSP) </li></ul><ul><li>Conversión de protocolo </li></ul><ul><li>Captura de Llamadas </li></ul>De Llamada: Asterisk Caracteristicas
  69. 69. CTI(Integración de Telefonía con el Ordenador): AGI (Asterisk Gateway Interface) Monitor de Llamadas Gráfico Sistema de Colas para llamadas salientes Marcador Predictivo Interfaz de Gestión vía TCP/IP Escalabilidad: <ul><li>TDMoE (Time Division Multiplex over Ethernet) </li></ul><ul><ul><li>Permite conexión directas entre PBX Asterisk </li></ul></ul><ul><ul><li>Latencia Cero </li></ul></ul><ul><ul><li>Usa Hardware Ethernet Estandar </li></ul></ul><ul><li>Voz Sobre IP </li></ul><ul><li>Permite la integración de Instalaciones separadas físicamente </li></ul><ul><li>Usa conexiones de datos estándar </li></ul><ul><li>Permite un Plan de numeración único para todas las oficinas </li></ul>Asterisk Caracteristicas
  70. 70. Codecs de Audio: <ul><li>ADPCM </li></ul><ul><li>G.711 (A-Law & μ-Law) </li></ul><ul><li>G.723.1 (sin intervenir en la comunicación) </li></ul><ul><li>G.726 </li></ul><ul><li>G.729 (bajo licencia) </li></ul><ul><li>GSM </li></ul><ul><li>iLBC </li></ul><ul><li>Linear </li></ul><ul><li>LPC-10 </li></ul><ul><li>Speex </li></ul><ul><li>IAX™ (Inter-Asterisk Exchange) </li></ul><ul><li>H.323 </li></ul><ul><li>SIP (Session Initiation Protocol) </li></ul><ul><li>MGCP (Media Gateway Control Protocol </li></ul><ul><li>SCCP (Cisco® Skinny®) </li></ul>Protocolos: <ul><li>E&M </li></ul><ul><li>E&M Wink </li></ul><ul><li>Feature Group D </li></ul><ul><li>FXS </li></ul><ul><li>FXO </li></ul><ul><li>GR-303 </li></ul><ul><li>Loopstart </li></ul><ul><li>Groundstart </li></ul><ul><li>Kewlstart </li></ul><ul><li>MF and DTMF support </li></ul><ul><li>Robbed-bit Signaling (RBS) Types </li></ul>Compatibilidad con Telefonía Estándar: <ul><li>4ESS </li></ul><ul><li>BRI (ISDN4Linux) </li></ul><ul><li>DMS100 </li></ul><ul><li>EuroISDN </li></ul><ul><li>Lucent 5E </li></ul><ul><li>National ISDN2 </li></ul><ul><li>NFAS </li></ul>Protocolos de Señalización RDSI Primarios Asterisk Caracteristicas
  71. 71. Asterisk: Protocolos de SEÑALIZACION soportados <ul><li>Full supported: </li></ul><ul><ul><ul><li>SIP (Session Initiation Protocol) </li></ul></ul></ul><ul><ul><ul><li>IAX (Inter-Asterisk eXchange Version 2 IAX2) </li></ul></ul></ul><ul><li>Non-Fully Supported: </li></ul><ul><ul><ul><li>H.323 (De la ITU) </li></ul></ul></ul><ul><ul><ul><li>MGCP (Cisco Media Gateway Control Protocol) </li></ul></ul></ul><ul><ul><ul><li>SCCP (Cisco Skinny Client Control Protocol) </li></ul></ul></ul><ul><ul><ul><li>Unistim (Nortel) </li></ul></ul></ul>
  72. 72. Asterisk como viene? <ul><li>Asterisk se ejecuta en background, al igual que el resto de los servidores conocidos (apache, openssh, proftpd, ...). </li></ul><ul><li>La configuración normalmente se almacena en varios archivos de texto editables de forma tradicional. </li></ul><ul><li>Se distribuye como código fuente para ser compilado e instalado, aunque existen versiones “paquetizadas” para las distribuciones GNU/Linux más comunes. </li></ul>
  73. 73. Preparando un Sistema para Asterisk <ul><li>Los requisitos dependen directamente de: </li></ul><ul><ul><li>Las llamadas concurrentes. (canales) </li></ul></ul><ul><ul><li>Las conferencias y aplicaciones complejas simultáneas. </li></ul></ul><ul><ul><li>Las transcodifcaciones necesarias (recodificación). </li></ul></ul><ul><li>Principalmente, Asterisk requiere de un microprocesador. </li></ul><ul><li>Según Digium, un equipo Dual Intel Xeon 1.8 Ghz 1 Gb Ram soporta 60 llamadas concurrentes codificando con el codec G.729. </li></ul><ul><li>Como es difícil determinar con exactitud, es mejor apuntar alto para poder escalar. </li></ul>
  74. 74. Preparando un sistema para Asterisk <ul><li>Asterisk puede ser instalado en las siguientes plataformas: </li></ul><ul><ul><li>GNU/Linux 2.x </li></ul></ul><ul><ul><li>MacOSX 10.x </li></ul></ul><ul><ul><li>Open Solaris </li></ul></ul><ul><ul><li>BSD </li></ul></ul><ul><ul><li>MS Windows: utilizando Cooperative Linux (no recomendado). </li></ul></ul><ul><li>En este curso se detallará la instalación en plataformas GNU/Linux. </li></ul>
  75. 75. Hardware para Telefonia: Interfaces Analogicas <ul><li>Puertos FXO: Estos interfaces que integra el Asterisk es utilizado para conectarse con la RTPC o como extensión de una centralita tradicional analógica. Para establecer estas conexiones se pueden utilizar las tarjetas X100P y TDM400P de Digium o bien tarjetas TE110P o TE410P conectadas con bancos de Canales. Conectar lineas analogicas que vienen de la calle. </li></ul><ul><li>Puertos FXS: Estos interfaces que integra el Asterisk es utlizado para que se puedan conectar extensiones analógicas al Sistema. Para establecer estar conexiones se pueden utilizar las tarjetas TDM400P de Digium o bien tarjetas TE110P o TE410P conectadas con Bancos de Canales. Conectar terminales analogicas. </li></ul>
  76. 76. Hardware para Telefonia
  77. 77. Hardware para Telefonia: Interfaces Digitales <ul><li>La Red Digital de Servicios Integrados (RDSI) utiliza, en principio, dos tipos de capacidades de acceso. El acceso Básico(2 Canales de voz + 1 de señalización) y el acceso Primario(30 canales de Voz + 1 de señalización). Estas interfaces son integradas dentro de Asterisk con las tarjetas de Digium TE110P y TE410P para acceso primarios y por las tarjetas QuadBRI y OctoBRI de Junghanns, las Tarjetas Diva Server de Eicon, las Fritz de AVM así como aquellas tarjetas RDSI con chipset HFC-S para accesos básicos. </li></ul><ul><li>Además del tipo de señalización, los interfaces RDSI pueden funcionar en modo NT(Network Termination) o TE(Terminal Equipment). </li></ul><ul><li>Modo TE: En Este modo, Asterisk puede conectarse con interfaces RDSI (BRI o PRI) o con Centrales Digitales Tradicionales que tengan conexión RDSI de foma esclava. </li></ul><ul><li>Modo NT: En este modo el Asterisk puede conectarse con Centrales Digitales Tradicionales que tengan conexión RDSI de forma Maestro o con extensiones Digitales. </li></ul>
  78. 78. Hardware para Telefonia: Interfaces Digitales
  79. 79. Clientes SIP en Asterisk <ul><li>El tipo USER permite realizar llamadas desde Asterisk. </li></ul><ul><li>El tipo PEER permite realizar llamadas hacia Asterisk. </li></ul><ul><li>El tipo FRIEND toma la funcionalidad de USER y PEER. </li></ul>
  80. 80. Asterisk: Estado y Autenticación <ul><li>Asterisk mantiene una tabla con sus clientes SIP (algo como una tabla de enrutamiento online), también como es agente entrega esta información a otros Asterisk o a algún SIP Proxy Server. </li></ul><ul><li>La autenticación se hace: </li></ul><ul><ul><ul><ul><li>Plana : la clave se guarda en texto plano en el archivo de configuración y se transmite en texto plano, seguridad? </li></ul></ul></ul></ul><ul><ul><ul><ul><li>MD5/digest : luego de recibir la petición de registro el servidor pide autenticación (nonce). El cliente toma el nonce y crea un hash con la clave, el servidor validará los hashs y tomará una decisión del registro. </li></ul></ul></ul></ul><ul><ul><ul><ul><li>RSA : o clave publica usa el algoritmo SHA1 de dispersión, las claves asociadas a los usuarios se distribuyen entre los servers, </li></ul></ul></ul></ul><ul><li>Que protocolo de senalizacion me daba toda la seguridad para estos tipos de autenticacion? </li></ul>
  81. 81. Asterisk y las tarjetas HW <ul><li>Fabricantes de hardware para conectividad con otras redes (PSTN) hay variedad. </li></ul><ul><li>Asterisk solo da soporte real y completo para el HW Digium. </li></ul><ul><li>Digium solo tiene soporte real para lineas analogicas y tramas digitales de USA. </li></ul><ul><li>El soporte viene “lento” de acuerdo a las aplicaciones, ejemplo: E1 CAS para MFC/R2, con OpenR2. </li></ul><ul><li>ITU tiene parametros para cada pais como: señalización, impedancia, voltajes, tonos. </li></ul>
  82. 82. Asterisk y Los sistemas Tradicionales de VOIP Sistema Tradicional de Comunicaciones Servidor Linux con Asterisk
  83. 83. Instalando Asterisk
  84. 84. Compilando e Instalando Asterisk <ul><li>Asterisk es un proyecto muy ACTIVO, repositorio es actualizado en cuestión de días. </li></ul><ul><li>Asterisk actualiza sus fuentes como un servicio de red xNIX, cambios afecta su funcionalidad y su seguridad. </li></ul><ul><li>Se debe realizar un análisis de valor de las consecuencias de una actualización. </li></ul><ul><li>En DIGIUM existe un paquete que contiene la versión “actual” (current) de asterisk: </li></ul><ul><ul><ul><ul><ul><li>Paquete de fuentes estable de Asterisk 1.4. http://downloads.digium.com/pub/asterisk/asterisk-1.4-current.tar.gz . </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>Acceder a los Downloads de Digium! Via Firefox </li></ul></ul></ul></ul></ul>
  85. 85. Preparando el sistema <ul><li>Se recomienda tener todos los paquetes actualizados: </li></ul><ul><ul><ul><ul><li>yum update o yum upgrade -y </li></ul></ul></ul></ul><ul><li>Se necesita tener actualizado y funcionando los paquetes: </li></ul><ul><ul><ul><ul><li>gcc: es el compilador de C y todas sus dependencias relacionadas. </li></ul></ul></ul></ul><ul><ul><ul><ul><li>openssl: librerias de desarrollo para soporte RSA y MD5. </li></ul></ul></ul></ul><ul><ul><ul><ul><li>ncurses: para el CLI y para que otro aplicativo? </li></ul></ul></ul></ul><ul><ul><ul><ul><li>bison, ncurses, openssl-devel y las dependencias relacionadas. </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Fuentes del kernel de Linux (librerias del sistema) </li></ul></ul></ul></ul><ul><ul><ul><ul><li>yum -y install gcc gcc-c++ kernel-devel bison openssl-devel libtermcap-devel ncurses-devel </li></ul></ul></ul></ul>
  86. 86. Preparando el sistema <ul><li>Para instalar las dependencias y soporte para DB: </li></ul><ul><ul><ul><ul><li>yum -y install mysql-server mysql-devel newt-devel unixODBC unixODBC-devel libtool-ltdl libtool-ltdl-devel mysql-connector-odbc </li></ul></ul></ul></ul><ul><li>En el caso de tener problemas de “sources for kernel”: </li></ul><ul><ul><ul><ul><li>yum –y install kernel-devel </li></ul></ul></ul></ul><ul><ul><ul><ul><li>yum –y update kernel </li></ul></ul></ul></ul><ul><ul><ul><ul><li>uname -r </li></ul></ul></ul></ul><ul><ul><ul><ul><li>De ser necesario reinicie verificando la correcta version de Linux!! </li></ul></ul></ul></ul>
  87. 87. Paquetes de Asterisk <ul><li>Asterisk esta compuesto por: </li></ul><ul><ul><ul><ul><li>El paquete “Asterisk” contiene todas las fuentes (código fuente) y los makefiles para compilar asterisk, es el núcleo del sistema. </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Es el unico componente necesario para montar requerimientos EXCLUSIVOS de VoIP. </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Funciones adicionales como mySQL o trabajo con archivos MP3 y demás están en el paquete “Addons” . </li></ul></ul></ul></ul><ul><ul><ul><ul><li>“ Libpri” contiene librería para gestion de enlaces ISDN con tarjetas digitales. </li></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>Implementa PRI de ISDN. </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>Soporta NI-2, Nortel DMS-100, EuroISDN, protocolos de Lucent 5E para SW Nortel y Lucent. </li></ul></ul></ul></ul></ul>
  88. 88. DAHDI <ul><li>Dahdi (Digium Asterisk Hardware Device Interface) </li></ul><ul><ul><ul><ul><li>“ dahdi-linux” modulos del kernel para acceder a tarjetas de comunicaciones para líneas analógicas. </li></ul></ul></ul></ul><ul><ul><ul><ul><li>“ dahdi-tools” herramientas para configurar y diagnosticar las tarjetas de hardware. </li></ul></ul></ul></ul><ul><ul><ul><ul><li>ANTES modúlos y herramientas en ZAPTEL. </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Con tiene las aplicaciones dahdi_cfg y dahdi_tool para monitorear y configurar las placas. </li></ul></ul></ul></ul>
  89. 89. Descargando Asterisk <ul><li>Descargue los paquetes en /usr/src </li></ul><ul><ul><li>wget -c http://downloads.digium.com/pub/asterisk/asterisk-1.4-current.tar.gz </li></ul></ul><ul><ul><li>wget -c http://downloads.digium.com/pub/asterisk/asterisk-addons-1.4-current.tar.gz </li></ul></ul><ul><ul><li>wget -c http://downloads.digium.com/pub/telephony/dahdi-tools/dahdi-tools-current.tar.gz </li></ul></ul><ul><ul><li>wget -c http://downloads.digium.com/pub/telephony/dahdi-linux/dahdi-linux-current.tar.gz </li></ul></ul><ul><ul><li>wget -c http://downloads.digium.com/pub/libpri/libpri-1.4-current.tar.gz </li></ul></ul>
  90. 90. Descripción de comandos de Instalación <ul><li>Siguiendo el LSB (Linux Standard Base) Asterisk deberá ser descomprimido en /usr/src/ </li></ul><ul><ul><ul><ul><ul><li>tar -xvzf asterisk-1.4-current.tar.gz </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>tar -xvzf asterisk-addons-1.4-current.tar.gz </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>Descomprima los otros paquetes también!! </li></ul></ul></ul></ul></ul><ul><li>Para configurar el entorno, busqueda del compilador y las librerías que deben estar instaladas para realizar la compilación. </li></ul><ul><ul><ul><ul><li>Toda referencia externa debió ser instalada mediante paquetería. </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Especialmente las librerías de ncurses se usan en el proceso de compilación. </li></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>./configure </li></ul></ul></ul></ul></ul><ul><li>Para configurar las opciones de Asterisk a nuestro gusto se usará: </li></ul><ul><ul><ul><ul><ul><li>make menuselect </li></ul></ul></ul></ul></ul>
  91. 91. Descripcion de comandos de Instalación <ul><li>Compilará y en uso de ncurses creará una interfaz de selección de opciones. </li></ul><ul><li>Para compilar las fuentes completas de Asterisk: </li></ul><ul><ul><ul><ul><ul><li>make </li></ul></ul></ul></ul></ul><ul><li>Y para instalarlo: </li></ul><ul><ul><ul><ul><ul><li>make install </li></ul></ul></ul></ul></ul><ul><li>Recomendable para ver los ejemplos: </li></ul><ul><ul><ul><ul><ul><li>make samples </li></ul></ul></ul></ul></ul><ul><li>Asterisk es modular, los modulos estan agrupados por categorías referentes a su funcionalidad. </li></ul><ul><li>Existen entre otros: codecs, formatos, canales, aplicaciones, etc. </li></ul><ul><li>Los archivos de configuración estan en: /etc/asterisk </li></ul><ul><li>Todo modulo tiene su: modulo.conf </li></ul>
  92. 92. Instalando Asterisk (ver comentarios) /USR/SRC <ul><ul><li>cd ../asterisk-1.4.22 </li></ul></ul><ul><ul><li>make clean </li></ul></ul><ul><ul><li>./configure </li></ul></ul><ul><ul><li>make menuconfig (opt) ‏ </li></ul></ul><ul><ul><li>make install </li></ul></ul><ul><ul><li>make samples </li></ul></ul><ul><ul><li>make config </li></ul></ul><ul><ul><li>cd ../asterisk-addons-1.4.7 </li></ul></ul><ul><ul><li>make clean </li></ul></ul><ul><ul><li>./configure </li></ul></ul><ul><ul><li>make menuselect (opt) ‏ </li></ul></ul><ul><ul><li>make install </li></ul></ul><ul><ul><li>make samples </li></ul></ul><ul><ul><li>cd dahdi-linux-current </li></ul></ul><ul><ul><li>make </li></ul></ul><ul><ul><li>make install </li></ul></ul><ul><ul><li>cd dahdi-tools-current </li></ul></ul><ul><ul><li>./configure </li></ul></ul><ul><ul><li>make </li></ul></ul><ul><ul><li>make install </li></ul></ul><ul><ul><li>make config </li></ul></ul><ul><ul><li>cd ../libpri-1.4.7 (opt) ‏ </li></ul></ul><ul><ul><li>make </li></ul></ul><ul><ul><li>make install </li></ul></ul>
  93. 93. DAHDI la instalación <ul><li>Luego de la instalación DAHDI ha creado modulos del kernel y ha cargado aplicaciones (módulos). </li></ul><ul><li>Liste los Módulos buscando unicamente aquellos relacionados con dahdi!! </li></ul><ul><li>Verifique que esten cargados los modulos para timing, configuracion, monitoreo, configuración en el sistema. </li></ul><ul><li>Es util antes de compilar DAHDI realizar una limpieza de cualquier instalación previa: </li></ul><ul><ul><ul><ul><ul><li>make distclean </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>make clean </li></ul></ul></ul></ul></ul>
  94. 94. Como quedó la Instalación? <ul><li>Binario Asterisk: </li></ul><ul><ul><ul><ul><ul><li>ls /usr/sbin/asterisk </li></ul></ul></ul></ul></ul><ul><li>Módulos de Asterisk: </li></ul><ul><ul><ul><ul><ul><li>ls /usr/lib/asterisk/modules </li></ul></ul></ul></ul></ul><ul><li>Voces pregrabadas: </li></ul><ul><ul><ul><ul><ul><li>ls /var/lib/asterisk/sounds </li></ul></ul></ul></ul></ul><ul><li>Voces pregrabadas en castellano: </li></ul><ul><ul><ul><ul><ul><li>ls /var/lib/asterisk/sounds/es </li></ul></ul></ul></ul></ul><ul><li>Archivos de configuración de ejemplo: </li></ul><ul><ul><ul><ul><ul><li>ls /etc/asterisk/ *.conf </li></ul></ul></ul></ul></ul><ul><li>Verifique que pueda iniciar asterisk como un servicio linux. </li></ul><ul><li>Verifique el status del servicio asterisk . </li></ul>
  95. 95. Directorios de Asterisk <ul><li>/usr/lib/asterisk/modules Directorio donde se encuentran los modulos compilados en extension .so. </li></ul><ul><li>/usr/share/asterisk Directorio donde se guardan las claves RSA, los archivos para reproducir de musica en espera , los script AGI. en una instalacion desde paquetera para distribuciones Debian y Ubuntu. </li></ul><ul><li>/var/lib/asterisk Directorio donde se guardan las claves, la musica en espera y los sonidos del sistema en una instalacion desde las fuentes. </li></ul><ul><li>/var/spool/asterisk Directorio donde se guardan las conferencias salvadas por MeetMe(), los textos que son leidos por Dictate() y los mensajes de voz si no utilizamos una BD. </li></ul><ul><li>/var/run/asterisk Donde se encuentra el archivo PID3 del Asterisk que se esta ejecutando. </li></ul><ul><li>/var/log/asterisk Los logs y noticaciones realizado mediante por ejemplo la aplicación Verbose() o NoOp() se encuentran aqu, aunque tambien son dirigidos al demonio syslog. </li></ul>
  96. 96. Configuración Inicial de Asterisk
  97. 97. Asterisk CLI <ul><li>Ejecute el comando: asterisk !! </li></ul><ul><li>Conectese a la CLI de Asterisk: </li></ul><ul><ul><ul><ul><li>asterisk –r </li></ul></ul></ul></ul><ul><li>Algun mensaje importante al inicio de Asterisk? </li></ul><ul><li>Ejecute las siguientes instrucciones: </li></ul><ul><ul><ul><ul><li>core show version </li></ul></ul></ul></ul><ul><ul><ul><ul><li>core show uptime </li></ul></ul></ul></ul><ul><ul><ul><ul><li>quit </li></ul></ul></ul></ul><ul><li>Que realizan esos comandos? </li></ul>
  98. 98. Asterisk conceptos de la configuración <ul><li>Canal (Channel – Chan) </li></ul><ul><ul><ul><li>Es una conexión que conduce una llamada entrante o saliente en el sistema Asterisk. La conexión puede venir de o salir hacia telefonía tradicional analógica, digital o VoIP. </li></ul></ul></ul><ul><ul><ul><li>Por defecto, Asterisk soporta una serie de canales, los más importantes son: </li></ul></ul></ul><ul><ul><ul><ul><li>H.323, IAX2, SIP, MGCP: Protocolos VoIP. </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Console: GNU Linux OSS/ALSA sound system. </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Zap/ Dahdi: líneas analógicas y digitales. </li></ul></ul></ul></ul>
  99. 99. Dialplan <ul><li>El plan del marcado es el corazon de una central telefonica y la parte principal de asterisk. </li></ul><ul><li>Indica como la PBX responde a llamadas entrantes y salientes. </li></ul><ul><li>En Asterisk el plan del marcado es totalmente configurable, a diferencia de las centrales privativas. </li></ul><ul><li>Dentro del plan de marcado de Asterisk encontramos principalmente: </li></ul><ul><ul><ul><li>Extensiones </li></ul></ul></ul><ul><ul><ul><li>Aplicaciones </li></ul></ul></ul><ul><ul><ul><li>Contextos </li></ul></ul></ul>
  100. 100. Extension <ul><li>Extension o exten encierra un concepto diferente a lo que normalmente pensamos. </li></ul><ul><li>Que tienen en mente por una extensión? </li></ul><ul><li>Cada extensión se compone de: </li></ul><ul><ul><li>Nombre, prioridad y aplicación. </li></ul></ul><ul><li>Nombre: agrupa una lista de acciones o pasos. </li></ul><ul><li>Prioridad: define el orden. </li></ul><ul><li>Aplicación: define la ejecución. </li></ul><ul><li>Con la descripción anterior defina nuevamente una extensión en Asterisk. </li></ul>
  101. 101. Aplicación <ul><li>Asterisk ejecuta secuencialmente los comandos asociados a cada extensión. Esos comandos son realmente aplicaciones que controlan el comportamiento de la llamada y del sistema en sí. Algunos ejemplos: </li></ul><ul><ul><li>Hangup: colgar la llamada. </li></ul></ul><ul><ul><li>Monitor: comenzar la grabación a disco de la llamada. </li></ul></ul><ul><ul><li>Dial: realizar una llamada saliente. </li></ul></ul><ul><ul><li>Goto: saltar a otra extensión o contexto. </li></ul></ul><ul><ul><li>PlayBack: reproducir un fichero de sonido. </li></ul></ul><ul><ul><li>AGI: llamar a una aplicación externa (stdin, stdout, stderr). </li></ul></ul>
  102. 102. Contexto <ul><li>El dialplan de Asterisk se divide en uno o varios contextos. </li></ul><ul><li>Un contexto es una colección de extensiones. </li></ul><ul><li>Permite la interacción entre las diferentes partes del dialplan. </li></ul><ul><li>Los contextos existen para poder diferenciar el “lugar” en donde se encuentra una llamada, para: </li></ul><ul><ul><li>Aplicar políticas de seguridad : por ej, al entrar una llamada, con 0 va a la operadora, mientras que cuando un usuario local marca 0 y un número hace una llamada saliente (fuera de la PBX). </li></ul></ul><ul><li>Se declaran colocando el nombre del contexto dentro de los símbolos [ ]. </li></ul><ul><li>ej: [entrantes] </li></ul>
  103. 103. Dialplan: Arquitectura
  104. 104. Primeros pasos sip.conf <ul><li>Accese a la carpeta /etc/asterisk </li></ul><ul><li>Que se encuentra en esa carpeta? </li></ul><ul><li>Accese al archivo sip.conf </li></ul><ul><ul><ul><ul><li>[jose] ; Nombre del usuario </li></ul></ul></ul></ul><ul><ul><ul><ul><li>type=friend ; Permite generar y recibir llamados </li></ul></ul></ul></ul><ul><ul><ul><ul><li>secret=1234 ; Clave de jose </li></ul></ul></ul></ul><ul><ul><ul><ul><li>host=dynamic ; El teléfono puede tener una ip dinámica </li></ul></ul></ul></ul><ul><ul><ul><ul><li>context=internos; El contexto asocia el usuario al plan de numeración </li></ul></ul></ul></ul>
  105. 105. Generando una llamada <ul><ul><ul><li>Realice la instalacion de x-lite descargue el tar.gz. </li></ul></ul></ul><ul><ul><ul><li>Cambie el modo para ejecucion </li></ul></ul></ul><ul><ul><ul><li>Ejecute el software X-Lite </li></ul></ul></ul><ul><ul><ul><li>Verificar la configuracion de una cuenta SIP en X-Lite </li></ul></ul></ul><ul><ul><ul><li>Verifique que tenga tono de marcado, si es necesario busque la instalacion Windows. </li></ul></ul></ul><ul><ul><ul><li>Origine una llamada desde el CLI: </li></ul></ul></ul><ul><ul><ul><ul><ul><li>originate sip/canal application echo </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>Conteste el telefono!! </li></ul></ul></ul></ul></ul>
  106. 106. Primeros pasos: Los archivos de Canales <ul><li>Archivos de configuración de canales: </li></ul><ul><ul><li>iax.conf : canales IAX (Inter Asterisk eXchange). </li></ul></ul><ul><ul><li>sip.conf : canales SIP. </li></ul></ul><ul><ul><li>zaptel.conf /system.conf : telefonía analógica y digital. </li></ul></ul><ul><ul><li>h323.conf : canales H323. </li></ul></ul><ul><ul><li>mgcp.conf : canales MGCP. </li></ul></ul><ul><ul><li>unicall.conf : canales R2 </li></ul></ul>
  107. 107. Carga de Configuraciones <ul><li>La configuración se carga al iniciar Asterisk, por lo que para aplicar cualquier cambio será necesario recargarla. Para ello basta con ejecutar el comando reload en el CLI: </li></ul><ul><li>CLI> reload </li></ul><ul><li>Dialplan: </li></ul><ul><ul><li>extensions.conf : el propio Dialplan. </li></ul></ul><ul><ul><li>features.conf : dialplan para métodos. complementarios (transferencias, call parking, grabación de llamadas bajo demanda, etc.). </li></ul></ul><ul><li>Configuración de aplicaciones del dialplan: </li></ul><ul><ul><li>meetme.conf : para salas de conferencias. </li></ul></ul><ul><ul><li>musiconhold.conf : config. de la música en espera. </li></ul></ul><ul><ul><li>queues.conf : configuración de colas de llamadas. </li></ul></ul><ul><ul><li>voicemail.conf : configuración de los buzones de voz. </li></ul></ul>
  108. 108. SIP.conf <ul><li>En primer lugar existe la sección [general], donde se definen variables globales y aspectos por defecto para todos los canales SIP. </li></ul><ul><ul><li>La sintaxis es la siguiente: </li></ul></ul><ul><ul><li>[general] </li></ul></ul><ul><ul><li>variable1=valor1 </li></ul></ul><ul><ul><li>variable2=valor2 </li></ul></ul><ul><ul><li>.... </li></ul></ul><ul><ul><li>register => usuario : password @ servidorregistrar </li></ul></ul><ul><ul><li>register => .... </li></ul></ul>
  109. 109. SIP.conf Registrar <ul><li>Register permite a Asterisk registrar su presencia en el otro extremo. De esta forma, el proveedor sabrá la localización del cliente. En ningún caso es suficiente para poder hacer llamadas. </li></ul><ul><li>El comando Register sólo es necesario si : </li></ul><ul><ul><li>Se necesita ser llamado (lo cuál implica ser localizado). </li></ul></ul><ul><ul><li>Se aparece en el otro extremo con una configuración de IP dinámica. </li></ul></ul><ul><ul><li>Los requerimientos registrar se manejan periodicamente!! </li></ul></ul>
  110. 110. SIP.conf seccion General <ul><li>Las variables generales más importantes son: </li></ul><ul><li>allow y disallow : indican los codecs permitidos / no permitidos. </li></ul><ul><li>dtmfmode : especifica el método por el cual se enviarán los tonos (dígitos pulsados durante la conversación); inband/rfc2833/info </li></ul><ul><li>nat : informa a Asterisk el tipo de NAT en el que se encuentra; yes/no/never/route </li></ul><ul><li>externip : dirección pública si esta atrás de un NAT. </li></ul><ul><li>context : contexto por defecto donde entrarán las llamadas entrantes por SIP. </li></ul><ul><li>port : puerto en el que escuchar (5060 ). </li></ul>
  111. 111. SIP.conf <ul><li>user : envía llamadas a Asterisk. </li></ul><ul><li>peer : recibe llamadas de Asterisk. </li></ul><ul><li>friend : recibe y envía llamadas. </li></ul><ul><li>La sintaxis para definir un type es: </li></ul><ul><ul><li>[nombre] ; contexto </li></ul></ul><ul><ul><li>type = friend / peer / user </li></ul></ul><ul><ul><li>variable1 = valor </li></ul></ul><ul><ul><li>variable2 = valor </li></ul></ul>
  112. 112. SIP.conf Variables de canales <ul><li>type : peer / friend </li></ul><ul><li>context : contexto donde entrarán las llamadas generadas. </li></ul><ul><li>nat : indica si el usuario o peer se encuentra tras un NAT. </li></ul><ul><li>host : IP remota o dynamic (en el caso en que la IP no sea fija). </li></ul><ul><li>username : nombre de usuario. </li></ul><ul><li>secret : contraseña de acceso en texto plano. </li></ul><ul><li>allow y disallow : configuraciones de codecs específicas para cada peer / friend. </li></ul><ul><li>qualify : evalúa el estado del extremo SIP para conocer su accesibilidad y latencia (tener cuidado si el otro extremo no esta configurado para responder). </li></ul><ul><li>canreinvite : permite que el tráfico de voz pase por el asterisk o bien directamente entre las partes. </li></ul>
  113. 113. SIP.conf Ejemplo [pepe] ; usuario type=friend ; IN/OUT secret=pepin ; clave context=internos ; rela dial plan callerid=&quot;pepe perez&quot; <1001> host=dynamic ; IP del device nat=yes ; soporte NAT device canreinvite=no ;disallow=all ;allow=gsm ;allow=ulaw ;allow=alaw mailbox=1001@default [juan] type=friend secret=juanin callerid=&quot;juan perez&quot; <1002> context=internos host=dynamic nat=yes canreinvite=no ;disallow=all ;allow=gsm ;allow=ulaw ;allow=alaw mailbox=1002@default
  114. 114. SIP.conf Verificacion en el CLI <ul><li>Mediante el comando “ reload ” en el CLI de Asterisk, se indica que recargue la configuración. Aunque es posible recargar de forma independiente sólo la conf. SIP: </li></ul><ul><ul><li>CLI> sip reload </li></ul></ul><ul><li>Una vez recargada, puede comprobarse los “users” que se han definido con el comando: sip show users </li></ul><ul><li>Para ver los “peers” definidos: sip show peers </li></ul><ul><li>Puede consultarse si Asterisk se ha “registrado” correctamente en los registars configurados en la sección general con el comando: sip show registry </li></ul><ul><li>Pueden verse los canales sip activos (comunicaciones activas), vía el comando: sip show channels </li></ul>
  115. 115. IAX.conf <ul><li>En el archivo IAX.CONF se definen todos los enlaces que se establecerán usando el protocolo IAX tiene la misma estructura que el SIP.CONF: una sección general y otras por canales. </li></ul><ul><ul><li>[juan] </li></ul></ul><ul><ul><li>type=friend </li></ul></ul><ul><ul><li>secret=miclave </li></ul></ul><ul><ul><li>qualify=yes </li></ul></ul><ul><ul><li>port=4569 </li></ul></ul><ul><ul><li>transfer=no </li></ul></ul><ul><ul><li>host=dynamic </li></ul></ul><ul><ul><li>context=interno </li></ul></ul><ul><ul><li>callerid=device <1234> </li></ul></ul><ul><li>El valor “ transfer=no ” es el equivalente a “canreinvite=no” del sip.conf, hace que el servidor Asterisk quede situado en medio de la comunicación entre clientes. </li></ul>
  116. 116. IAX.conf <ul><li>El protocolo IAX permite el trunking de llamadas, es decir, que múltiples streams de voz compartan un único “trunk” con otro servidor, reduciendo el overhead creado por los paquetes IP. </li></ul><ul><li>Luego de 4 llamadas concurrentes comienza a haber ganancia de ancho de banda. </li></ul><ul><li>Para pasar un canal IAX a modo trunk, incluir en la definición del archivo iax.conf: </li></ul><ul><li>trunk=yes </li></ul>
  117. 117. Definiciones con Plantillas <ul><li>Para definiciones estáticas de usuarios con características comunes como en grupos de trabajo o tipos de usuarios se puede utilizar plantillas: </li></ul>
  118. 118. Detalles del Extensions.conf <ul><li>El archivo extensions.conf es la parte central de toda la configuración, dado que es donde se define el dialplan de Asterisk. </li></ul><ul><li>Se compone de 4 partes principales: contextos, extensiones, prioridades y aplicaciones . </li></ul><ul><li>El dialplan se divide en secciones denominadas contextos , que están rotuladas y contienen un grupo de extensiones. </li></ul><ul><li>Los contextos se definen colocando su nombre entre corchetes ([]). Este nombre puede contener caracteres alfanuméricos además del guión y el guión bajo. Por ej: </li></ul><ul><ul><li>[interno] </li></ul></ul><ul><li>Todas las instrucciones son parte del contexto hasta que el próximo contexto es definido. </li></ul>
  119. 119. Detalles del Extensions.conf <ul><li>Existen dos contextos especiales: [general] (variables predefinidas) y [globals ] (variables no predefinidas). </li></ul><ul><li>Una extensión es una instrucción que será seguida por Asterisk, luego de ser disparada por una llamada entrante o bien por dígitos discados en un canal, definida en el marco de un contexto. </li></ul><ul><li>La sintaxis de una extensión es la siguiente: </li></ul><ul><ul><li>exten => nombre,prioridad,aplicacion() </li></ul></ul><ul><li>Ejemplo: </li></ul><ul><li>exten => 123,1,Answer() </li></ul><ul><li>Extensión s (start): es una extensión especial que es utilizada si una llamada entra a un contexto sin una extensión destino específica (por ejemplo una llamada en un puerto FXO); la llamada trata de entrar automáticamente a la extensión s . </li></ul><ul><li>exten => s,1,Answer() </li></ul>
  120. 120. Detalles del Extensions.conf Prioridades <ul><li>Una extensión puede tener varios pasos, denominados prioridades . </li></ul><ul><li>Las prioridades comienzan con 1 y se ejecutan en orden numérico. </li></ul><ul><li>Si no existe la prioridad N + 1, Asterisk no salta a la siguiente prioridad (N+2). </li></ul><ul><li>Cada prioridad ejecuta una única aplicación. </li></ul><ul><li>Ejemplo: </li></ul><ul><ul><li>exten => 123,1,Answer() </li></ul></ul><ul><ul><li>exten => 123,2,Hangup() </li></ul></ul>
  121. 121. Prioridades en Extensions.conf <ul><li>Prioridades sin numerar : Asterisk introduce el uso de la prioridad n (next). Cada vez que Asterisk encuentra una prioridad n, toma el número de la prioridad anterior y le suma 1. </li></ul><ul><li>Simplifica el proceso de escritura del dialplan, evitando tener que volver a numerar las prioridades al insertar una prioridad para la misma exten . </li></ul><ul><li>Ejemplo: </li></ul><ul><li>exten => 123,1,Answer() </li></ul><ul><li>exten => 123,n,hago algo </li></ul><ul><li>exten => 123,n,Hangup() </li></ul><ul><li>exten => 555, 1 ,Answer() </li></ul><ul><li>exten => 555, n(LlamaPepe) ,Dial(SIP/pepe,20) </li></ul><ul><li>exten => 555, n ,Voicemail(44) </li></ul><ul><li>exten => 555, n ,Hangup </li></ul>
  122. 122. Prioridades en Extensions.conf <ul><li>;Va a n+101 en caso de que el canal esté ocupado: </li></ul><ul><li>exten => 555, LlamaPepe+101 ,Voicemail(44,u) </li></ul><ul><li>; Tambi é n puede tener una etiqueta esta prioridad : </li></ul><ul><li>exten => 555, LlamaPepe+101(PepeNoDisponible) , </li></ul><ul><li>exten => _044., 1 ,Answer </li></ul><ul><li>exten => _044., n(Director) ,GotoIf($[${CALLERID(num)} =pepe]?LlamaCelular:) </li></ul><ul><li>exten => _044., n ,Set(TIMEOUT(absolute)=300) </li></ul><ul><li>exten => _044.,n( LlamaCelular ),Dial( Zap/1 Dahdi/1/${EXTEN}) </li></ul><ul><li>exten =>  _044., n ,Hangup </li></ul>
  123. 123. Detalles del Extensions.conf <ul><li>Las aplicaciones realizan una acción determinada en el canal actual, controlando el comportamiento de la llamada y del sistema en sí. </li></ul><ul><li>Algunos ejemplos: </li></ul><ul><ul><li>A nswer(): contesta una llamada. </li></ul></ul><ul><ul><li>Hangup(): cuelga una llamada. </li></ul></ul><ul><ul><li>Dial(): realiza una llamada saliente. </li></ul></ul><ul><ul><li>Playback(): reproduce un archivo de sonido. </li></ul></ul><ul><li>Ciertas aplicaciones requieren del pasaje de parámetros, estos se incluyen dentro de los paréntesis, separados por “,”. </li></ul>
  124. 124. extensions.conf <ul><li>En el archivo extensions.conf se configura el plan de marcado (dialplan) de la central telefónica. </li></ul><ul><li>El dialplan consistirá en una serie de contextos que contendrán extensiones y que tendrán diferentes prioridades. </li></ul><ul><li>Una extensión VOIP Asterisk no es lo mismo que una extensión telefonica tradicional. </li></ul><ul><li>El archivo tiene dos contextos generales uno el contexto general y el contexto globals. </li></ul>
  125. 125. Sintaxis en extensions.conf <ul><li>Sintaxis General de un contexto en extensions.conf </li></ul><ul><li>Ejemplo: “Hola Mundo” en el archivo extensions.conf </li></ul>
  126. 126. <ul><li>La lección sobre Telefonía sera esta semana (Miercoles o Viernes), tendra alrededor de 30 preguntas TEORICAS. </li></ul><ul><li>Hemos aprendido: </li></ul><ul><ul><ul><ul><li>Google puede solucionar problemas, buscarlos. </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Descargar, Compilar e Instalar Asterisk. </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Manejar el sip.conf para crear UA/Canales simples. </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Manejar comandos simples de la CLI para verificar el comportamiento de Asterisk. </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Crear extensiones simples. </li></ul></ul></ul></ul><ul><li>Han tenido algunos problemas, Cuales? </li></ul><ul><li>Tenemos 10 teléfonos Grandstream por lo que deben trabajar en grupos, familiarícese con los teléfonos, conectelos, estan en una VLAN para el curso. </li></ul>
  127. 127. Contextos y Extensiones <ul><li>Cada extensión SIP o llamada entrante de la PSTN tendrá asociado un contexto. </li></ul><ul><li>Para acceder a variables dentro del script del extensions.conf se usa: </li></ul><ul><ul><ul><ul><ul><li>${ } </li></ul></ul></ul></ul></ul><ul><li>Marcar una extensión significa acceder a una sección de código, y, de acuerdo a una prioridad establecida ejecutar una aplicación. </li></ul><ul><li>Las prioridades definen que aplicaciones se marcan primero. </li></ul><ul><li>El “orden fisico” del archivo extensions.conf no es relevante, para eso estan las prioridades, excepto en prioridad “n”. </li></ul><ul><li>${EXTEN} es una variable de Asterisk que contiene el numero de extensión que fue marcado. </li></ul>
  128. 128. Manejo de Variables en extensions.conf <ul><li>Para el acceso a una variable: </li></ul><ul><ul><ul><ul><ul><li>${VARIABLE} </li></ul></ul></ul></ul></ul><ul><li>Para asignar un valor a una variable: </li></ul><ul><ul><ul><ul><ul><li>Set() </li></ul></ul></ul></ul></ul><ul><li>Los nombres de variables NO son case sensitive. </li></ul><ul><li>Para el uso de operadores (aritmeticos, lógicos) se usa: </li></ul><ul><ul><ul><ul><ul><li>$[OPERACION] </li></ul></ul></ul></ul></ul><ul><li>Ejemplo de extensión como función: </li></ul>
  129. 129. Practica <ul><li>Configuración de extensiones para el laboratorio. </li></ul>
  130. 130. Conceptos básicos del plan de marcado
  131. 131. Las voces de Asterisk <ul><li>Ahora definiremos pasos para llamadas entrantes: </li></ul><ul><ul><li>Contestar la llamada. </li></ul></ul><ul><ul><li>Reproducir un archivo. </li></ul></ul><ul><ul><li>Colgar la llamada. </li></ul></ul><ul><li>Aplicaciones: Answer(), Playback() y Hangup() </li></ul><ul><ul><li>Answer() constesta un canal al que está entrando una llamada. No toma ningún argumento, es una practica recomendable colocarlo a pesar de no ser estrictamente necesario </li></ul></ul>
  132. 132. Las voces de Asterisk <ul><ul><li>Playback() reproduce un archivo previamente grabado. Recibe como parámetro el nombre del archivo sin extensión, el archivo debe estar en /var/lib/asterisk/sounds </li></ul></ul><ul><ul><li>Hangup() cuelga el canal actual. </li></ul></ul><ul><ul><li>Ingrese a ese directorio, liste los sonidos y pruebelos!! </li></ul></ul><ul><ul><ul><ul><ul><li>[interno] </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>exten => 100,1,Answer( ) </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>exten => 100,2,Playback(hello-world) </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>exten => 100,3,Hangup( ) </li></ul></ul></ul></ul></ul>
  133. 133. Ejemplo de Configuración de una Linea <ul><ul><ul><ul><li>[300] </li></ul></ul></ul></ul><ul><ul><ul><ul><li>type=friend </li></ul></ul></ul></ul><ul><ul><ul><ul><li>host=dynamic </li></ul></ul></ul></ul><ul><ul><ul><ul><li>secret=003 </li></ul></ul></ul></ul><ul><ul><ul><ul><li>disallow=all </li></ul></ul></ul></ul><ul><ul><ul><ul><li>allow=alaw </li></ul></ul></ul></ul><ul><ul><ul><ul><li>callerid=“Jose Cordova”<300> </li></ul></ul></ul></ul><ul><li>Alguien puede explicar cada línea de código anterior? </li></ul><ul><li>Prueben rápidamente el Caller ID con una cuenta, trabajen EN GRUPO recuerden una sola central por pareja. </li></ul>
  134. 134. CODECS de Alta Calidad y Bajo Ancho de Banda <ul><li>Codecs de Alta Calidad </li></ul><ul><li>disallow=all </li></ul><ul><li>allow=ulaw </li></ul><ul><li>allow=alaw </li></ul><ul><li>allow=h264 </li></ul><ul><li>Codecs de Bajo Ancho de Banda </li></ul><ul><li>disallow=all </li></ul><ul><li>allow=g729 </li></ul><ul><li>allow=gsm </li></ul><ul><li>allow=ilbc </li></ul><ul><li>allow=speex </li></ul><ul><li>allow=h263 </li></ul>
  135. 135. Básicos de otras aplicaciones <ul><li>Background(). Similar a playback, pero si el usuario presiona dígitos, la aplicación lo captura y trata de enviarlo a la extensión presionada. </li></ul><ul><li>exten => 123,1,Background(hello-world) </li></ul><ul><li>Goto(). Nos permite mandar una llamada a otro contexto, extensión y prioridad: </li></ul><ul><li>exten => 123,1,Goto(contexto,extension,prioridad) </li></ul>
  136. 136. Dialplan interactivo <ul><li>La persona que llama puede ingresar informacion presionando las teclas del telefono. </li></ul><ul><li>Los tonos que se escuchan cuando presionan las teclas se denominan DTMF. </li></ul><ul><li>Asterisk tomara dichos tonos e interpretara de acuerdo a la extension que brinde la mayor coincidencia de patron. </li></ul><ul><li>Background() acepta tonos DTMF, al momento de la entrada DTMF se detiene la ejecucion del archivo de sonido. </li></ul><ul><li>Asterisk encamina la llamada si encuentra una coincidencia NO ambigua (probar como funciona esto). </li></ul>
  137. 137. IVR Básico <ul><li>[interno] </li></ul><ul><li>exten => 101,1,Answer( ) ; contesta la llamada </li></ul><ul><li>exten => 101,2,Background(enter-ext-of-person) ; espera digitos y pasa a la extension en el mismo contexto </li></ul><ul><li>exten => 1,1,Playback(digits/1) ; reproduce el dígito 1 </li></ul><ul><li>exten => 2,1, Playback(digits/2) ; reproduce el dígito 2 </li></ul><ul><li>Verifique el uso de estas funciones! </li></ul><ul><li>Que pasa luego de que reproduce el numero de la extension interna?? </li></ul>
  138. 138. IVR Basico <ul><li>[interno] </li></ul><ul><li>exten => 4000,1,Answer( ) </li></ul><ul><li>exten => 4000,2,Background(enter-ext-of-person) </li></ul><ul><li>exten => 1,1,Playback(digits/1) </li></ul><ul><li>exten => 1,2,Goto(4000,1) ; vuelve al inicio de la extension 4000 </li></ul><ul><li>exten => 2,1, Playback(digits/2) </li></ul><ul><li>exten => 2,2,Goto(4000,1) </li></ul><ul><li>Verifique el uso de este contexto!! </li></ul>
  139. 139. La extension i y los timeouts <ul><li>Cuando el usuario teclea una entrada inválida, la llamada es enviada a la extensión i . </li></ul><ul><li>Cuando el usuario no teclea ninguna opción, es necesario tener una extensión que nos permita manejar esta situación. Por defecto, si no se teclea nada después de 10 segundos de haberse terminado de reproducir el archivo la llamada es enviada a la extensión t . Si se teclea un digito, espera 5 segundos hasta el siguiente, o numeral (#) para terminar de tipear numeros. </li></ul><ul><li>La funcion Background espera a 2 eventos de timeout que pueden ocurrir: </li></ul><ul><ul><ul><ul><li>Timeout de digitos </li></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>Cuanto tiempo espero entre los digitos en segundos. </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><li>Timeout de respuesta </li></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>Cuanto tiempo se espera despues de reproducir el sonido sin respuesta en segundos. </li></ul></ul></ul></ul></ul><ul><li>Verifique el ejemplo completo siguiente!! </li></ul>
  140. 140. Uso de las extensiones i y t <ul><li>[interno] </li></ul><ul><li>exten => 4000,1,Answer( ) </li></ul><ul><li>exten => 4000,2,Background(enter-ext-of-person) </li></ul><ul><li>exten => 1,1,Playback(digits/1) </li></ul><ul><li>exten => 1,2,Goto(4000,1) </li></ul><ul><li>exten => 2,1, Playback(digits/2) </li></ul><ul><li>exten => 2,2,Goto(4000,1) </li></ul><ul><li>exten => i,1,Playback(pbx-invalid) ; llega en caso de digito invalido </li></ul><ul><li>exten => i,2,Goto(4000,1) </li></ul><ul><li>exten => t,1,Playback(vm-goodbye) ; llega en caso de no recibir digitos luego de un tiempo (10 seg) </li></ul><ul><li>exten => t,2,Hangup() </li></ul>
  141. 141. Saltos y Bucles <ul><li>Con la aplicación GOTO se puede saltar de un lugar a otro dentro del dialplan. </li></ul><ul><li>La aplicación GOTO recibe: </li></ul><ul><ul><ul><ul><li>1 parametro : numero de prioridad y etiqueta (dentro de la misma extension). </li></ul></ul></ul></ul><ul><ul><ul><ul><li>2 parametros : extension y prioridad (dentro del mismo contexto). </li></ul></ul></ul></ul><ul><ul><ul><ul><li>3 parametros : Contexto, extensión y prioridad (en cualquier lugar del dial plan). </li></ul></ul></ul></ul>
  142. 142. Uso de GOTO <ul><li>Pruebe el uso de la aplicación GOTO y el paso de parametros con: </li></ul><ul><ul><ul><ul><li>[pruebas] </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Exten => 125,1,Playback(tt-monkeys) </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Exten => 125,2,Goto(1) </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Exten => 126,1,Playback(hello-world) </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Exten => 126,2,Goto(126,1) </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Exten => 127,1,Playback(tt-weasels) </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Exten => 127,2,Goto(pruebas,127,1) </li></ul></ul></ul></ul>
  143. 143. Incluyendo el uso de Etiquetas <ul><li>Pruebe la siguiente extension: </li></ul><ul><ul><ul><ul><li>exten => 128,1,Answer() </li></ul></ul></ul></ul><ul><ul><ul><ul><li>exten => 128,n,Wait(0.5) </li></ul></ul></ul></ul><ul><ul><ul><ul><li>exten => 128,n(salir),Playback(thank-you-for-calling) </li></ul></ul></ul></ul><ul><ul><ul><ul><li>exten => 128,n,Goto(salir) </li></ul></ul></ul></ul>
  144. 144. La aplicación Dial <ul><li>Permite conectar 2 ó más canales. </li></ul><ul><li>Es especialmente útil cuando los dispositivo usan tecnologías diferentes(SIP,IAX,etc). </li></ul><ul><li>Puede tomar hasta 3 parámetros: </li></ul><ul><ul><li>El primero es el destino de la llamada en el formato tecnologia/canal (Sip/juan, Iax2/180, Zap/1 Dahdi/1) </li></ul></ul><ul><ul><li>exten => 4002,1,Dial(Sip/juan) </li></ul></ul><ul><ul><li>Se puede hacer que la llamada suene en varios canales a la vez </li></ul></ul><ul><ul><li>exten => 4002,1,Dial(Sip/juan& Zap/1 Dahdi/1&Iax/4010) </li></ul></ul>
  145. 145. La aplicación Dial <ul><li>El segundo argumento es el tiempo que se intentará llamar al destino. Si en ese tiempo no contestan, se pasa a la siguiente prioridad. Si no se especifica este parámetro, la llamada continúa marcando el canal, hasta que el canal es contestado o hasta que el emisor de la llamada cuelga. </li></ul><ul><ul><li>exten => 102,1,Dial(Sip/juan,10) </li></ul></ul><ul><ul><li>Si el usuario donde está sonando la llamada contesta antes de 10 segundos, se conectan ambos dispositivo y el dialplan termina. </li></ul></ul><ul><ul><li>Si el usuario no contesta se continúa en la siguiente prioridad . </li></ul></ul><ul><ul><li>Si el canal al que se quiere comunicar está ocupado , Dial() salta a la prioridad n+101 , si es que existe. </li></ul></ul>
  146. 146. Usando Dial <ul><li>Compruebe el uso de Dial con el siguiente contexto </li></ul><ul><li>[interno] </li></ul><ul><li>exten => 4002,1,Dial(Sip/juan,10) </li></ul><ul><li>exten => 4002,n,Playback(vm-nobodyavail) ; no contesto </li></ul><ul><li>exten => 4002,n,Hangup() </li></ul><ul><li>exten => 4002,102,Playback(tt-allbusy) ; por ocupado </li></ul><ul><li>exten => 4002,n,Hangup() </li></ul>
  147. 147. Dial: Caracteristicas Adicionales <ul><li>El tercer parámetro es una cadena que puede estar compuesta por varios caracteres que brindan algunas características específicas al momento de hacer la llamada. Algunos ejemplos: </li></ul><ul><ul><li>T. Permite que quien llama pueda transferir la llamada con # </li></ul></ul><ul><ul><li>t. Permite que quien contesta pueda transferir la llamada con # </li></ul></ul><ul><ul><li>r. Genera un ring tone al que llama y espera a generar el canal de audio cuando conteste. </li></ul></ul><ul><ul><li>m. A diferencia de r, genera música en espera. </li></ul></ul><ul><ul><li>w. Permite al que llama grabar la comunicacion con *1 </li></ul></ul><ul><li>En CLI, ¨core show application dial¨, muestra todas las opciones de Dial() </li></ul>
  148. 148. Dial: Recapitulando <ul><li>[interno] </li></ul><ul><li>exten => 4000,1,Answer( ) </li></ul><ul><li>exten => 4000,2,Background(enter-ext-of-person) </li></ul><ul><li>exten => 4001,1,Dial(Sip/juan,10) </li></ul><ul><li>exten => 4001,2,Playback(vm-nobodyavail) </li></ul><ul><li>exten => 4001,3,Hangup() </li></ul><ul><li>exten => 4001,102,Playback(tt-allbusy) </li></ul><ul><li>exten => 4001,103,Hangup() </li></ul>
  149. 149. Dial: Recapitulando <ul><li>exten => 4002,1,Dial(Iax2/4010,10) </li></ul><ul><li>exten => 4002,2,Playback(vm-nobodyavail) </li></ul><ul><li>exten => 4002,3,Hangup() </li></ul><ul><li>exten => 4002,102,Playback(tt-allbusy) </li></ul><ul><li>exten => 4002,103,Hangup() </li></ul><ul><li>exten => i,1,Playback(pbx-invalid) </li></ul><ul><li>exten => i,2,Goto(4000,1) </li></ul><ul><li>exten => t,1,Playback(vm-goodbye) </li></ul><ul><li>exten => t,2,Hangup() </li></ul>
  150. 150. Conceptos avanzados del plan de marcado
  151. 151. Manejo de Variables <ul><li>En el dialplan de Asterisk existen variables, que pueden ser modificadas por el propio Asterisk en su ejecución lógica o por comandos expresos (aplicaciones) del dialplan. </li></ul><ul><li>Las variables reducen la escritura, agregan claridad al dialplan y le aportan lógica . </li></ul><ul><li>Los tipos de variables son: </li></ul><ul><ul><li>Globales: declaradas en extensions.conf (o por comando). </li></ul></ul><ul><ul><li>Canal: asociadas con un canal particular. </li></ul></ul><ul><ul><li>Entorno: variables de entorno (UNIX Like). </li></ul></ul><ul><li>La sintaxis de una variable es: </li></ul><ul><li>${variable} </li></ul>
  152. 152. Manejo de Variables <ul><li>Asignación de variables: </li></ul><ul><ul><li>Set(Variable=valor) </li></ul></ul><ul><ul><li>Global(Variable=valor) </li></ul></ul><ul><li>Manejo de cadenas: </li></ul><ul><ul><li>Subcadenas: ${Variable : offset : longitud } </li></ul></ul><ul><ul><ul><li>Devuelve la subcadena de variable que comienza en offset y con la longitud especificada. </li></ul></ul></ul><ul><ul><ul><li>Ejemplos: ${123456789:2:3} devuelve 345 </li></ul></ul></ul><ul><ul><li>Longitud: ${LEN(Variable)} </li></ul></ul><ul><ul><li>Concatenación: ${Variable1}${Variable2} </li></ul></ul>
  153. 153. Manejo de Variables Globales <ul><li>Permite que se pueda hacer referencia a ellas en todos los contextos, en todas las extensiones, a diferencia de las variables convencionales que sólo tienen validez en el canal actual. </li></ul><ul><li>Es útil para tener claridad manejabilidad en el dialplan. </li></ul><ul><li>Se pueden definir en el contexto [globals] al inicio de extensions.conf </li></ul><ul><ul><li>[globals] </li></ul></ul><ul><ul><li>JUAN=Sip/juan </li></ul></ul><ul><ul><li>PEDRO=Iax2/4010 </li></ul></ul>
  154. 154. Uso de Variables en el Dial Plan <ul><ul><li>[globals] </li></ul></ul><ul><ul><li>JUAN=Sip/juan ; define la variable JUAN </li></ul></ul><ul><ul><li>PEDRO=Iax2/4010 </li></ul></ul><ul><ul><li>[interno] </li></ul></ul><ul><ul><li>exten => 4000,1,Answer( ) </li></ul></ul><ul><ul><li>exten => 4000,2,Background(enter-ext-of-person) </li></ul></ul><ul><ul><li>exten => 4001,1,Dial(${JUAN},10) ; hace referencia a la variable JUAN </li></ul></ul><ul><ul><li>exten => 4001,2,Playback(vm-nobodyavail) </li></ul></ul><ul><ul><li>exten => 4001,3,Hangup() </li></ul></ul><ul><ul><li>exten => 4001,102,Playback(tt-allbusy) </li></ul></ul><ul><ul><li>exten => 4001,103,Hangup() </li></ul></ul>
  155. 155. Uso de Variables en el Dial Plan <ul><ul><li>exten => 4002,1,Dial(${PEDRO},10) </li></ul></ul><ul><ul><li>exten => 4002,2,Playback(vm-nobodyavail) </li></ul></ul><ul><ul><li>exten => 4002,3,Hangup() </li></ul></ul><ul><ul><li>exten => 4002,102,Playback(tt-allbusy) </li></ul></ul><ul><ul><li>exten => 4002,103,Hangup() </li></ul></ul><ul><ul><li>exten => i,1,Playback(pbx-invalid) </li></ul></ul><ul><ul><li>exten => i,2,Goto(4000,1) </li></ul></ul><ul><ul><li>exten => t,1,Playback(vm-goodbye) </li></ul></ul><ul><ul><li>exten => t,2,Hangup() </li></ul></ul>
  156. 156. Variables Predefinidas <ul><li>Listado de variables más importantes: </li></ul><ul><ul><li>${CALLERID}: caller ID actual, nombre y número. </li></ul></ul><ul><ul><li>${CONTEXT}: contexto actual. </li></ul></ul><ul><ul><li>${EXTEN}: extensión actual. </li></ul></ul><ul><ul><li>${CHANNEL}: canal actual. </li></ul></ul><ul><ul><li>${DIALSTATUS}: estado de la llamada: unavailable, congestion, busy, noanswer, answer, cancel, hangup. </li></ul></ul><ul><ul><li>${DATETIME}: hora actual. </li></ul></ul><ul><li>Un comando útil para ver el contenido es NoOp: </li></ul><ul><ul><li>NoOp ( ${VARIABLE} ) </li></ul></ul><ul><ul><ul><li>Mostrará en el CLI el valor. </li></ul></ul></ul>
  157. 157. Variable ${EXTEN} <ul><li>Permite saber cuál es la extensión que fue marcada. </li></ul><ul><li>Se utiliza comunmente para eliminar dígitos marcados: ${EXTEN:x} </li></ul><ul><ul><ul><li>Si x es positivo, quita los primeros x dígitos marcados </li></ul></ul></ul><ul><ul><ul><li>exten => _XXX,1,SayDigits(${EXTEN:1}) </li></ul></ul></ul><ul><ul><ul><li>Si x es negativo, devuelve los últimos x dígitos marcados </li></ul></ul></ul><ul><ul><ul><li>exten => _XXX,1,SayDigits(${EXTEN:-1}) </li></ul></ul></ul>
  158. 158. Coincidencia de Patrones <ul><li>Permite definir una sola extensión que permita lograr igualar una serie de posibles valores. </li></ul><ul><li>Pueden ser muy especificos o muy generales: </li></ul><ul><ul><ul><ul><li>Todos los numeros locales (de Guayaquil) </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Todos los numeros internacionales. </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Todos los numeros celulares. </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Extensiones en un rango: 300-399 </li></ul></ul></ul></ul><ul><li>Se utilizan principalmente para llamadas salientes. </li></ul><ul><li>Comienzan con el signo _ </li></ul><ul><li>Le dicen a Asterisk que haga match con un patrón y no con un número de extensión. </li></ul>
  159. 159. Coincidencia de Patrones (Pruebelos) <ul><ul><li>X . Hace match con cualquier dígito de 0 a 9. </li></ul></ul><ul><ul><li>Z Hace match con cualquier dígito de 1 a 9. </li></ul></ul><ul><ul><li>N Hace match con cualquier dígito del 2 al 9. </li></ul></ul><ul><ul><li>_[15-7] Hace match con el rango de dígitos especificados, en este ejemplo matchea los números 1,5,6,7. </li></ul></ul><ul><ul><li>_[01] 0 o 1 </li></ul></ul><ul><ul><li>_[3-7] 3,4,5,6 o 7 </li></ul></ul><ul><ul><li>_ [237-9] Cual sera?? </li></ul></ul><ul><ul><li>Como se puede restringir a los numeros PORTA? A los MOVISTAR? </li></ul></ul><ul><ul><ul><li>exten => _NXX,1,Playback(auth-thankyou) </li></ul></ul></ul><ul><li>Si Asterisk encuentra más de 1 patrón para una extensión marcada, se usa la más específica: </li></ul><ul><ul><li>exten => _555XXXX,1,Playback(digits/1) </li></ul></ul><ul><ul><li>exten => _55512XX,1,Playback(digits/2) </li></ul></ul>
  160. 160. Aplicación a la salidas de Troncales <ul><li>Se generan contextos especificos para llamadas locales a la PSTN para regular y controlar quiénes tienen permiso de hacer llamadas y qué tipo de llamadas pueden hacer: </li></ul><ul><ul><li>[globals] </li></ul></ul><ul><ul><li>JUAN=Sip/juan </li></ul></ul><ul><ul><li>PEDRO=Iax2/4010 </li></ul></ul><ul><ul><li>TRUNKDESALIDA= Zap/1 Dahdi/1 </li></ul></ul><ul><ul><li>[llamadas-locales] </li></ul></ul><ul><ul><li>exten => _9NXXXXXX,1,Dial(${TRUNKDESALIDA}/${EXTEN}:1) </li></ul></ul><ul><ul><li>exten => _9NXXXXXX,2,Congestion() </li></ul></ul><ul><ul><li>exten => _9NXXXXXX,102,Congestion() </li></ul></ul><ul><ul><li>[llamadas-larga-distancia] </li></ul></ul><ul><ul><li>exten => _901XXXXXXXXXX,1,Dial(${TRUNKDESALIDA}/${EXTEN}:1) </li></ul></ul><ul><ul><li>exten => _901XXXXXXXXXX,2,Congestion() </li></ul></ul><ul><ul><li>exten => _901XXXXXXXXXX,102,Congestion() </li></ul></ul>
  161. 161. Include <ul><li>Puede utilizarse un contexto dentro de otro contexto a través de la directiva include </li></ul><ul><li>Permite habilitar derechos de acceso a las diferentes secciones del dialplan. </li></ul><ul><li>Por ejemplo, que los dispositivo del contexto [internos] puedan hacer llamadas por la red PSTN </li></ul><ul><ul><li>include => context </li></ul></ul><ul><li>Primero trata de encontrar las extensiones en el contexto actual. </li></ul><ul><li>Si no la encuentra, trata de encontrarla en el primer contexto incluido, y después en el segundo y así sucesivamente. </li></ul>
  162. 162. Agregando al Plan de Marcado <ul><ul><li>[internos] </li></ul></ul><ul><ul><li>include => llamadas-locales </li></ul></ul><ul><ul><li>include => llamadas-larga-distancia </li></ul></ul>
  163. 163. Uso de Variables y Expresiones <ul><li>Las expresiones son una combinación de variables, operadores y valores que arrojan un resultado. Sintaxis: </li></ul><ul><li>$[expr1 operador expr2] </li></ul><ul><li>Operadores lógicos: |(or) , &(AND) </li></ul><ul><li>Operadores de comparación: =, !=, <, >, <=, >= </li></ul><ul><li>Operadores aritméticos: +, -, *, /, % </li></ul><ul><li>[...] , Ejemplo: </li></ul><ul><li>exten => 4003,1,Set(COUNT=3) </li></ul><ul><li>exten => 4003,2,Set(NEWCOUNT=$[${COUNT} + 1]) </li></ul><ul><li>exten => 4003,3,SayNumber(${NEWCOUNT}) </li></ul>
  164. 164. Condicionales <ul><li>Permite tomar desiciones dentro del dialplan. </li></ul><ul><li>Aplicación GotoIf() </li></ul><ul><ul><li>GotoIf(expresion1?destino1:destino2) </li></ul></ul><ul><li>Si la expresión evaluada es verdadera, la llamada es enviada a destino1, de lo contrario es enviada a destino2. </li></ul><ul><li>Una cadena vacía y el número 0 son evaluados con falso, cualquier otro valor es verdadero. </li></ul><ul><li>Cualquiera de los destinos puede ser omitido, pero debe estar alguno de los 2. </li></ul><ul><li>Si el destino omitido es el camino que debe seguir la llamada, el flujo que se sigue es la siguiente prioridad dentro de la extensión actual. </li></ul>
  165. 165. Uso de Condicionales <ul><li>exten => 104,1,Set(TEST=1) </li></ul><ul><li>exten => 104,2,GotoIf($[${TEST} = 1]?104,20) </li></ul><ul><li>exten => 104,10,Playback(weasels-eaten-phonesys) </li></ul><ul><li>exten => 104,20,Playback(office-iguanas) </li></ul><ul><li>exten => 105,1,Set(COUNT=10) </li></ul><ul><li>exten => 105,2,GotoIf($[${COUNT} > 0 ]?:10) </li></ul><ul><li>exten => 105,3,SayNumber(${COUNT}) </li></ul><ul><li>exten => 105,4,Set(COUNT=${COUNT} - 1) </li></ul><ul><li>exten => 105,5,Goto(2) </li></ul><ul><li>exten => 105,10,Hangup() </li></ul>
  166. 166. Uso de Condicionales <ul><li>exten => 106,1,GotoIf($[${CALLERID(num)} = 8842374]?20:10) </li></ul><ul><li>exten => 106,10,Dial(Sip/Juan) </li></ul><ul><li>exten => 106,20,Playback(abandon-all-hope) </li></ul><ul><li>exten => 106,21,Hangup() </li></ul>
  167. 167. While y EndWhile <ul><li>Vamos a crear un Loop que se ejecute 3 veces de manera tradicional antes de introducir el While </li></ul><ul><ul><ul><li>exten => s,1,NoOp(El Loop tradicional) </li></ul></ul></ul><ul><ul><ul><li>exten => s,n,Set(COUNT =1) </li></ul></ul></ul><ul><ul><ul><li>exten => s,n(start_loop),SayDigits(${COUNT}) </li></ul></ul></ul><ul><ul><ul><li>exten => s,n,Set(COUNT=$[${COUNT}+1]) </li></ul></ul></ul><ul><ul><ul><li>exten => s,n,GotoIf($[${COUNT}>3]?:start_loop) </li></ul></ul></ul><ul><ul><ul><li>exten => s,n,Playback(vm-goodbye) </li></ul></ul></ul>
  168. 168. While() y EndWhile() <ul><ul><ul><li>exten => s,1,NoOp(El Loop con While) </li></ul></ul></ul><ul><ul><ul><li>exten => s,n,Set(COUNT =1) </li></ul></ul></ul><ul><ul><ul><li>exten => s,n,While($[${COUNT}<4]) </li></ul></ul></ul><ul><ul><ul><li>exten => s,n,SayDigits(${COUNT}) </li></ul></ul></ul><ul><ul><ul><li>exten => s,n,Set(COUNT=$[${COUNT}+1]) </li></ul></ul></ul><ul><ul><ul><li>exten => s,n,EndWhile() </li></ul></ul></ul><ul><ul><ul><li>exten => s,n,Playback(vm-goodbye) </li></ul></ul></ul><ul><li>Todo esto debe ser un dolor de cabeza para los programadores! </li></ul><ul><li>La solucion: AEL haciendo a Asterisk mucho mas amigable, util y legible. </li></ul>
  169. 169. Correo de Voz (Voicemail) <ul><li>Se pueden dejar mensajes de voz a los usuarios. </li></ul><ul><li>Se permite un número ilimitado de buzones. </li></ul><ul><li>Notificación por correo: </li></ul><ul><ul><li>Puede anexar el mensaje de voz (.wav) </li></ul></ul><ul><ul><li>Indicador luminoso o señal de mensaje en espera. </li></ul></ul><ul><ul><li>Indicador auditivo de mensaje en espera al levantar el teléfono. </li></ul></ul><ul><ul><li>Manejo de mensajes vía telefónica. </li></ul></ul><ul><li>Los contextos de voicemail son definidos de igual manera que en dialplan. </li></ul>
  170. 170. Correo de Voz <ul><li>mailbox => password, nombre [,e-mail [, pager-email [, opciones]]] </li></ul><ul><li>mailbox: número de mailbox, generalmente asociado al número de extensión. </li></ul><ul><li>password: clave numérica del buzón. </li></ul><ul><li>nombre: nombre del propietario del buzón. Se utiliza para permitir incorporar en el directorio de Asterisk. </li></ul><ul><li>e-mail: correo electrónico adonde se envía la notificación. </li></ul><ul><li>pager-email: correo electrónico para enviar la notificación. </li></ul><ul><li>Opciones: hay varias como attach=yes </li></ul><ul><li>Voicemail() envía al emisor al buzón especificado para dejar un mensaje. </li></ul><ul><li>El número de buzón puede ser proseguido por la letra b o u. Con la letra b, se le informa al emisor que el usuario está ocupado. Con u que no esta disponible. </li></ul>
  171. 171. La aplicación Voicemail <ul><li>En Voicemail.conf se encuentra la configuracion de las casillas individuales de voicemail. </li></ul><ul><li>La aplicación Voicemail() dirige la llamada al voicemail y reproduce el mensaje de bienvenida. </li></ul><ul><li>Aplicación VoicemailMain() autentica a los usuariosy les da opciones para que puedan escuchar sus mensajes, configurar su correo de voz y enviar directamente un voicemail a otros usuarios </li></ul>
  172. 172. Configuracion de Voicemail <ul><li>Voicemail.conf </li></ul><ul><ul><li>[default] </li></ul></ul><ul><ul><li>4001 => 1234,Juan Perez,juan@dominio.com, </li></ul></ul><ul><li>Extensions.conf </li></ul><ul><ul><li>exten => 4001,1,Dial(${JUAN},10) ; hace referencia a la variable JUAN </li></ul></ul><ul><ul><li>exten => 4001, 2,voicemail(4001@default,u) </li></ul></ul><ul><ul><li>exten => 4001,102,voicemail(4001@default,b) </li></ul></ul><ul><li>Acceso al buzón de voz </li></ul><ul><ul><li>Exten => *98, 1, voicemailMain() </li></ul></ul>
  173. 173. Ejemplo de Voicemail <ul><li>[stations] </li></ul><ul><li>Exten => _NXX,1,Dial(SIP/${EXTEN},20) </li></ul><ul><li>Exten => _NXX,n,Voicemail(${EXTEN},u) </li></ul><ul><li>[voicemail] </li></ul><ul><li>Exten => 700,1,1VoicemailMain(${CALLERID(num)}) </li></ul><ul><li>El codigo anterior se ha definido en el extensions.conf, Alguien puede explicarlo? </li></ul>
  174. 174. La aplicación Record <ul><li>Podemos grabar nuestros mensajes (voces) a nuestro gusto. </li></ul><ul><li>Si utilizamos el %d en el nombre del fichero no se sobreescribira el mismo sino que se grabaran con un indice numerico identificador autoincremental. </li></ul><ul><li>El nombre del archivo grabado en el momento queda en la variable ${RECORDED_FILE} </li></ul><ul><li>Pruebe: </li></ul><ul><ul><ul><li>exten => 123,n,Record(migrabacion%d.wav) </li></ul></ul></ul>
  175. 175. Sala de Conferencias <ul><li>Permite crear conferencias protegidas por clave. </li></ul><ul><li>Administrar conferencias. </li></ul><ul><li>Callar o expulsar a un miembro de la conferencia. </li></ul><ul><li>Crear conferencias estáticas (en el meetme.conf). </li></ul><ul><li>Crear conferencias dinámicas (utilizando el plan de marcación). </li></ul>
  176. 176. Sala de Conferencias <ul><li>Meetme.conf </li></ul><ul><ul><li>[rooms] </li></ul></ul><ul><ul><li>Conf => 600 </li></ul></ul><ul><li>extensions.conf </li></ul><ul><ul><li>exten => 600,1,meetme(600, i, 54321) </li></ul></ul><ul><ul><li>Se anuncia cuando alguien entra o sale de la conferencia. </li></ul></ul><ul><ul><li>exten => 601,1,playBack(conf-thereare) </li></ul></ul><ul><ul><li>exten => 601,2,meetmeCount(600) </li></ul></ul><ul><ul><li>exten => 601,3, playBack(conf-peopleinconf </li></ul></ul>
  177. 177. Directorio <ul><li>Con el a

×