Está en la página 1de 188

VOIP con Asterisk y GNU/Linux:

MODULO 1
Agosto 2010 – Santiago, República Dominicana
Instructor: Antonio Perpiñan
Fundación Código Libre Dominicano
Page  1
Presentación del Curso


GENERALES del Cursos:

MODULO 1

Introducción a VOIP y SIP

Componentes de VOIP

Configuración de Central Telefónica Asterisk

Planes de Marcado y Aplicaciones

MODULO 2

Características Avanzadas de Asterisk

SIP, IAX y DUNDi.

Trunking, Tarjetas Análogas, Digitales, Channel Banks, Appliances.

AGI y AMI.

Dimensionamiento y Planificación de Redes VoIP

Page  2
Presentación del Curso


Perfil de los participantes:

Nombre

Estudios

Expectativas del curso

Conocimientos de:

Networking

Telefonia/VOIP

Linux

Adicional?


Objetivos del Curso.

Resultados del Curso.

Competencias a adquirir al finalizar el Curso.

Introducción al Mercado VOIP en República Dominicana.

Aplicación de Expectativas de los participantes.

Page  3
Asterisk Ruta al GCAP y DCAP

Page  4
Evaluación del Curso


Para obtener el CERTIFICADO DE APROBACION del curso usted
necesita obtener por lo menos el 70% de calificación.

50% Evaluación Teórica al final del contenido del curso.

50% Evaluación de Prácticas (individual/grupal) incluyendo
proyecto final.


Para obtener el CERTIFICADO DE ASISTENCIA al curso usted necesita
tener por lo menos el 90% de asistencias del total de horas impartidas del
curso.

Las practicas serán “En Vivo!!”, debe presentar el Proyecto

Page  5
Programa Resumido del curso

1) Conceptos básicos de VOIP


2) GNU/Linux para administradores de Asterisk
3) Introducción a Asterisk
4) Instalando Asterisk
5) Configuración Inicial de Asterisk
6) Conceptos básicos del plan de marcado
7) Conceptos avanzados del plan de marcado
8) Interfaces gráficas de administración de Asterisk

Page  6
Conceptos básicos de VOIP
Día #1
Page  7
Un poco de Historia

Telefonía Tradicional

Teléfono Inventado en 1876 por Antonio Meucci (atribuido a Alexander
Graham Bell hasta el 2002).

Originalmente: Transmisión sobre un hilo de hierro, comunicación punto a
punto.

Hoy en día: 1000 millones de teléfonos repartidos por todo el mundo.

Arquitectura Mallada: Todos contra todos

Page  8
Introduccion a Central Telefonica Digital


En la central nació el concepto de switch que inicialmente lo realizaba
manualmente una persona, luego aparecieron los conmutadores
electrónicos.

¿Qué parte es digital? ¿Qué parte es Analógica?

En muchos casos la comunicación es analógica hasta la
central

En la central se realiza PCM a 64kbps sin perdida de
calidad, Por que 64kbps?

Page  9
La Interconexion de centrales

 No es posible realizar un mallado de todos contra todos, sin embargo se


necesita un circuito dedicado para cada llamada, la solución es
multiplexar las llamadas: TDM – Time Division Multiplexing.
 ¿Qué realmente se multiplexa?  El enlace troncal entre centrales.

Page  10
La Interconexión de centrales tradicional


¿Han escuchado el termino: INTERCONEXION?

El uso del canal (troncal) de interconexion nos permite comunicarnos
entre centrales (entre TELFONICAS).

El recurso que se ha establecido para la llamada (circuito) esta ocupado
el tiempo de duración de la llamada.

Método ideado para voz

El precio, derechos, uso, liberación, garantía de disponibilidad es
regulación de cada país, en República Dominicana:
CODETEL/TRICOM/ETC y vigilado por INDOTEL.

Page  11
Que es una troncal?

 Una troncal es una línea conectada entre dos sistemas de switcheo, no


necesariamente en grandes centrales.
 No todos los usuarios o agentes requieren una troncal, las troncales se
organizan en grupos.
 E1/T1: se multiplexan TDM por lo que necesitan estar sincronizados
vienen en 4 hilos 1 par para Tx y otro para Rx.
 E1: 32 Canales a 2.048Mbps con ley A, T1: 24 Canales a 1.544Mbps con
ley u.
 Estas medidas se usan para tramas/troncales para conectar centrales,
para clientes corporativos y tx de datos dedicados.
 Mas usado en mercado: E1 MFC-R2 CAS 30 canales simultaneos a
64Kbps y 2 de señalización, normalmente carriers no entregan SIP.

Page  12
Principios de VOIP


VoIP : Voice over Internet Protocol

Uso de una red de datos para todo el proceso de llamadas de voz.

Permite unir dos mundos distintos: Telefonía y Redes de Datos.

Usan un protocolo común de convergencia: IP – Protocolo de Internet.

IMS.

Discusión:

¿¿¿Y las llamadas por Internet? Skype? Messenger?

¿¿La voz es análoga, IP y las redes de datos???

¿¿Es Telefonía Digital???

¿¿Se utiliza realmente VOIP??? ¿¿Se utilizará???

Page  13
Que funciones debe realizar VOIP?


Digitalización de la voz.

Paquetización de la voz.

Enrutamiento de los paquetes.

Además:

Conversión de números telefónicos a direcciones
IP y viceversa.

Generación de la señalización requerida por la red
telefónica.

Page  14
Algo de Actualidad


Internet es la mayor red de datos del mundo  VOIP será realizar
llamadas por Internet.

Existen DOS enfoques diferentes:

VOIP: cualquier comunicación de voz por paquetes en una red IP.

TOIP: TELEFONIA IP!!, la diferencia es que esta se rige por los
parámetros de calidad y control estrictos de la ITU.

El 50% de las llamadas de grandes operadoras son encaminadas por IP.

Para el control de calidad se PUEDEN usar CODECS específicos

VOIP sobre una red privada: REDES debe controlar toda la fiabilidad
similar a la de una TELCO.

En Internet?? Se puede estudiar e INTENTAR controlar el indice de
fiabilidad.

Page  15
Algo de Actualidad

 La convergencia de servicios de Telecomunicaciones Actuales se basa


en IP.
 WiFI, WiMAX, ADSL, ADSL2+ tienden a usar IP como protocolo de red
que permita handover/entrega vertical.
 Las nuevas Redes Móviles también están basando toda su red de datos
antes propietaria de la tecnología a IP (IMS).
 REFERENCIA WEBOK

Page  16
Problemas de VOIP


Existen problemas que no existían o tenían una solución sencilla en la
telefonía Tradicional y que afectan la QoS en VOIP:

Requerimientos dinámicos de ancho de banda.

Control y Paquetización

Latencia

Jitter

Como controlarlos en Internet? No hay control ni “responsabilidad” en
Internet.

Y la perdida de paquetes? VOIP y Asterisk se montará sobre RTP que
funciona sobre UDP, existe retransmisión de paquetes?

Page  17
Agentes Implicados


Usuarios VoIP: Utilizan tecnologías VoIP para realizar llamadas.

Proveedores de VoIP: permiten llamar desde VoIP a telefonía
tradicional. Cobran por ese servicio.

Carriers de VoIP: Venden sus rutas VoIP a los proveedores, son
'mayoristas' de minutos IP.

Terminadores VoIP: Venden sus líneas para llamar a telefonía
tradicional a los proveedores de VoIP.

Integradores de Soluciones VoIP: Conectan centralitas a VoIP,
servidores dedicados para servicios adicionales, conexiones
CRM -> VoIP, Softphones

Page  18
Agentes Implicados


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

Page  19
Elementos Implicados

 Teléfono IP: apariencia común, tiene por lo menos 1 conector RJ45 para
conectarse a una red IP. NO provee conexión RJ11. También se incluyen
teléfonos WIFI. El conector RJ45 provee 10/100/1000Mbps

Grandstream Budgetone 102

LINKSYS WIP300

Page  20
Elementos Implicados

 Verifiquen sus Teléfonos IP


 Que marca son?
 Son Dual Lan?
 Dual Lan: disponen de dos conectores RJ45 e implementan funciones de
switch, de esta forma no es necesario tirar otro cableado para los nuevos
dispositivos IP.
 Cableado estructurado, crecimiento horizontal?

Page  21
Elementos Implicados


Adaptador Analógico IP (ATA): transforman la señal analógica de los
teléfonos tradicionales a lo que VOIP entiende (protocolo y codec) proveen
conectores RJ11 y RJ45.

Linksys PAP2T-NA
Grandstream Handytone 386


Ventaja? Permite reutilizar los teléfonos actuales.

Nociones de Dimensionamiento y Planificación de Redes VoIP.

Page  22
Elementos Implicados


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).


Identificación de Headsets en el Laboratorio.

Page  23
Elementos Implicados


Términos de uso común y su aplicación como agentes de VOIP:

Gateway: “pasarela” entre una red convencional PSTN y una red
IP, se encarga de digitalización y paquetización y garantiza la
comunicación entre dispositivos IP y no IP, centrales IP y no IP.

Gatekeeper: “controlador” o “core” de los gateways, AuC de
usuarios, control de BW, enrutamiento IP, el básico de H.323.

Sip Proxy: actúa como conmutador (switch) de llamadas con
funciones limitadas, Asterisk puede proveer muchos servicios pero
menos capacidad de conmutación y funciones de Switch. Se usan
como sistemas de balanceo de carga y tolerancia a fallos,
capacidades para ambientes distribuidos.

Page  24
Elementos Implicados

 Tarjetas de Telefonía: Tipo PCI o PCI Express vienen en variedad:


2,4,8,24 puertos analógicos o 1, 2 o 4 lineas digitales
 Las tarjetas de 24 puertos analógicos permiten hasta 6 módulos FXS o
FXO o una mezcla entre ellos, cada modulo tiene 4 lineas.
 Modulo adicional de cancelación de ECO y capacidad de anfenol a patch
panel o channel bank.

Digium TDM2400P

Page  25
Elementos Implicados


Tarjetas de hasta 4 módulos FXS o FXO: TDM410

Tarjetas de hasta 8 puertos analógicos y soportan quads y duals FXS,
FXO: TDM800.

Manejan 14 Módulos de 2 lineas cada uno.

Con o sin modulo cancelador de ECO.

Page  26
Como funciona la VOIP?


Paso 1: Los dos comunicantes se registran en el servidor VoIP con sus
teléfonos (Hardphones, Softphones).

Paso 2: El equipo del emisor pregunta por el equipo del receptor.

Paso 3: El servidor VoIP devuelve datos de contacto al emisor (puertos,
direcciones IP).

Paso 4: Se establecen comunicación entre los interlocutores.

Todo ello utilizando un protocolo determinado: SIP, IAX2, H323 ...

Que es un protocolo?

Es el 'Conjunto de Reglas' que se utilizan para negociar y establecer las
comunicaciones de voz sobre IP.

Page  27
Protocolos de VOIP


H.323

IAX2

SIP

MGCP

Skinny/SCCP

UNISTIM

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

Page  28
Protocolos de VOIP

Protocolo H.323

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.

Provee control y señalización para negociar las posibilidades
de la comunicación:

Negociación de codecs

Verificación de la posibilidad de establecer canales de 'media'.

Control de secuencia

Para el streaming, se basa como SIP en RTP / RTCP

Page  29
Protocolos de VOIP

Protocolo H.323: Ventajas



Implementa QoS de forma interna.

Más completo: control de conferencias, recursos ..

Soporta conferencias de forma nativa de vídeo y datos.

SIP vs H323:

No hay un claro vencedor.

En EEUU se apostó por SIP y de ahí se ha derivado en
prácticamente un estándar.

Page  30
Protocolos de VOIP

IAX (Inter Asterisk eXchange)


 Es un protocolo abierto, originalmente diseñado por Digium
para comunicarse con otros servidores.
 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)
 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
 Permite escalar mas fácilmente una gran cantidad de
canales de voz entre dos puntos finales
Page  31
Protocolos de VOIP

El futuro de IAX

Debido a que IAX fue diseñado pensando en voz ha
recibido criticas por no tener un soporte adecuado
para video.

Sin embargo tiene todo el potencial para desarrollar
soporte para cualquier flujo de datos multimedia.

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.

Page  32
Protocolos de VOIP

IAX: Consideraciones de Seguridad



Tres formas de autentificar: Texto plano, MD5 e
intercambio de clave RSA.

Esta autenticación no encripta el flujo de datos (trafico
multimedia, headers) por lo que se recomienda el uso de
VPNs para mayor seguridad.

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

Page  33
Protocolos de VOIP

Protocolo SIP

SIP: Session Initiation Protocol, protocolo del IETF para
VozIP, texto y sesiones multimedia.

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.

Principales elementos implicados:

User Agent (Usuario)

Registrar y SIP Proxy

El sector tiende globalmente hacia SIP.

Page  34
Protocolos de VOIP

Protocolo SIP

Capacidades de SIP:

Localización del usuario.

Disponibilidad del usuario: determinación de la voluntad del
receptor de la llamada de participar en las comunicaciones.

Capacidad del usuario: Determinación del medio y de sus
parámetros.

Gestión de la sesión: transferencia, terminación de
sesiones, modificación de los parámetros de la sesión
desde el propio

'User Agent'.

En SIP, el usuario es el 'dueño' de su sesión.

Page  35
Protocolos de VOIP

Protocolo SIP: Esquema de funcionamiento



El protocolo SIP es de forma nativa “peer to peer”: Dos User
Agents pueden establecer una sesión entre sí:


Dos Canales:

Señalización(UDP 5060): Establecimiento, Negociación, Fin...)

Streaming RTP (UDP 10000-20000 normalmente) y control RTCP.

Page  36
Protocolos de VOIP: Llamada

Page  37
Codecs de VOIP

 Los códecs se utilizan para transforma la señal de voz analógica en una


versión digital.
 Los Softphones, Hardphones, PBX-IP ... soportan una serie de códecs
cada uno. Cuando hablan entre si negocian un códec común.
 Lo básico: PCM

Page  38
Codecs de VOIP


Si la voz esta entre los 300 y 4.000 Hz una frecuencia de 8.000 muestras
por segundo reconstruirá perfectamente la señal.

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)

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.

Page  39
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

Page  40
Telefonia Convencional vs. Telefonia IP

Telefonía Convencional:

PBX (Private Branch eXhange) propietarias

Requieren hardware y módulos de software costosos.

Incompatibles. El Hardware de una marca no funciona en
otra marca.

Sistema rígido y cerrado, sin personalización.

Su modelo de licenciamiento condiciona el crecimiento.

Requiere hardware especializado.

Redes telefónicas

Sobre la base de conmutación de circuitos.

El circuito está dedicado a una comunicación telefónica,
inclusive en los silencios.

Se “garantiza” la calidad de la transmisión.
Page  41
Telefonia Convencional vs. Telefonia IP


Telefonía IP

Transporta voz convertida en datos (transmisión de
paquetes).

La llamada se transmite por varios caminos (en paquetes
de datos) sin bloquear el enlace.

Un Gateway se encarga de interactuar entre la telefonía
convencional y la telefonía IP.

Integra las dos redes (voz y datos) en una sola red.

Reduce costos en el usuario final.

Integra telefonía, video, mensajería instantánea.

Problema: pueden perderse paquetes

Page  42
Open Source PBX


Utiliza hardware estándar. ●
Facilita el trabajo remoto.

Es desarrollada y mantenida por la ●
El cliente decide lo que quiere,
comunidad (centenares). elimina lo que no le interesa

El desarrollo es modular, dinámico, ●
Su crecimiento es ilimitado;
flexible, adaptable. escalable.

Aprovecha lo mejor que encuentra ●
Telefonía: una aplicación más de
en otros PBX. red que se integra al resto de las
aplicaciones (voz-datos).

No se limita a las leyes del
mercado. ●
Entorno de desarrollo, plataforma
de aplicación.

Es interoperable.

Tiene su base en estándares

Escalable a Pyme, call centers y
abiertos. grandes empresas.

Incorpora toda la funcionalidad de

Permite personalización por parte los PBX propietarios.
del usuario.

Su infraestructura no está

Aprovecha el crecimiento de la
manejada por una sola empresa. banda ancha y las tecnologías
WiMAX, Wireless.
Page  43
GNU/Linux para administradores de
Asterisk
Día #2
Page  44
Objetivos de esta Unidad

 Introducir los paquetes necesarios (1.6) para nuestra futura instalación de


Asterisk.
 Adquirir habilidades para manera el Shell de GNU/Linux principalmente
en gestión de paquetes y ámbito de red.
 Rescatar los comandos comúnmente necesarios como futuros
Administradores de Asterisk.
 Hacer una comparativa con DOS para los usuarios Windows.
 Preparar el laboratorio en ámbito de administración básica de red para
VoIP.
 Luego de esta unidad tendremos la primera evaluación TEORICA!!
sobre comandos de GNU/Linux.

Page  45
Paquetes necesarios para la compilación

Page  46
Linea de Comandos de Linux: Shell


El shell prompt será algo como:

[username@localhost.localdomain username]$

Siendo $ el indicador de un usuario normal.

[root@localhost.localdomain root]#

Siendo # el indicador de que se ha iniciado como root, para acceder se
usa su.

Todo comando en el shell prompt tendrá la sintaxis:

command -options <filename>

Los comandos se completan usando “tab”

Page  47
Linux Shell


Wildcards, funcionan como ocupantes de lugar para distintas funciones
en modo texto:

* — Matches all characters

? — Matches one character

\* — Matches the * character

\? — Matches the ? character

\) — Matches the ) character

El comando pwd muestra el directorio actual de trabajo.

Page  48
Iniciando Linux


Inicie Linux!!

Tómese un tiempo para familiarizarse con el sistema, probando los
comandos que se han explicado.

Se pueden realizar Preguntas personalizadas.

¿Qué otras versiones han escuchado de Linux?

¿Por qué FEDORA?

Busque el SHELL de Linux, Inicielo!

¿Por qué usar el SHELL de Linux?

Page  49
La Red en Linux


Ejecute el Comando “ifconfig”

Que resultados obtuvo?

Cada interfaz activa se identifica con su nombre, Identifique las interfaces
activas.

En el caso de un NIC Hard se identificará la MAC address precedido por
el término HWaddr.

La Dirección IP esta precedido por el termino inetaddr y la direccion
broadcast por el término Bcast, la subred en donde estamos por el termino
Mask.

Como se identifica las direcciones IPv6?

Como obtener la información unicamente de la Interfaz de Interés?

Page  50
La Red en Linux


¿Cómo se levanta una interfaz?

¿Cómo se setear Broadcast, Mascara y la dirección ip de la interfaz?

¿Qué hace ifup [interfaz] ??

¿Qué nos muestra netstat ??

¿Dónde se debe colocar la información de los DNS?

Despliegue con cat al archivo resolv.conf en /etc haga

Despliegue con less al archivo /etc/sysconfig/network

Edite con VI o nano el archivo de configuración de su interfaz ethernet
/etc/sysconfig/network-scripts/

Despliegue el archivo de configuración de los módulos para dispositivos

/etc/modprobe.d/dist.conf

Page  51
Comandos de Red


host : Determina la dirección IP de un "Host" , host -a despliega toda la
información de DNS.

ifconfig : Permite configurar una interfase de Red y ver el "status" de
ésta. Esa de la forma ifconfig <interfase> , ejemplo: ifconfig eth0

ifup: Habilita la interfase especificada,ejemplo: ifup eth0 .

ifdown : Deshabilita la interfase especificada,ejemplo: ifdown eth0 .

netstat -a : Todas la conexiones de Red originadas y recibidas por el
"Host"

netstat -an | grep 25 : Listar las conexiones de red originadas y recibidas
por el "Host", sobre el puerto 25

netstat -r : Muestra la tabla de ruteo "routing table" del sistema

netstat -i : Estadísticas de red de cada interfase

Page  52
Comandos de Red


lsof -n -i:25 : Determinar el programa del sistema operando bajo el
puerto 25

ping -s 1016 : Manda paquetes de ping de 1024 bytes (header 8 bytes),
mientras que el "default" es 512.

route -n : Despliega la tabla de ruteo del "Host". NOTA: Debe de estar
"IP Forwarding" ON en /etc/sysconfig/network , además el "kernel"
debe de estar configurado para "IP Forwarding" .

smbclient : Funciona como un cliente FTP, que simula conexiones que
serán realizadas a través de Samba. (Vea smbclient )

tcpdump : Permite el "debugging" de una interfase en el host.

Page  53
Control de Procesos

 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.
 kill -HUP <pid> : Señala al proceso con numero <pid>, que vuelva a leer
sus archivos de configuración
 kill -INT <pid> : Señala al proceso con numero <pid>, que sera
interrumpido
 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.
 kill -STOP <pid> : Señala al proceso con numero <pid>, que pare
momentáneamente
 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
Page  54
Mas Comandos

 kill -KILL <pid> : Señala al proceso con numero <pid>,que termine de


inmediato, el proceso es terminado abruptamente.
 killall : A diferencia de kill , killall permite mandar un señal al proceso
por nombre.
 killall <nombre del proceso > : Envía la señal -TERM al proceso con el
nombre especificado. NOTA: Por "default" la señal que toma kill y killall
es -TERM .
 ps -l : Este comando despliega dos parámetros PRI y NI. El parámetro
PRI indica la prioridad actual del proceso, que es calculada por el sistema
operativo, el valor de NI es tomado en cuenta cuando se determina el
PRI.

Page  55
La Red en Linux


Discusión:

¿Tiene GNU/Linux Soporte para todos los equipos y NICs
principalmente?

¿Quién da mejor Soporte Windows o Linux?

¿Se puede dar el caso que haya soporte Windows y NO para
GNU/Linux para una NIC?

Que haría en ese caso?

¿Han escuchado sobre wrappers de drivers?

¿Virtualizar seria una opción?

¿Cúal es el soporte mas limitado de GNU/Linux en Red Frente a
Windows?

Page  56
YUM


Yum (Yellow dog Updater Modified) es un programa automático
para instalar / desinstalar los RPM del sistema. Obtiene
automáticamente dependencias y previene que ha de ocurrir para
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.

Ejecute yum check-update, ¿Qué resultado muestra?

RPM (RedHat Package Manager), Sistema Gestor de Paquetes de
GNU/Linux, mantiene una DB con los datos/dependencias/relaciones de
los archivos que generan aplicaciones en GNU/Linux.

Evita el manejo directo con archivos binarios, código fuente,
configuraciones, compilación, etc.

{nombre}-{versión de la aplicación}-{versión del paquete}.{arquitectura}.rpm

Page  57
Preparando el Laboratorio


Antes que nada, Por que no Virtualizar??

Verifique que interfaces ethernet están “levantadas”, de ser necesario
levante la interfaz.

Verifique el punto de red este correctamente conectado.

Verifique la IP y verifique con sus compañeros un plan correcto de
asignación de direcciones IP.

Verifique que pueda navegar en Internet.

Verifique que pueda “alcanzar” todas las máquinas del laboratorio.

Algún problema, COMUNIQUELO! (Por ahora podremos seguir con
Windows), debemos preparar el laboratorio para que todo funcione.

Verifique la carpeta /usr/src/ Para que podría ser usada?? Que hay en
esa carpeta??

Page  58
Introducción a Asterisk
Día #3
Page  59
Algo de historia

 60s aparecen las centrales  Aparecen características de


electrónicas analógicas, valor agregado como buzón
conmutación por relés. de voz, conferencias,
 Telefonía digital utilizada llamada en espera, música
para trunking. en espera.

 Se introduce la IDSN o RDSI.


 Las centrales PBX se
vuelven Software, especifico
del fabricante. (1997)
basándose en H323.

Page  60
Algo de Historia y Actualidad

 2000 las empresas aun no confían



Las PBX se venden como en soluciones “libres” como Linux y
CAJAS NEGRAS, mientras se *.
pensaba que VoIP no tendría  Asterisk sigue evolucionando como
éxito por requerimientos de sinonimo de VoIP.
Ancho B.  Aparecen otras empresas para
desarrollar HW para * como

1998 Aparece SIP como Sangoma, Openvox, etc.
evolución de H.323 y empieza
 CISCO compra empresas VoIP
la revolución de “banda basadas en H.323 y propone un
ancha”. SIP. Huawei soporta SIP.

Comenzó en 1999  Asterisk soluciona el NAT con IAX!!
desarrollado por Mark Spencer  Aparece IAX2 y Asterisk tiene
y Digium como sponsor. soporte para casi todos los
protocolos.
Page  61
Introducción a Asterisk: Que es?

 Se han revisado muchos conceptos, Que es Asterisk?


 Es un sistema de comunicaciones con aplicaciones, basado
TOTALMENTE en software.
 Permite integrar e instanciar gran cantidad de agentes de redes de datos
y de voz de acuerdo a la aplicación.
 VOZ, DATOS y VIDEO convergen en Asterisk como la base para el
desarrollo de muchas aplicaciones.
 Es una IP – PBX, Asterisk como Softswitch?
 En grandes proyectos se puede usar Clustering, y redundancia.
 Se ejecuta en una PC estándar (arquitectura x86, x86_64, ppc) bajo
GNU/Linux, BSD o MacOSX.
 Asterisk en un FPGA? Appliances de Asterisk?

Page  62
Asterisk y su Funcionalidad


Asterisk es un B2BUA: Back to Back User Agent, Agente de usuario de
extremo a extremo.

Entidad del protocolo SIP.

El RFC de SIP define la siguiente funcionalidad:

Gestion de llamadas (facturacion, desconexion automatica . . . )

Interconexion de red(adaptacion de protocolos)

Ocultar la estructura de la red (direcciones privadas, topologias de
red)

Transcodicación entre las dos partes de una llamada.

Detalles de Señalización: MODULO 2!!

Page  63
Asterisk…


Los terminales ven a Asterisk como un servidor, en medio de toda la
señalización (a diferencia de un proxy o un router).

Asterisk “traduce” las “conversaciones” entre agentes que hablen
diferentes “idiomas” – transcoding.

Tiene funciones de GW, maneja diferentes protocolos en los
diferentes extremos de funcionalidad del GW.

Asterisk NO es un servidor proxy.

Asterisk siempre se encuentra en medio de una conversación entre
terminales SIP, (señalización y datos).

Page  64
Asterisk Arquitectura en el stack de Linux

Aplicaciones Gestión

Consola Interfaz Config Motor Módulos


CLI AMI TXT SQL
Asterisk ASTERISK

ZAPTEL/DAHDI

Kernel 2.4 / 2.6 Módulos


GNU/Linux
Julián Dunayevich, Lázaro Baca, Andrés
Brassara, Santiago Alberch
Page  65
Asterisk Arquitectura
Multiconferencia, IVR, Buzón de Voz, Directorio, aplicaciones
personalizadas, ...

API de Aplicaciones Asterisk

API de Formatos de Ficheros Asterisk


Traductor
A PI de Traducción de Codecs

de Codecs
Temporizador y
Gestor de
Lanzador de
GSM Entradas/Salidas GSMsf
G723 Aplicaciones
G723sf
G711
WAV
MP3
MP3
ADPCMA
LINEAR
Núcleo de
Centralita
Cargador de
Módulos

API de Canales Asterisk

SIP, H323, BRI, PRI, Bancos de Canales, HW específico, ...

Page  66
Asterisk Arquitectura


+ Integración de casi todas las formas de comunicación


+ Integración de casi todos los codecs de audio


+ Integración de multitud de Aplicaciones de telefonía


+ API de canales: Sirve para controlar todas las llamadas del sistema, sean Voz IP,
analógicas cualquier otra tecnología pudiendo desarrollar nuevos canales


+ API de Formato de Ficheros: Sirve para controlar el formato de ficheros que
pueden ser controlados por el sistema

+ 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.


+ API de Traducción de Codec: Controla la traducción de codecs entre
participantes en una comunicación. Se pueden implementar codecs nuevos.
Page  67
Asterisk Caracteristicas

De Llamada:
•Tarjetas prepago

Extensiones móviles

Sistema de Menú en Pantalla
•Multiconferencia

Enrutamiento por Indetificador de

Receptor de Alarmas
•Almacenamiento / Recuperación en BBDD llamada

Adición de Mensajes
•Integración con BBDD

Mensajería SMS

Autentificación
•Llamada por Nombre

Sistema TextToSpeach

Atención de llamada Automática
•Sistema de Acceso directo entrante

Emitir Letras y Números

Listas Negras
•Timbre personalizable

Detección de Voz

Transferencia Ciega
•No molestar

Llamada a tres

Transferencia con Consulta
•E911

Fecha y Hora

Registro de detalles de Llamada
•ENUM

Traducción de Codec

Reenvío de llamada en ocupado
•Recepción y Envío de FAx

Trunking

Reenvío de llamada en No-
•Lógica de extensiones Flexible

Pasarelas VozIP
disponible
•Listado de directorio Interactivo

Sistema de Buzón de Voz

Reenvío de llamada variable
•Respuesta de Voz Interactiva(IVR)

Indicador visual de mensaje no

Monitorización de Llamadas
•Agentes de llamada Locales y Remotos escuchado

Aparcamiento de Llamada
•Macros

Indicador sonoro de mensaje no

Sistemas de Colas
•Música en Espera escuchado

Grabación de llamadas
•Música en Espera en transferencia

Mensajes del Buzón de Voz a Email

Recuperación de Llamadas
•Sistema de MP3 configurable

Grupos de Buzón de Voz

Enrutamiento de llamadas (DID
•Control de Volumen

Interfaz Web de acceso al Buzón de
& ANI)
•Marcador Predictivo Voz

Escucha de Llamadas
•Privacidad

Identificación de llamada en Llamada

Transferencia de Llamadas
•Protocolo de establecimiento abierto en Espera

Llamada en Espera
(OSP)

Soporte de oficina Remoto

Identificación de LLamada

Bloqueo por identificación de •Conversión de protocolo
llamada •Captura de Llamadas

Page  68
Asterisk Caracteristicas

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:
TDMoE (Time Division Multiplex over Ethernet)

Permite conexión directas entre PBX Asterisk

Latencia Cero

Usa Hardware Ethernet Estandar
Voz Sobre IP

Permite la integración de Instalaciones separadas físicamente

Usa conexiones de datos estándar

Permite un Plan de numeración único para todas las oficinas

Page  69
Asterisk Caracteristicas

Codecs de Compatibilidad con Telefonía Estándar:


Audio: •E&M
•E&M Wink
•ADPCM •Feature Group D
•G.711 (A-Law & μ-Law) •FXS
•G.723.1 (sin intervenir en la comunicación) •FXO
•G.726 •GR-303
•G.729 (bajo licencia) •Loopstart
•GSM •Groundstart
•iLBC •Kewlstart
•Linear •MF and DTMF support
•LPC-10 •Robbed-bit Signaling (RBS) Types
•Speex

Protocolos: Protocolos de Señalización RDSI


Primarios
•IAX™ (Inter-Asterisk Exchange)
•H.323 4ESS
•SIP (Session Initiation Protocol) ●
BRI (ISDN4Linux)
•MGCP (Media Gateway Control Protocol ●
DMS100
•SCCP (Cisco® Skinny®) ●
EuroISDN

Lucent 5E

National ISDN2

NFAS

Page  70
Asterisk: Protocolos de SEÑALIZACION soportados


Full supported:

SIP (Session Initiation Protocol)

IAX (Inter-Asterisk eXchange Version 2 IAX2)

Non-Fully Supported:

H.323 (De la ITU)

MGCP (Cisco Media Gateway Control Protocol)

SCCP (Cisco Skinny Client Control Protocol)

Unistim (Nortel)

Page  71
Asterisk como viene?


Asterisk es un demonio (daemon=demonio) que se ejecuta en
background, al igual que el resto de los servidores conocidos (apache,
openssh, proftpd, ...).

La configuración normalmente se almacena en varios archivos de texto
editables de forma tradicional.

Se distribuye como código fuente para ser compilado e instalado, aunque
existen versiones “paquetizadas” para las distribuciones GNU/Linux más
comunes.

Page  72
Preparando un Sistema para Asterisk


Los requisitos dependen directamente de:

Las llamadas concurrentes. (canales)

Las conferencias y aplicaciones complejas simultáneas.

Las transcodifcaciones necesarias (recodificación).

Principalmente, Asterisk requiere de un microprocesador.

Según Digium, un equipo Dual Intel Xeon 1.8 Ghz 1 Gb Ram
soporta 60 llamadas concurrentes codificando con el codec
G.729.

Como es difícil determinar con exactitud, es mejor apuntar
alto para poder escalar.

Page  73
Preparando un sistema para Asterisk


Asterisk puede ser instalado en las siguientes plataformas:

GNU/Linux 2.x

MacOSX 10.x

Open Solaris

BSD

MS Windows: utilizando Cooperative Linux (no
recomendado).

En este curso se detallará la instalación en plataformas GNU/Linux.

Virtualizar? Quizas un web front end…

Page  74
Hardware para Telefonía: Interfaces Analógicas


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.


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.

Page  75
Hardware para Telefonia

X100P ASTERISK
(1 FXO)
TDM400P
RTPC (4 FXS)
TDM400P
(4 FXO) * Banco de Canales
TE110P (modo FXS)
(30 FXS)
Banco de Canales TE110P
(modo FXO) (30 FXO)

Page  76
Hardware para Telefonia: Interfaces Digitales


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.

Además del tipo de señalización, los interfaces RDSI pueden funcionar en modo

NT(Network Termination) o TE(Terminal Equipment).


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.


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.

Page  77
Hardware para Telefonía: Interfaces Digitales

Terminales
RDSI

ASTERISK
RDSI-PRI RDSI-BRI
Modo TE Modo NT
RED RDSI
RDSI-BRI
Modo TE
* RDSI-BRI
Modo NT PBX con líneas
RDSI básicas

RDSI-BRI
Modo TE
RDSI-PRI
PBX con Modo NT PBX con líneas
extensiones RDSI RDSI primarias

Page  78
Clientes SIP en Asterisk

 El tipo USER permite realizar llamadas desde Asterisk.


 El tipo PEER permite realizar llamadas hacia Asterisk.
 El tipo FRIEND toma la funcionalidad de USER y PEER.

Page  79
Asterisk: Estado y Autenticación


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.

La autenticación se hace:

Plana: la clave se guarda en texto plano en el archivo de
configuración y se transmite en texto plano, seguridad?

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.

RSA: o clave publica usa el algoritmo SHA1 de dispersión, las
claves asociadas a los usuarios se distribuyen entre los servers,

Que protocolo de senalizacion me daba toda la seguridad para estos
tipos de autenticacion?
Page  80
Asterisk y las tarjetas HW

 Fabricantes de hardware para conectividad con otras redes (PSTN) hay


variedad.
 Asterisk solo da soporte real y completo para el HW Digium.
 Digium solo tiene soporte real para lineas analogicas y tramas digitales
de USA.
 El soporte viene “lento” de acuerdo a las aplicaciones, ejemplo: E1 CAS
para MFC/R2, con OpenR2.
 ITU tiene parametros para cada pais como: señalización, impedancia,
voltajes, tonos.

Page  81
Asterisk y Los sistemas Tradicionales de VOIP

Sistema Tradicional de Comunicaciones Servidor Linux con Asterisk

RTB RTB

Terminal IP

Pasarela RTB
Terminal IP
Terminal Trad.

Servidor de MultiConferencia

*
Terminal IP
Terminal IP

Servidor de Buzón de Voz Soft Switch


Pasarela RTB
Cliente / Servidor Voz IP Terminal Trad.
Banco de Canales Aplicaciones de Telefonía:
Servidor de Música en Espera +Multiconferencia
+IVR
+Buzón de Voz
+Música en Espera
Terminal Trad. Terminal Trad. +...

Page  82
Instalando Asterisk
Día #4

Page  83
Compilando e Instalando Asterisk


Asterisk es un proyecto muy ACTIVO, repositorio es actualizado en
cuestión de días.

Asterisk actualiza sus fuentes como un servicio de red xNIX, cambios
afecta su funcionalidad y su seguridad.

Se debe realizar un análisis de valor de las consecuencias de una
actualización.

En DIGIUM existe un paquete que contiene la versión “actual” (current) de
asterisk:

Paquete de fuentes estable de Asterisk 1.4.
http://downloads.digium.com/pub/asterisk/asterisk-1.4-current.tar.gz.

Acceder a los Downloads de Digium! Via Firefox

Page  84
Preparando el sistema


Se recomienda tener todos los paquetes actualizados:

yum update o yum upgrade -y

Se necesita tener actualizado y funcionando los paquetes:

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

openssl: librerias de desarrollo para soporte RSA y MD5.

ncurses: para el CLI y para que otro aplicativo?

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

Fuentes del kernel de Linux (librerias del sistema)

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

Page  85
Preparando el sistema


Para instalar las dependencias y soporte para DB:

yum -y install mysql-server mysql-devel newt-devel unixODBC
unixODBC-devel libtool-ltdl libtool-ltdl-devel mysql-connector-
odbc

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

yum –y install kernel-devel

yum –y update kernel

uname -r

De ser necesario reinicie verificando la correcta version de
Linux!!

Page  86
Paquetes de Asterisk


Asterisk esta compuesto por:

El paquete “Asterisk” contiene todas las fuentes (código fuente) y
los makefiles para compilar asterisk, es el núcleo del sistema.

Es el unico componente necesario para montar requerimientos
EXCLUSIVOS de VoIP.

Funciones adicionales como mySQL o trabajo con archivos MP3 y
demás están en el paquete “Addons”.

“Libpri” contiene librería para gestion de enlaces ISDN con
tarjetas digitales.

Implementa PRI de ISDN.

Soporta NI-2, Nortel DMS-100, EuroISDN, protocolos de Lucent
5E para SW Nortel y Lucent.

Page  87
DAHDI


Dahdi (Digium Asterisk Hardware Device Interface)

“dahdi-linux” modulos del kernel para acceder a tarjetas de
comunicaciones para líneas analógicas.

“dahdi-tools” herramientas para configurar y diagnosticar las
tarjetas de hardware.

ANTES modúlos y herramientas en ZAPTEL.

Con tiene las aplicaciones dahdi_cfg y dahdi_tool para monitorear y
configurar las placas.

Page  88
Descargando Asterisk


Descargue los paquetes en /usr/src

wget -c http://downloads.digium.com/pub/asterisk/asterisk-1.6-
current.tar.gz

wget -c http://downloads.digium.com/pub/asterisk/asterisk-
addons-1.6-current.tar.gz

wget -c http://downloads.digium.com/pub/telephony/dahdi-
tools/dahdi-tools-current.tar.gz

wget -c http://downloads.digium.com/pub/telephony/dahdi-
linux/dahdi-linux-current.tar.gz

wget -c http://downloads.digium.com/pub/libpri/libpri-1.6-
current.tar.gz

Page  89
Descripción de comandos de Instalación


Siguiendo el LSB (Linux Standard Base) Asterisk deberá ser
descomprimido en /usr/src/

tar -xvzf asterisk-1.6-current.tar.gz

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

Descomprima los otros paquetes también!!

Para configurar el entorno, busqueda del compilador y las librerías que
deben estar instaladas para realizar la compilación.

Toda referencia externa debió ser instalada mediante paquetería.

Especialmente las librerías de ncurses se usan en el proceso de
compilación.

./configure

Para configurar las opciones de Asterisk a nuestro gusto se usará:

make menuselect
Page  90
Descripcion de comandos de Instalación


Compilará y en uso de ncurses creará una interfaz de selección de
opciones.

Para compilar las fuentes completas de Asterisk:

make

Y para instalarlo:

make install

Recomendable para ver los ejemplos:

make samples

Asterisk es modular, los modulos estan agrupados por categorías
referentes a su funcionalidad.

Existen entre otros: codecs, formatos, canales, aplicaciones, etc.

Los archivos de configuración estan en: /etc/asterisk

Todo modulo tiene su: modulo.conf
Page  91
Instalando Asterisk (ver comentarios)

REALIZAR UN RESPALDO DE SIP, EXTENSIONS E IAX


cd dahdi-linux-current cd ../asterisk-1.6.22
make make clean
make install ./configure
make menuconfig (opt)
cd dahdi-tools-current make install
./configure make samples
make make config
make install
make config cd ../asterisk-addons-1.6.7
make clean

cd ../libpri-1.6.7 (opt) ./configure

make make menuselect (opt)

make install make install


make samples

Page  92
DAHDI la instalación


Luego de la instalación DAHDI ha creado modulos del kernel y ha cargado
aplicaciones (módulos).

Liste los Módulos buscando unicamente aquellos relacionados con
dahdi!!
Verifique que esten cargados los modulos para timing, configuracion,

monitoreo, configuración en el sistema.



Es util antes de compilar DAHDI realizar una limpieza de cualquier
instalación previa:

make distclean

make clean

Page  93
Como quedó la Instalación?


Binario Asterisk:

ls /usr/sbin/asterisk

Módulos de Asterisk:

ls /usr/lib/asterisk/modules

Voces pregrabadas:

ls /var/lib/asterisk/sounds

Voces pregrabadas en castellano:

ls /var/lib/asterisk/sounds/es

Archivos de configuración de ejemplo:

ls /etc/asterisk/ *.conf

Verifique que pueda iniciar asterisk como un servicio linux.

Verifique el status del servicio asterisk.
Page  94
Directorios de Asterisk


/usr/lib/asterisk/modules Directorio donde se encuentran los modulos compilados
en extension .so.

/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.

/var/lib/asterisk Directorio donde se guardan las claves, la musica en espera y los
sonidos del sistema en una instalacion desde las fuentes.

/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.

/var/run/asterisk Donde se encuentra el archivo PID3 del Asterisk que se esta
ejecutando.

/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.

Page  95
Configuración Inicial de Asterisk
Día #5

Page  96
Asterisk CLI


Ejecute el comando: asterisk !!

Conectese a la CLI de Asterisk:

asterisk –r

Algun mensaje importante al inicio de Asterisk?

Ejecute las siguientes instrucciones:

core show version

core show uptime

quit

Que realizan esos comandos?

Page  97
Asterisk conceptos de la configuración


Canal (Channel – Chan)

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.

Por defecto, Asterisk soporta una serie de canales, los
más importantes son:

H.323, IAX2, SIP, MGCP: Protocolos VoIP.

Console: GNU Linux OSS/ALSA sound system.

Zap/Dahdi: líneas analógicas y digitales.

Page  98
Dialplan


El plan del marcado es el corazon de una central telefonica y la parte
principal de asterisk.

Indica como la PBX responde a llamadas entrantes y salientes.

En Asterisk el plan del marcado es totalmente configurable, a diferencia
de las centrales privativas.

Dentro del plan de marcado de Asterisk encontramos principalmente:

Extensiones

Aplicaciones

Contextos

Page  99
Extension


Extension o exten encierra un concepto diferente a lo que normalmente
pensamos.

Que tienen en mente por una extensión?

Cada extensión se compone de:

Nombre, prioridad y aplicación.

Nombre: agrupa una lista de acciones o pasos.

Prioridad: define el orden.

Aplicación: define la ejecución.

Con la descripción anterior defina nuevamente una extensión en Asterisk.

Page  100
Aplicación


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:

Hangup: colgar la llamada.

Monitor: comenzar la grabación a disco de la llamada.

Dial: realizar una llamada saliente.

Goto: saltar a otra extensión o contexto.

PlayBack: reproducir un fichero de sonido.

AGI: llamar a una aplicación externa (stdin, stdout, stderr).

Page  101
Contexto


El dialplan de Asterisk se divide en uno o varios contextos.

Un contexto es una colección de extensiones.

Permite la interacción entre las diferentes partes del dialplan.

Los contextos existen para poder diferenciar el “lugar” en
donde se encuentra una llamada, para:

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).

Se declaran colocando el nombre del contexto dentro de los
símbolos [ ].
ej: [entrantes]
Page  102
Dialplan: Arquitectura

Page  103
Primeros pasos sip.conf


Accese a la carpeta /etc/asterisk

Que se encuentra en esa carpeta?

Accese al archivo sip.conf
[jose] ;Nombre del usuario
type=friend;Permite generar y recibir llamados
secret=1234 ;Clave de jose
host=dynamic ;El teléfono puede tener una ip dinámica
context=internos; El contexto asocia el usuario al plan de
numeración

Page  104
Generando una llamada


Realice la instalacion de x-lite descargue el tar.gz.

Cambie el modo para ejecucion

Ejecute el software X-Lite

Verificar la configuracion de una cuenta SIP en X-Lite

Verifique que tenga tono de marcado, si es necesario
busque la instalacion Windows.

Origine una llamada desde el CLI:
originate sip/101 application echo

Conteste el telefono!!

Page  105
Primeros pasos: Los archivos de Canales


Archivos de configuración de canales:

iax.conf: canales IAX (Inter Asterisk eXchange).

sip.conf: canales SIP.

zaptel.conf/system.conf: telefonía analógica y digital.

h323.conf: canales H323.

mgcp.conf: canales MGCP.

unicall.conf: canales R2

Page  106
Carga de Configuraciones


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:
CLI> reload

Dialplan:

extensions.conf: el propio Dialplan.

features.conf: dialplan para métodos. complementarios
(transferencias, call parking, grabación de llamadas bajo demanda,
etc.).

Configuración de aplicaciones del dialplan:

meetme.conf: para salas de conferencias.

musiconhold.conf: config. de la música en espera.

queues.conf: configuración de colas de llamadas.

voicemail.conf: configuración de los buzones de voz.
Page  107
SIP.conf


En primer lugar existe la sección [general], donde se
definen variables globales y aspectos por defecto
para todos los canales SIP.

La sintaxis es la siguiente:
[general]
variable1=valor1
variable2=valor2
....
register => usuario : password @ servidorregistrar
register => ....
Page  108
SIP.conf Registrar


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.

El comando Register sólo es necesario si:

Se necesita ser llamado (lo cuál implica ser localizado).

Se aparece en el otro extremo con una configuración de IP
dinámica.

Los requerimientos registrar se manejan periodicamente!!

Page  109
SIP.conf seccion General

Las variables generales más importantes son:



allow y disallow: indican los codecs permitidos / no permitidos.

dtmfmode: especifica el método por el cual se enviarán los tonos (dígitos
pulsados durante la conversación); inband/rfc2833/info

nat: informa a Asterisk el tipo de NAT en el que se encuentra;
yes/no/never/route

externip: dirección pública si esta atrás de un NAT.

context: contexto por defecto donde entrarán las llamadas entrantes por
SIP.

port: puerto en el que escuchar (5060 ).

Page  110
SIP.conf


user: envía llamadas a Asterisk.

peer: recibe llamadas de Asterisk.

friend: recibe y envía llamadas.


La sintaxis para definir un type es:
[nombre] ; contexto
type = friend / peer / user
variable1 = valor
variable2 = valor

Page  111
SIP.conf Variables de canales


type: peer / friend

context: contexto donde entrarán las llamadas generadas.

nat: indica si el usuario o peer se encuentra tras un NAT.

host: IP remota o dynamic (en el caso en que la IP no sea fija).

username: nombre de usuario.

secret: contraseña de acceso en texto plano.

allow y disallow: configuraciones de codecs específicas para cada peer /
friend.

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).

canreinvite: permite que el tráfico de voz pase por el asterisk o bien
directamente entre las partes.

Page  112
SIP.conf Ejemplo

[pepe] ; usuario [juan]


type=friend ; IN/OUT type=friend
secret=pepin ; clave secret=juanin
context=internos ; rela dial plan callerid="juan perez" <1002>
callerid="pepe perez" <1001> context=internos
host=dynamic ; IP del device host=dynamic
nat=yes ; soporte NAT device nat=yes
canreinvite=no canreinvite=no
;disallow=all ;disallow=all
;allow=gsm ;allow=gsm
;allow=ulaw ;allow=ulaw
;allow=alaw ;allow=alaw
mailbox=1001@default mailbox=1002@default

Page  113
SIP.conf Verificacion en el CLI


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:
CLI> sip reload

Una vez recargada, puede comprobarse los “users” que se
han definido con el comando: sip show users

Para ver los “peers” definidos: sip show peers

Puede consultarse si Asterisk se ha “registrado”
correctamente en los registars configurados en la sección
general con el comando: sip show registry

Pueden verse los canales sip activos (comunicaciones
activas), vía el comando: sip show channels

Page  114
IAX.conf


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.
[juan]
type=friend
secret=miclave
qualify=yes
port=4569
transfer=no
host=dynamic
context=interno
callerid=device <1234>

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.

Page  115
IAX.conf


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.


Luego de 4 llamadas concurrentes comienza a haber ganancia de ancho
de banda.


Para pasar un canal IAX a modo trunk, incluir en la definición del archivo
iax.conf:
trunk=yes

Page  116
Definiciones con Plantillas


Para definiciones estáticas de usuarios con características comunes como
en grupos de trabajo o tipos de usuarios se puede utilizar plantillas:

Page  117
Detalles del Extensions.conf


El archivo extensions.conf es la parte central de toda la configuración,
dado que es donde se define el dialplan de Asterisk.

Se compone de 4 partes principales: contextos, extensiones,
prioridades y aplicaciones.

El dialplan se divide en secciones denominadas
contextos, que están rotuladas y contienen un grupo de
extensiones.

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:
[interno]

Todas las instrucciones son parte del contexto hasta que
el próximo contexto es definido.
Page  118
Detalles del Extensions.conf


Existen dos contextos especiales: [general] (variables predefinidas) y
[globals] (variables no predefinidas).

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.

La sintaxis de una extensión es la siguiente:
exten => nombre,prioridad,aplicacion()

Ejemplo:
exten => 123,1,Answer()

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.
exten => s,1,Answer()

Page  119
Detalles del Extensions.conf Prioridades


Una extensión puede tener varios pasos, denominados
prioridades.

Las prioridades comienzan con 1 y se ejecutan en orden
numérico.

Si no existe la prioridad N + 1, Asterisk no salta a la siguiente
prioridad (N+2).

Cada prioridad ejecuta una única aplicación.

Ejemplo:
exten => 123,1,Answer()
exten => 123,2,Hangup()

Page  120
Prioridades en Extensions.conf


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.

Simplifica el proceso de escritura del dialplan, evitando tener que volver a
numerar las prioridades al insertar una prioridad para la misma exten.

Ejemplo:
exten => 123,1,Answer()
exten => 123,n,hago algo
exten => 123,n,Hangup()
exten => 555,1,Answer()
exten => 555,n(LlamaPepe),Dial(SIP/pepe,20)
exten => 555,n,Voicemail(44)
exten => 555,n,Hangup

Page  121
Prioridades en Extensions.conf

;Va a n+101 en caso de que el canal esté ocupado:


exten => 555,LlamaPepe+101,Voicemail(44,u)
;También puede tener una etiqueta esta prioridad:
exten => 555,LlamaPepe+101(PepeNoDisponible),

exten => _044.,1,Answer


exten => _044.,n(Director),GotoIf($[${CALLERID(num)} =pepe]?
LlamaCelular:)
exten => _044.,n,Set(TIMEOUT(absolute)=300)
exten => _044.,n(LlamaCelular),Dial(Zap/1Dahdi/1/${EXTEN})
exten => _044.,n,Hangup

Page  122
Detalles del Extensions.conf


Las aplicaciones realizan una acción determinada en el canal
actual, controlando el comportamiento de la llamada y del
sistema en sí.
Algunos ejemplos:

Answer(): contesta una llamada.

Hangup(): cuelga una llamada.

Dial(): realiza una llamada saliente.

Playback(): reproduce un archivo de sonido.

Ciertas aplicaciones requieren del pasaje de parámetros,
estos se incluyen dentro de los paréntesis, separados por “,”.

Page  123
extensions.conf

 En el archivo extensions.conf se configura el plan de marcado (dialplan)


de la central telefónica.
 El dialplan consistirá en una serie de contextos que contendrán
extensiones y que tendrán diferentes prioridades.
 Una extensión VOIP Asterisk no es lo mismo que una extensión
telefonica tradicional.
 El archivo tiene dos contextos generales uno el contexto general y el
contexto globals.

Page  124
Sintaxis en extensions.conf


Sintaxis General de un contexto en extensions.conf


Ejemplo: “Hola Mundo” en el archivo extensions.conf


Cual sería la utilidad de tener una extensión “hola”??

Page  125
Contextos y Extensiones


Cada extensión SIP o llamada entrante de la PSTN tendrá asociado un
contexto.

Para acceder a variables dentro del script del extensions.conf se usa:

${ }

Marcar una extensión significa acceder a una sección de código, y, de
acuerdo a una prioridad establecida ejecutar una aplicación.

Las prioridades definen que aplicaciones se marcan primero.

El “orden fisico” del archivo extensions.conf no es relevante, para eso
estan las prioridades, excepto en prioridad “n”.

${EXTEN} es una variable de Asterisk que contiene el numero de
extensión que fue marcado.

Page  126
Manejo de Variables en extensions.conf


Para el acceso a una variable:

${VARIABLE}

Para asignar un valor a una variable:

Set()

Los nombres de variables NO son case sensitive.

Para el uso de operadores (aritméticos, lógicos) se usa:

$[OPERACION]

Ejemplo de extensión como función:

Page  127
Donde estamos en este Momento…


Hemos aprendido:

Comandos para manejar procesos, redes y paquetes y solucionar
problemas relacionados a ellos.

Google puede solucionar problemas y como buscarlos.

Descargar, Compilar e Instalar Asterisk.

Manejar el sip.conf para crear UA/Canales simples.

Manejar comandos simples de la CLI para verificar el
comportamiento de Asterisk.

Crear extensiones simples.

Han tenido algunos problemas, Cuales? AHORA es cuando, lo siguiente
es la práctica.

Page  128
Practica: PBX Battle V1

 Recordar Políticas del curso: Las practicas SON CALIFICADAS!! Y


Corresponden al 50% de la nota de APROBACION.
 Las practicas serán HANDS-ON, Lo estamos cumpliendo?
 Esta será una práctica MUY guiada y servirá para verificar el alcance de
red del laboratorio y el alcance de llamadas VOIP que podemos generar
hasta ahora.
 Al final del día tendremos 2 grandes centrales conversando entre sí.
 Deberán utilizar por lo menos en la mitad de las estaciones OTRO
softphone!!

Tienen XY Minutos para desarrollar la


practica!
Page  129
Practica: PBX Battle V1

 1.1. Configurar en el servidor Asterisk dos canales SIP identificados por los
nombres de los participantes, que tengan tanto la opción de recibir como efectuar
llamadas. Realizar la configuración vía IP dinámica. Recordar hacer la recarga de
la configuración cada vez que se efectuen cambios sobre la misma.
 1.2. Verificar via la CLI que ambos canales se encuentran configurados tanto
como clientes como proveedores.
 Utilizar los comandos: sip show peers y sip show users.
 1.3. Configurar el dialplan del servidor Asterisk de maneral tal que al discar los
números <F><C>01 y <F><C>02 haga las llamadas vía los canales configurados
en el punto 1.1., respectivamente. Utilizar el contexto [internos].
 1.4. Configurar cada softphone de manera tal que se registre en el servidor
Asterisk. Cada usuario deberá configurar su propia cuenta (creada en el punto
1.1.) en su softphone. Utilizar nombres descriptivos para identificar fácilmente en
qué PBX está configurado el usuario. Por ejemplo, "<Usuario> en PBX <F><C>".

Page  130
Practica: PBX Battle V1


1.5. Verificar vía la CLI que los softphones se registraron. Utilizar: sip
show peers


1.7. Realizar llamadas entre los teléfonos, en ambas direcciones.

1.8. Verificar vía la CLI que las llamadas están siendo llevadas a cabo.

Utilizar: sip show channels / show channels


1.9. Repetir todos los puntos del 1.1. al 1.8. pero ahora utilizando la PBX
restante. De esta manera, cada participante terminará con dos cuentas en
su softphone, una para cada PBX.

Page  131
Conceptos Básicos del Plan de
Marcado – DialPlan
Día #6

Page  132
Las voces de Asterisk


Ahora definiremos pasos para llamadas entrantes:

Contestar la llamada.

Reproducir un archivo.

Colgar la llamada.

Aplicaciones: Answer(), Playback() y Hangup()

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

Page  133
Las voces de Asterisk


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

Hangup() cuelga el canal actual.

Ingrese a ese directorio, liste los sonidos y
pruebelos!!
[interno]
exten => 100,1,Answer( )
exten => 100,2,Playback(hello-world)
exten => 100,3,Hangup( )

Page  134
Los teléfonos Grandstream

Verifique el CABLE original de los teléfonos, ayudemos a la Ingeniería de


Red del Laboratorio.



Verifique la IP de los teléfonos, Que dirección tienen? A que corresponde
esa dirección?

Esta registrado el teléfono? Como identificar el registro?

Acceda al menú en la LCD del Teléfono?

Como resetear un teléfono Grandstream? Donde esta la MAC?

Configuración de Teléfonos Grandstream, Accese a la Interfaz Web.

Revisión de características principales de la Interfaz Web.

Registrar sus teléfonos Grandstream:

Es un trabajo GRUPAL, 1 Central por pareja.

Tiempo aproximado: 10 minutos

Page  135
Ejemplo de Configuración de una Linea

[300]
type=friend
host=dynamic
secret=003
disallow=all
allow=alaw
callerid=“Jose Cordova”<300>


Alguien puede explicar cada línea de código anterior?

Prueben rápidamente el Caller ID con una cuenta, trabajen EN GRUPO
recuerden una sola central por pareja.

Page  136
CODECS de Alta Calidad y Bajo Ancho de Banda

Codecs de Alta Calidad Codecs de Bajo Ancho de


Banda
disallow=all disallow=all
allow=ulaw allow=g729
allow=alaw allow=gsm
allow=h264 allow=ilbc
allow=speex
allow=h263

Page  137
Básicos de otras aplicaciones


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.

exten => 123,1,Background(hello-world)


Goto(). Nos permite mandar una llamada a otro contexto, extensión y
prioridad:

exten => 123,1,Goto(contexto,extension,prioridad)

Page  138
Dialplan interactivo

 La persona que llama puede ingresar informacion presionando las teclas


del telefono.
 Los tonos que se escuchan cuando presionan las teclas se denominan
DTMF.
 Asterisk tomara dichos tonos e interpretara de acuerdo a la extension que
brinde la mayor coincidencia de patron.
 Background() acepta tonos DTMF, al momento de la entrada DTMF se
detiene la ejecucion del archivo de sonido.
 Asterisk encamina la llamada si encuentra una coincidencia NO ambigua
(probar como funciona esto).

Page  139
IVR Básico

[interno]

exten => 101,1,Answer( ) ; contesta la llamada


exten => 101,2,Background(enter-ext-of-person) ; espera digitos y pasa a
la extension en el mismo contexto
exten => 1,1,Playback(digits/1) ; reproduce el dígito 1
exten => 2,1, Playback(digits/2) ; reproduce el dígito 2


Verifique el uso de estas funciones!

Que pasa luego de que reproduce el numero de la extension
interna??

Page  140
IVR Basico

[interno]

exten => 4000,1,Answer( )


exten => 4000,2,Background(enter-ext-of-person)

exten => 1,1,Playback(digits/1)


exten => 1,2,Goto(4000,1) ; vuelve al inicio de la extension 4000

exten => 2,1, Playback(digits/2)


exten => 2,2,Goto(4000,1)

Verifique el uso de este contexto!!

Page  141
La extension i y los timeouts


Cuando el usuario teclea una entrada inválida, la llamada es enviada a la
extensión i.

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.

La funcion Background espera a 2 eventos de timeout que pueden ocurrir:

Timeout de digitos

Cuanto tiempo espero entre los digitos en segundos.

Timeout de respuesta

Cuanto tiempo se espera despues de reproducir el sonido sin
respuesta en segundos.

Verifique el ejemplo completo siguiente!!

Page  142
Uso de las extensiones i y t

[interno]
exten => 4000,1,Answer( )
exten => 4000,2,Background(enter-ext-of-person)
exten => 1,1,Playback(digits/1)
exten => 1,2,Goto(4000,1)
exten => 2,1, Playback(digits/2)
exten => 2,2,Goto(4000,1)

exten => i,1,Playback(pbx-invalid) ; llega en caso de digito invalido


exten => i,2,Goto(4000,1)
exten => t,1,Playback(vm-goodbye) ; llega en caso de no recibir
digitos luego de un tiempo (10 seg)
exten => t,2,Hangup()

Page  143
Saltos y Bucles


Con la aplicación GOTO se puede saltar de un lugar a otro dentro del
dialplan.

La aplicación GOTO recibe:

1 parametro : numero de prioridad y etiqueta (dentro de la misma
extension).

2 parametros: extension y prioridad (dentro del mismo contexto).

3 parametros: Contexto, extensión y prioridad (en cualquier lugar
del dial plan).

Page  144
Uso de GOTO


Pruebe el uso de la aplicación GOTO y el paso de parametros con:
[pruebas]
Exten => 125,1,Playback(tt-monkeys)
Exten => 125,2,Goto(1)
Exten => 126,1,Playback(hello-world)
Exten => 126,2,Goto(126,1)
Exten => 127,1,Playback(tt-weasels)
Exten => 127,2,Goto(pruebas,127,1)

Page  145
Incluyendo el uso de Etiquetas


Pruebe la siguiente extension:
exten => 128,1,Answer()
exten => 128,n,Wait(0.5)
exten => 128,n(salir),Playback(thank-you-for-calling)
exten => 128,n,Goto(salir)

Page  146
La aplicación Dial


Permite conectar 2 ó más canales.

Es especialmente útil cuando los dispositivo usan
tecnologías diferentes(SIP,IAX,etc).

Puede tomar hasta 4 parámetros:

El primero es el destino de la llamada en el formato
tecnologia/canal (Sip/juan, Iax2/180, Zap/1Dahdi/1)
exten => 4002,1,Dial(Sip/juan)

Se puede hacer que la llamada suene en varios canales a
la vez
exten => 4002,1,Dial(Sip/juan&Zap/1Dahdi/1&Iax/4010)

Page  147
La aplicación Dial


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.
exten => 102,1,Dial(Sip/juan,10)

Si el usuario donde está sonando la llamada contesta
antes de 10 segundos, se conectan ambos dispositivo y el
dialplan termina.

Si el usuario no contesta se continúa en la siguiente
prioridad.

Si el canal al que se quiere comunicar está ocupado, Dial()
salta a la prioridad n+101, si es que existe.
Page  148
Usando Dial


Compruebe el uso de Dial con el siguiente contexto

[interno]

exten => 4002,1,Dial(Sip/juan,10)


exten => 4002,n,Playback(vm-nobodyavail) ; no contesto
exten => 4002,n,Hangup()
exten => 4002,102,Playback(tt-allbusy) ; por ocupado
exten => 4002,n,Hangup()

Page  149
Dial: Caracteristicas Adicionales


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:

T. Permite que quien llama pueda transferir la llamada con #

t. Permite que quien contesta pueda transferir la llamada con #

r. Genera un ring tone al que llama y espera a generar el canal de
audio cuando conteste.

m. A diferencia de r, genera música en espera.

w. Permite al que llama grabar la comunicacion con *1

En CLI, ¨core show application dial¨, muestra todas las
opciones de Dial()

Page  150
Dial: Recapitulando

[interno]
exten => 4000,1,Answer( )
exten => 4000,2,Background(enter-ext-of-person)

exten => 4001,1,Dial(Sip/juan,10)


exten => 4001,2,Playback(vm-nobodyavail)
exten => 4001,3,Hangup()
exten => 4001,102,Playback(tt-allbusy)
exten => 4001,103,Hangup()

Page  151
Dial: Recapitulando

exten => 4002,1,Dial(Iax2/4010,10)


exten => 4002,2,Playback(vm-nobodyavail)
exten => 4002,3,Hangup()
exten => 4002,102,Playback(tt-allbusy)
exten => 4002,103,Hangup()

exten => i,1,Playback(pbx-invalid)


exten => i,2,Goto(4000,1)
exten => t,1,Playback(vm-goodbye)
exten => t,2,Hangup()

Page  152
Conceptos Avanzados del Plan de
Marcado – DialPlan
Día #7

Page  153
Manejo de Variables


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.

Las variables reducen la escritura, agregan claridad al
dialplan y le aportan lógica.

Los tipos de variables son:

Globales: declaradas en extensions.conf (o por comando).

Canal: asociadas con un canal particular.

Entorno: variables de entorno (UNIX Like).

La sintaxis de una variable es:
${variable}

Page  154
Manejo de Variables


Asignación de variables:

Set(Variable=valor)

Global(Variable=valor)

Manejo de cadenas:

Subcadenas: ${Variable : offset : longitud }

Devuelve la subcadena de variable que comienza en offset y con la
longitud especificada.

Ejemplos:
${123456789:2:3} devuelve 345

Longitud: ${LEN(Variable)}

Concatenación: ${Variable1}${Variable2}

Page  155
Manejo de Variables Globales


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.

Es útil para tener claridad manejabilidad en el dialplan.

Se pueden definir en el contexto [globals] al inicio de
extensions.conf

[globals]

JUAN=Sip/juan

PEDRO=Iax2/4010

Page  156
Uso de Variables en el Dial Plan

[globals]
JUAN=Sip/juan ; define la variable JUAN
PEDRO=Iax2/4010

[interno]
exten => 4000,1,Answer( )
exten => 4000,2,Background(enter-ext-of-person)
exten => 4001,1,Dial(${JUAN},10) ; hace referencia a la
variable JUAN
exten => 4001,2,Playback(vm-nobodyavail)
exten => 4001,3,Hangup()
exten => 4001,102,Playback(tt-allbusy)
exten => 4001,103,Hangup()

Page  157
Uso de Variables en el Dial Plan

exten => 4002,1,Dial(${PEDRO},10)


exten => 4002,2,Playback(vm-nobodyavail)
exten => 4002,3,Hangup()
exten => 4002,102,Playback(tt-allbusy)
exten => 4002,103,Hangup()
exten => i,1,Playback(pbx-invalid)
exten => i,2,Goto(4000,1)
exten => t,1,Playback(vm-goodbye)
exten => t,2,Hangup()

Page  158
Variables Predefinidas


Listado de variables más importantes:

${CALLERID}: caller ID actual, nombre y número.

${CONTEXT}: contexto actual.

${EXTEN}: extensión actual.

${CHANNEL}: canal actual.

${DIALSTATUS}: estado de la llamada: unavailable, congestion, busy,
noanswer, answer, cancel, hangup.

${DATETIME}: hora actual.

Un comando útil para ver el contenido es NoOp:

NoOp ( ${VARIABLE} )

Mostrará en el CLI el valor.

Page  159
Variable ${EXTEN}


Permite saber cuál es la extensión que fue marcada.

Se utiliza comunmente para eliminar dígitos marcados: ${EXTEN:x}
Si x es positivo, quita los primeros x dígitos
marcados
exten => _XXX,1,SayDigits(${EXTEN:1})
Si x es negativo, devuelve los últimos x dígitos
marcados
exten => _XXX,1,SayDigits(${EXTEN:-1})

Page  160
Coincidencia de Patrones


Permite definir una sola extensión que permita lograr igualar una serie de
posibles valores.

Pueden ser muy especificos o muy generales:

Todos los numeros locales (de Guayaquil)

Todos los numeros internacionales.

Todos los numeros celulares.

Extensiones en un rango: 300-399

Se utilizan principalmente para llamadas salientes.

Comienzan con el signo _

Le dicen a Asterisk que haga match con un patrón y no con un número de
extensión.

Page  161
Coincidencia de Patrones (Pruebelos)


X. Hace match con cualquier dígito de 0 a 9.

Z Hace match con cualquier dígito de 1 a 9.

N Hace match con cualquier dígito del 2 al 9.

_[15-7] Hace match con el rango de dígitos especificados, en este ejemplo
matchea los números 1,5,6,7.

_[01] 0 o 1

_[3-7] 3,4,5,6 o 7

_[237-9] Cual sera??

Como se puede restringir a los numeros PORTA? A los MOVISTAR?

exten => _NXX,1,Playback(auth-thankyou)

Si Asterisk encuentra más de 1 patrón para una extensión marcada, se usa la más
específica:

exten => _555XXXX,1,Playback(digits/1)

exten => _55512XX,1,Playback(digits/2)

Page  162
Aplicación a la salidas de Troncales


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:
[globals]
JUAN=Sip/juan
PEDRO=Iax2/4010
TRUNKDESALIDA=Zap/1Dahdi/1
[llamadas-locales]
exten => _9NXXXXXX,1,Dial(${TRUNKDESALIDA}/${EXTEN}:1)
exten => _9NXXXXXX,2,Congestion()
exten => _9NXXXXXX,102,Congestion()
[llamadas-larga-distancia]
exten => _901XXXXXXXXXX,1,Dial(${TRUNKDESALIDA}/${EXTEN}:1)
exten => _901XXXXXXXXXX,2,Congestion()
exten => _901XXXXXXXXXX,102,Congestion()

Page  163
Include


Puede utilizarse un contexto dentro de otro contexto a través
de la directiva include

Permite habilitar derechos de acceso a las diferentes
secciones del dialplan.

Por ejemplo, que los dispositivo del contexto [internos]
puedan hacer llamadas por la red PSTN
include => context

Primero trata de encontrar las extensiones en el contexto
actual.

Si no la encuentra, trata de encontrarla en el primer contexto
incluido, y después en el segundo y así sucesivamente.

Page  164
Agregando al Plan de Marcado

[internos]
include => llamadas-locales
include => llamadas-larga-distancia

Page  165
Uso de Variables y Expresiones


Las expresiones son una combinación de variables, operadores y valores
que arrojan un resultado.
Sintaxis:
$[expr1 operador expr2]

Operadores lógicos: |(or) , &(AND)

Operadores de comparación: =, !=, <, >, <=, >=

Operadores aritméticos: +, -, *, /, %

[...] , Ejemplo:
exten => 4003,1,Set(COUNT=3)
exten => 4003,2,Set(NEWCOUNT=$[${COUNT} + 1])
exten => 4003,3,SayNumber(${NEWCOUNT})

Page  166
Condicionales


Permite tomar desiciones dentro del dialplan.

Aplicación GotoIf()

GotoIf(expresion1?destino1:destino2)

Si la expresión evaluada es verdadera, la llamada es enviada
a destino1, de lo contrario es enviada a destino2.

Una cadena vacía y el número 0 son evaluados con falso,
cualquier otro valor es verdadero.

Cualquiera de los destinos puede ser omitido, pero debe estar
alguno de los 2.

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.
Page  167
Uso de Condicionales

exten => 104,1,Set(TEST=1)


exten => 104,2,GotoIf($[${TEST} = 1]?104,20)
exten => 104,10,Playback(weasels-eaten-phonesys)
exten => 104,20,Playback(office-iguanas)

exten => 105,1,Set(COUNT=10)


exten => 105,2,GotoIf($[${COUNT} > 0 ]?:10)
exten => 105,3,SayNumber(${COUNT})
exten => 105,4,Set(COUNT=${COUNT} - 1)
exten => 105,5,Goto(2)
exten => 105,10,Hangup()

Page  168
Uso de Condicionales

exten => 106,1,GotoIf($[${CALLERIDNUM} = 8842374]?20:10)


exten => 106,10,Dial(Sip/Juan)
exten => 106,20,Playback(abandon-all-hope)
exten => 106,21,Hangup()

Page  169
While y EndWhile

 Vamos a crear un Loop que se ejecute 3 veces de manera tradicional


antes de introducir el While
exten => s,1,NoOp(El Loop tradicional)
exten => s,n,Set(COUNT =1)
exten => s,n,(start_loop),SayDigits(${COUNT})
exten => s,n,Set(COUNT=$[${COUNT}+1])
exten => s,n,GotoIf($[${COUNT}>3]?:start_loop)
exten => s,n,Playback(vm-goodbye)

Page  170
While() y EndWhile()

exten => s,1,NoOp(El Loop con While)


exten => s,n,Set(COUNT =1)
exten => s,n,While($[${COUNT}<4])
exten => s,n,SayDigits(${COUNT})
exten => s,n,Set(COUNT=$[${COUNT}+1])
exten => s,n,EndWhile()
exten => s,n,Playback(vm-goodbye)

Todo esto debe ser un dolor de cabeza para los programadores!

La solucion: AEL haciendo a Asterisk mucho mas amigable, util y legible.

Page  171
Correo de Voz (Voicemail)


Se pueden dejar mensajes de voz a los usuarios.

Se permite un número ilimitado de buzones.

Notificación por correo:

Puede anexar el mensaje de voz (.wav)

Indicador luminoso o señal de mensaje en espera.

Indicador auditivo de mensaje en espera al levantar el
teléfono.

Manejo de mensajes vía telefónica.

Los contextos de voicemail son definidos de igual manera que
en dialplan.

Page  172
Correo de Voz

mailbox => password, nombre [,e-mail [, pager-email [, opciones]]]


mailbox: número de mailbox, generalmente asociado al número de
extensión.

password: clave numérica del buzón.

nombre: nombre del propietario del buzón. Se utiliza para permitir
incorporar en el directorio de Asterisk.

e-mail: correo electrónico adonde se envía la notificación.

pager-email: correo electrónico para enviar la notificación.

Opciones: hay varias como attach=yes

Voicemail() envía al emisor al buzón especificado para dejar un mensaje.

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.

Page  173
La aplicación Voicemail

 En Voicemail.conf se encuentra la configuracion de las


casillas individuales de voicemail.
 La aplicación Voicemail() dirige la llamada al voicemail y
reproduce el mensaje de bienvenida.
 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

Page  174
Configuracion de Voicemail


Voicemail.conf

[default]

4001 => 1234,Juan Perez,juan@dominio.com,

Extensions.conf

exten => 4001,1,Dial(${JUAN},10); hace referencia a la variable JUAN

exten => 4001, 2,voicemail(4001@default,u)

exten => 4001,102,voicemail(4001@default,b)

Acceso al buzón de voz

Exten => *98, 1, voicemailMain()

Page  175
Ejemplo de Voicemail

[stations]
Exten => _NXX,1,Dial(SIP/${EXTEN},20)
Exten => _NXX,n,Voicemail(${EXTEN},u)
[voicemail]
Exten => 700,1,1VoicemailMain(${CALLERID(num)})


El codigo anterior se ha definido en el extensions.conf, Alguien puede
explicarlo?

Page  176
La aplicación Record


Hace unos dias surgió esta duda en el curso y siempre es mas facil grabar
con esta aplicación que usar otra y buscar convertir el archivo y copiarlo
para Asterisk.

Podemos grabar nuestros mensajes (voces) a nuestro gusto.

Si utilizamos el %d en el nombre del fichero no se sobreescribira el mismo
sino que se grabaran con un indice numerico identificador autoincremental.

El nombre del archivo grabado en el momento queda en la variable $
{RECORDED_FILE}

Pruebe:

exten => 123,n,Record(migrabacion%d.wav)

Page  177
Sala de Conferencias


Alguien ha trabajado con Salas de Conferencias?

Permite crear conferencias protegidas por clave.

Administrar conferencias.

Callar o expulsar a un miembro de la conferencia.

Crear conferencias estáticas (en el meetme.conf).

Crear conferencias dinámicas (utilizando el plan de marcación).

Meetme.conf

[rooms]

Conf => 600

Page  178
Sala de Conferencias


extensions.conf

exten => 600,1,meetme(600, i, 54321)

Se anuncia cuando alguien entra o sale de la conferencia.

exten => 601,1,playBack(conf-thereare)

exten => 601,2,meetmeCount(600)

exten => 601,3, playBack(conf-peopleinconf

Page  179
Lab 2: Manejo de Contextos y Grupos de Trabajo


Para las extensiones internas de cada PBX, definiremos dos grupos:

internos, que comienzan con el prefijo 0

vips, con el prefijo 1

Por ejemplo, las extensiones definidas en el laboratorio 1, pertenecen al
grupo de los internos.

Por otra parte, si queremos definir una extensión 0 en el grupo vip: FC10.

1.1. Definir dos canales SIP (o IAX2) adicionales, llamados [jefe] y [vicejefe].

1.2. Crear un contexto [vips] y definir una extensión para cada uno de los canales,
FC10 y FC11, en este contexto.

1.3. Permitir que las extensiones FC10 y FC11 se puedan llamar entre sí y además
puedan llamar a las extensiones del grupo internos, vía la utilización de includes. A
su vez, las extensiones pertenecientes a internos no deben poder realizar llamadas
a las del grupo vips.

Page  180
Interfaces Gráficas para la
Administración de Asterisk
FreePBX, TrixBOX, Elastix
Día #8

Page  181
Sistemas de VOIP con Asterisk
MODULO II y cursos relacionados

Page  182
Sistemas de VOIP con Asterisk


Hemos terminado Exitosamente el Modulo I de la capacitación GENERAL
en Voz sobre IP usando Asterisk.

Han adquirido Competencias para:

Manejar Paquetes y Aplicativos Linux.

Solucionar problemas de dependencias de paquetes y compilacion
de componentes en Linux.

Administrar interfaces de Red y solucionar problemas relacionados
a ellas en Linux.

Definir redes de VoIP y dimensionar basicamente redes de datos y
voz.

Implementar una infraestructura de red de VoIP basado en Asterisk

Page  183
Sistemas de VOIP con Asterisk

– Definir usuarios y canales SIP, con caracteristicas adicionales


como Codecs, Buzones, etc.
– Definir un plan de Marcado Basico.
– Definir un IVR básico con acceso a extensiones, aplicaciones, etc.
– Manejar acceso a extensiones invalidas, restricciones de tiempo,
usuarios no disponibles y ocupados.
– Manejar restricciones por grupos de trabajo y por coincidencia de
patrones de marcado de los usuarios.
– Manejar aplicaciones de acuerdo a expresiones condicionales y
de los usuarios.
– Administrar cuentas de correo de voz
– Administrar cuartos de conferencia basicos para las empresas.

Page  184
Capacitacion en VOIP


Este curso NO ha terminado aun falta aprender:

Caracteristicas y Aplicaciones Avanzadas en el Plan del Marcado.

Configuracion de Canales FXS y FXO.

Configuracion de Tarjetas Analogas y digitales.

Interconexion de centrales via troncales SIP e IAX.

Interconexion con la PSTN y Channel banks FXS.

Conceptos Avanzados de Telefonia Digital.

Configuracion de Señalizaciones y establecimiento de canales
Digitales.

Macros y Codificacion Automatica

Page  185
Capacitacion en VOIP


Manejo de AstDB.

Colas, Agentes y Miembros dinamicos

Call Details Records (CDR)

Debugging de un Sistema Asterisk

Errores Tipicos del Dialplan

AGI con PHP.

Integracion con CTI y AMI.

Integracion con CRM.

Lenguaje AEL.

Page  186
Capacitacion en VOIP


Administracion de Proyectos de VOIP:

Ingenieria, Instalaciones y Post Venta, Soporte Tecnico.

Consideraciones de Seguridad (VPN, tuneles SSL, etc)

Tolerancia a Fallos, Redundancia y Balanceo de Carga.

Manejo de Troncales DUNDi.

Seguridad en VOIP

Seguridad de Terminal y de Red.

Ataques (MIM, Eavesdropping, Flooding, etc.)

Ataques SIP y SPAM.

Dimensionamiento de Red

Consideraciones de Red de datos (Capacidad de SW,
Crecimientos, Redes dedicadas)
Page  187
Capacitacion en VOIP


VLANs.

Tuneles VPN.

Teoria del Trafico.

Dimensionamiento basado en Trafico.

Calidad de servicio (QoS).

Pruebas del sistema y MOS.

Sistemas de VOIP de Rapid Deployment:

TrixBOX

Elastix

FreePBX

AsteriskNOW

Page  188

También podría gustarte