You are on page 1of 188

VOIP con Asterisk y GNU/Linux:

MODULO 1
Agosto 2010 Santiago, Repblica Dominicana
Instructor: Antonio Perpian
Fundacin Cdigo Libre Dominicano
Page 1

Presentacin del Curso

GENERALES del Cursos:

MODULO 1

Introduccin a VOIP y SIP

Componentes de VOIP

Configuracin de Central Telefnica Asterisk

Planes de Marcado y Aplicaciones

MODULO 2

Caractersticas Avanzadas de Asterisk

SIP, IAX y DUNDi.

Trunking, Tarjetas Anlogas, Digitales, Channel Banks, Appliances.

AGI y AMI.

Dimensionamiento y Planificacin de Redes VoIP

Page 2

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

Introduccin al Mercado VOIP en Repblica Dominicana.

Aplicacin de Expectativas de los participantes.

Page 3

Asterisk Ruta al GCAP y DCAP

Page 4

Evaluacin del Curso

Para obtener el CERTIFICADO DE APROBACION del curso usted


necesita obtener por lo menos el 70% de calificacin.

50% Evaluacin Terica al final del contenido del curso.


50% Evaluacin de Prcticas (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 sern En Vivo!!, debe presentar el Proyecto

Page 5

Programa Resumido del curso

1) Conceptos bsicos de VOIP


2) GNU/Linux para administradores de Asterisk
3) Introduccin a Asterisk
4) Instalando Asterisk
5) Configuracin Inicial de Asterisk
6) Conceptos bsicos del plan de marcado
7) Conceptos avanzados del plan de marcado
8) Interfaces grficas de administracin de Asterisk

Page 6

Conceptos bsicos de VOIP


Da #1
Page 7

Un poco de Historia

Telefona Tradicional

Telfono Inventado en 1876 por Antonio Meucci (atribuido a Alexander


Graham Bell hasta el 2002).

Originalmente: Transmisin sobre un hilo de hierro, comunicacin punto a


punto.

Hoy en da: 1000 millones de telfonos 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
electrnicos.

Qu parte es digital? Qu parte es Analgica?

Page 9

En muchos casos la comunicacin es analgica hasta la


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

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 solucin es
multiplexar las llamadas: TDM Time Division Multiplexing.
Qu realmente se multiplexa? El enlace troncal entre centrales.

Page 10

La Interconexin 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 duracin de la llamada.

Mtodo ideado para voz

El precio, derechos, uso, liberacin, garanta de disponibilidad es


regulacin
de
cada
pas,
en
Repblica
Dominicana:
CODETEL/TRICOM/ETC y vigilado por INDOTEL.

Page 11

Que es una troncal?

Una troncal es una lnea 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 sealizacin, 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: Telefona y Redes de Datos.

Usan un protocolo comn de convergencia: IP Protocolo de Internet.

IMS.

Discusin:

Page 13

Y las llamadas por Internet? Skype? Messenger?

La voz es anloga, IP y las redes de datos???

Es Telefona Digital???

Se utiliza realmente VOIP??? Se utilizar???

Que funciones debe realizar VOIP?

Digitalizacin de la voz.

Paquetizacin de la voz.

Enrutamiento de los paquetes.

Adems:

Conversin de nmeros telefnicos a direcciones


IP y viceversa.

Generacin de la sealizacin requerida por la red


telefnica.

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 comunicacin de voz por paquetes en una red IP.


TOIP: TELEFONIA IP!!, la diferencia es que esta se rige por los
parmetros 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 especficos

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 Mviles tambin estn basando toda su red de datos
antes propietaria de la tecnologa a IP (IMS).
REFERENCIA WEBOK

Page 16

Problemas de VOIP

Existen problemas que no existan o tenan una solucin sencilla en la


telefona Tradicional y que afectan la QoS en VOIP:

Requerimientos dinmicos de ancho de banda.

Control y Paquetizacin

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 retransmisin de paquetes?

Page 17

Agentes Implicados

Usuarios VoIP: Utilizan tecnologas VoIP para realizar llamadas.

Proveedores de VoIP: permiten llamar desde VoIP a telefona


tradicional. Cobran por ese servicio.

Carriers de VoIP: Venden sus rutas VoIP a los proveedores, son


'mayoristas' de minutos IP.

Terminadores VoIP: Venden sus lneas para llamar a telefona


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 telefnica
pblica (conocida como PSTN/POTS) a costos muy reducidos

Page 19

Elementos Implicados

Telfono IP: apariencia comn, tiene por lo menos 1 conector RJ45 para
conectarse a una red IP. NO provee conexin RJ11. Tambin se incluyen
telfonos WIFI. El conector RJ45 provee 10/100/1000Mbps

Grandstream Budgetone 102

LINKSYS WIP300

Page 20

Elementos Implicados
Verifiquen sus Telfonos 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 Analgico IP (ATA): transforman la seal analgica de los


telfonos tradicionales a lo que VOIP entiende (protocolo y codec) proveen
conectores RJ11 y RJ45.

Linksys PAP2T-NA

Grandstream Handytone 386

Ventaja? Permite reutilizar los telfonos actuales.

Nociones de Dimensionamiento y Planificacin de Redes VoIP.

Page 22

Elementos Implicados

Softphones: Programas que proveen toda la funcionalidad de un


telfono, adicionando los servicios de valor agregado de VOIP (toda
comunicacin voz/video sobre IP).

Identificacin de Headsets en el Laboratorio.

Page 23

Elementos Implicados

Trminos de uso comn y su aplicacin como agentes de VOIP:

Page 24

Gateway: pasarela entre una red convencional PSTN y una red


IP, se encarga de digitalizacin y paquetizacin y garantiza la
comunicacin 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 bsico de H.323.
Sip Proxy: acta como conmutador (switch) de llamadas con
funciones limitadas, Asterisk puede proveer muchos servicios pero
menos capacidad de conmutacin y funciones de Switch. Se usan
como sistemas de balanceo de carga y tolerancia a fallos,
capacidades para ambientes distribuidos.

Elementos Implicados

Tarjetas de Telefona: Tipo PCI o PCI Express vienen en variedad:


2,4,8,24 puertos analgicos o 1, 2 o 4 lineas digitales
Las tarjetas de 24 puertos analgicos permiten hasta 6 mdulos FXS o
FXO o una mezcla entre ellos, cada modulo tiene 4 lineas.
Modulo adicional de cancelacin de ECO y capacidad de anfenol a patch
panel o channel bank.

Digium TDM2400P

Page 25

Elementos Implicados

Tarjetas de hasta 4 mdulos FXS o FXO: TDM410

Tarjetas de hasta 8 puertos analgicos y soportan quads y duals FXS,


FXO: TDM800.

Manejan 14 Mdulos 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


telfonos (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 comunicacin 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


diseados para entregar paquetes en tiempo real los puntos finales son
diseados para esperar, retransmitir, descartar, esto no funciona en las
conversaciones de voz

Page 28

Protocolos de VOIP
Protocolo H.323
Es un estndar 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 sealizacin para negociar las posibilidades


de la comunicacin:

Negociacin de codecs

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

Ms completo: control de conferencias, recursos ..

Soporta conferencias de forma nativa de vdeo y datos.


SIP vs H323:

No hay un claro vencedor.

En EEUU se apost por SIP y de ah se ha derivado en


prcticamente un estndar.

Page 30

Protocolos de VOIP
IAX (Inter Asterisk eXchange)
Es un protocolo abierto, originalmente diseado por Digium
para comunicarse con otros servidores.
Es un protocolo de transporte que utiliza el puerto UDP 4569
tanto para sealizacin como para los flujos de RTP (real
time transfer protocol)
Es el nico que tiene la capacidad de trunkar mltiples
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 fcilmente 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 diseado 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 quizs su mayor


ventaja pues la comunidad que lo disea 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 autenticacin 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 encriptacin de


los flujos multimedia entre dos puntos, con el uso de una
llave RSA compartida o de asignacin dinmica 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 sealizacin de capa de


aplicacin para iniciacin, modificacin y terminacin de
sesiones de comunicacin 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:

Localizacin del usuario.

Disponibilidad del usuario: determinacin de la voluntad del


receptor de la llamada de participar en las comunicaciones.

Capacidad del usuario: Determinacin del medio y de sus


parmetros.

Gestin de la sesin: transferencia, terminacin de


sesiones, modificacin de los parmetros de la sesin
desde el propio

'User Agent'.

En SIP, el usuario es el 'dueo' de su sesin.

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 sesin entre s:

Dos Canales:

Page 36

Sealizacin(UDP 5060): Establecimiento, Negociacin, Fin...)


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

Protocolos de VOIP: Llamada

Page 37

Codecs de VOIP
Los cdecs se utilizan para transforma la seal de voz analgica en una
versin digital.
Los Softphones, Hardphones, PBX-IP ... soportan una serie de cdecs
cada uno. Cuando hablan entre si negocian un cdec comn.
Lo bsico: 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 seal.

Si se utilizan 8 bits para cuantizar la seal se necesitaran=8 bits x 8.000


Hz=64 kbps (G.711 o PCM puro)

Cuando se muestrea una seal, la seal de


muestreo debe ser al menos el doble del ancho de
banda de la seal de entrada, con la finalidad de
reconstruir perfectamente la seal a partir de la
muestra tomada.

Page 39

Codecs de VOIP

Page 40

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

Telefonia Convencional vs. Telefonia IP

Telefona Convencional:

PBX (Private Branch eXhange) propietarias

Requieren hardware y mdulos de software costosos.


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

Sistema rgido y cerrado, sin personalizacin.

Su modelo de licenciamiento condiciona el crecimiento.

Requiere hardware especializado.

Redes telefnicas

Sobre la base de conmutacin de circuitos.


El circuito est dedicado a una comunicacin telefnica,
inclusive en los silencios.
Se garantiza la calidad de la transmisin.

Page 41

Telefonia Convencional vs. Telefonia IP

Telefona IP

Page 42

Transporta voz convertida en datos (transmisin 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 telefona
convencional y la telefona IP.
Integra las dos redes (voz y datos) en una sola red.
Reduce costos en el usuario final.
Integra telefona, video, mensajera instantnea.
Problema: pueden perderse paquetes

Open Source PBX


Utiliza hardware estndar.

Es desarrollada y mantenida por la


comunidad (centenares).

El desarrollo es modular, dinmico,


flexible, adaptable.

Aprovecha lo mejor que encuentra


en otros PBX.

No se limita a las leyes del


mercado.

Es interoperable.

Tiene su base en estndares


abiertos.

Permite personalizacin por parte


del usuario.

Su infraestructura no est
manejada por una sola empresa.

Page 43

Facilita el trabajo remoto.

El cliente decide lo que quiere,


elimina lo que no le interesa

Su crecimiento es ilimitado;
escalable.

Telefona: una aplicacin ms de


red que se integra al resto de las
aplicaciones (voz-datos).

Entorno de desarrollo, plataforma


de aplicacin.

Escalable a Pyme, call centers y


grandes empresas.

Incorpora toda la funcionalidad de


los PBX propietarios.

Aprovecha el crecimiento de la
banda ancha y las tecnologas
WiMAX, Wireless.

GNU/Linux para administradores de


Asterisk
Da #2
Page 44

Objetivos de esta Unidad

Introducir los paquetes necesarios (1.6) para nuestra futura instalacin de


Asterisk.
Adquirir habilidades para manera el Shell de GNU/Linux principalmente
en gestin de paquetes y mbito de red.
Rescatar los comandos comnmente
Administradores de Asterisk.

necesarios

como

futuros

Hacer una comparativa con DOS para los usuarios Windows.


Preparar el laboratorio en mbito de administracin bsica de red para
VoIP.
Luego de esta unidad tendremos la primera evaluacin TEORICA!!
sobre comandos de GNU/Linux.

Page 45

Paquetes necesarios para la compilacin

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!!

Tmese 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 trmino HWaddr.

La Direccin IP esta precedido por el termino inetaddr y la direccion


broadcast por el trmino Bcast, la subred en donde estamos por el termino
Mask.

Como se identifica las direcciones IPv6?

Como obtener la informacin unicamente de la Interfaz de Inters?

Page 50

La Red en Linux

Cmo se levanta una interfaz?

Cmo se setear Broadcast, Mascara y la direccin ip de la interfaz?

Qu hace ifup [interfaz] ??

Qu nos muestra netstat ??

Dnde se debe colocar la informacin 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 configuracin de su interfaz ethernet


/etc/sysconfig/network-scripts/

Despliegue el archivo de configuracin de los mdulos para dispositivos

Page 51

/etc/modprobe.d/dist.conf

Comandos de Red

host : Determina la direccin IP de un "Host" , host -a despliega toda la


informacin 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 : Estadsticas 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 , adems el "kernel"
debe de estar configurado para "IP Forwarding" .

smbclient : Funciona como un cliente FTP, que simula conexiones que


sern realizadas a travs 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 seales a los procesos en Linux.
kill -HUP <pid> : Seala al proceso con numero <pid>, que vuelva a leer
sus archivos de configuracin
kill -INT <pid> : Seala al proceso con numero <pid>, que sera
interrumpido
kill -TERM <pid> : Seala al proceso con numero <pid>,que debe de
terminar, a diferencia de -KILL , esta opcin da la oportunidad al proceso
de terminar.
kill -STOP <pid> : Seala al proceso con numero <pid>, que pare
momentneamente
kill -CONT <pid> : Seala 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> : Seala al proceso con numero <pid>,que termine de


inmediato, el proceso es terminado abruptamente.
killall : A diferencia de kill , killall permite mandar un seal al proceso
por nombre.
killall <nombre del proceso > : Enva la seal -TERM al proceso con el
nombre especificado. NOTA: Por "default" la seal que toma kill y killall
es -TERM .
ps -l : Este comando despliega dos parmetros PRI y NI. El parmetro
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

Discusin:

Quin da mejor Soporte Windows o Linux?


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

Que hara en ese caso?

Han escuchado sobre wrappers de drivers?

Virtualizar seria una opcin?

Page 56

Tiene GNU/Linux Soporte para todos los equipos y NICs


principalmente?

Cal es el soporte mas limitado de GNU/Linux en Red Frente a


Windows?

YUM

Yum (Yellow dog Updater Modified) es un programa automtico


para instalar / desinstalar los RPM del sistema. Obtiene
automticamente dependencias y previene que ha de ocurrir para
instalar correctamente los paquetes. Hace ms fcil mantener grupos de
mquinas sin tener poner al da 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, cdigo fuente,


configuraciones, compilacin, etc.

Page 57

{nombre}-{versin de la aplicacin}-{versin del paquete}.{arquitectura}.rpm

Preparando el Laboratorio

Antes que nada, Por que no Virtualizar??

Verifique que interfaces ethernet estn levantadas, de ser necesario


levante la interfaz.

Verifique el punto de red este correctamente conectado.

Verifique la IP y verifique con sus compaeros un plan correcto de


asignacin de direcciones IP.

Verifique que pueda navegar en Internet.

Verifique que pueda alcanzar todas las mquinas del laboratorio.

Algn problema, COMUNIQUELO! (Por ahora podremos seguir con


Windows), debemos preparar el laboratorio para que todo funcione.

Verifique la carpeta /usr/src/ Para que podra ser usada?? Que hay en
esa carpeta??

Page 58

Introduccin a Asterisk
Da #3
Page 59

Algo de historia

60s aparecen las centrales


electrnicas analgicas,
conmutacin por rels.
Telefona digital utilizada
para trunking.
Se introduce la IDSN o RDSI.
Las centrales PBX se
vuelven Software, especifico
del fabricante. (1997)
basndose en H323.

Page 60

Aparecen caractersticas de
valor agregado como buzn
de voz, conferencias,
llamada en espera, msica
en espera.

Algo de Historia y Actualidad


2000 las empresas aun no confan
en soluciones libres como Linux y
*.

Las PBX se venden como


CAJAS NEGRAS, mientras se
pensaba que VoIP no tendra Asterisk sigue evolucionando como
sinonimo de VoIP.
xito por requerimientos de
Ancho B.
Aparecen otras empresas para

desarrollar HW para * como

1998 Aparece SIP como


Sangoma, Openvox, etc.
evolucin de H.323 y empieza
CISCO compra empresas VoIP
la revolucin de banda
basadas en H.323 y propone un
ancha.
SIP. Huawei soporta SIP.

Asterisk soluciona el NAT con IAX!!


Comenz en 1999
desarrollado por Mark Spencer Aparece IAX2 y Asterisk tiene
y Digium como sponsor.
soporte para casi todos los

protocolos.
Page 61

Introduccin a Asterisk: Que es?

Se han revisado muchos conceptos, Que es Asterisk?


Es un sistema de comunicaciones
TOTALMENTE en software.

con

aplicaciones,

basado

Permite integrar e instanciar gran cantidad de agentes de redes de datos


y de voz de acuerdo a la aplicacin.
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 estndar (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)
Transcodicacin entre las dos partes de una llamada.

Detalles de Sealizacin: MODULO 2!!

Page 63

Asterisk

Los terminales ven a Asterisk como un servidor, en medio de toda la


sealizacin (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 conversacin entre


terminales SIP, (sealizacin y datos).

Page 64

Asterisk Arquitectura en el stack de Linux

Aplicaciones

Gestin

Consola Interfaz Config Motor Mdulos


CLI
AMI
TXT
SQL

Asterisk

ASTERISK
ZAPTEL/DAHDI
Kernel 2.4 / 2.6

Mdulos
GNU/Linux

Julin Dunayevich, Lzaro Baca, Andrs


Brassara, Santiago Alberch
Page 65

Asterisk Arquitectura
Multiconferencia, IVR, Buzn de Voz, Directorio, aplicaciones
personalizadas, ...

Traductor
de Codecs
Lanzador de
Aplicaciones

Ncleo de
Centralita

Temporizador y
Gestor de
Entradas/Salidas

Cargador de
Mdulos

API de Canales Asterisk

SIP, H323, BRI, PRI, Bancos de Canales, HW especfico, ...


Page 66

API de Formatos de Ficheros Asterisk

GSM
G723
G711
MP3
ADPCMA
LINEAR

A PI de Traduccin de Codecs

API de Aplicaciones Asterisk

GSMsf
G723sf
WAV
MP3

Asterisk Arquitectura
+ Integracin de casi todas las formas de comunicacin

+ Integracin de casi todos los codecs de audio

+ Integracin de multitud de Aplicaciones de telefona

+ API de canales: Sirve para controlar todas las llamadas del sistema, sean Voz IP,
analgicas cualquier otra tecnologa 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 ms
mediante AGI (Asterisk Gateway Interface) pudiendo desarrollarse aplicaciones en
C, C++, perl, php, etc.

+ API de Traduccin de Codec: Controla la traduccin de codecs entre


participantes en una comunicacin. Se pueden implementar codecs nuevos.

Page 67

Asterisk Caracteristicas
De Llamada:
Sistema de Men en Pantalla

Receptor de Alarmas

Adicin de Mensajes

Autentificacin

Atencin de llamada Automtica

Listas Negras

Transferencia Ciega

Transferencia con Consulta

Registro de detalles de Llamada

Reenvo de llamada en ocupado

Reenvo de llamada en Nodisponible

Reenvo de llamada variable

Monitorizacin de Llamadas

Aparcamiento de Llamada

Sistemas de Colas

Grabacin de llamadas

Recuperacin de Llamadas

Enrutamiento de llamadas (DID


& ANI)

Escucha de Llamadas

Transferencia de Llamadas

Llamada en Espera

Identificacin de LLamada

Bloqueo por identificacin de


llamada

Page 68

Tarjetas prepago
Multiconferencia
Almacenamiento / Recuperacin en BBDD
Integracin con BBDD
Llamada por Nombre
Sistema de Acceso directo entrante
Timbre personalizable
No molestar
E911
ENUM
Recepcin y Envo de FAx
Lgica de extensiones Flexible
Listado de directorio Interactivo
Respuesta de Voz Interactiva(IVR)
Agentes de llamada Locales y Remotos
Macros
Msica en Espera
Msica en Espera en transferencia
Sistema de MP3 configurable
Control de Volumen
Marcador Predictivo
Privacidad
Protocolo de establecimiento abierto
(OSP)
Conversin de protocolo
Captura de Llamadas

Extensiones mviles
Enrutamiento por Indetificador de
llamada

Mensajera SMS

Sistema TextToSpeach

Emitir Letras y Nmeros

Deteccin de Voz

Llamada a tres

Fecha y Hora

Traduccin de Codec

Trunking

Pasarelas VozIP

Sistema de Buzn de Voz

Indicador visual de mensaje no


escuchado

Indicador sonoro de mensaje no


escuchado

Mensajes del Buzn de Voz a Email

Grupos de Buzn de Voz

Interfaz Web de acceso al Buzn de


Voz

Identificacin de llamada en Llamada


en Espera

Soporte de oficina Remoto

Asterisk Caracteristicas
CTI(Integracin de Telefona con el
Ordenador):
AGI (Asterisk Gateway Interface)
Monitor de Llamadas Grfico
Sistema de Colas para llamadas
salientes
Marcador Predictivo
Interfaz de Gestin va TCP/IP

Escalabilidad:
TDMoE (Time Division Multiplex over Ethernet)

Permite conexin directas entre PBX Asterisk

Latencia Cero

Usa Hardware Ethernet Estandar


Voz Sobre IP

Permite la integracin de Instalaciones separadas fsicamente

Usa conexiones de datos estndar

Permite un Plan de numeracin nico para todas las oficinas

Page 69

Asterisk Caracteristicas
Codecs de
Audio:
ADPCM
G.711 (A-Law & -Law)
G.723.1 (sin intervenir en la comunicacin)
G.726
G.729 (bajo licencia)
GSM
iLBC
Linear
LPC-10
Speex

Protocolos:
IAX (Inter-Asterisk Exchange)
H.323
SIP (Session Initiation Protocol)
MGCP (Media Gateway Control Protocol
SCCP (Cisco Skinny)

Page 70

Compatibilidad con Telefona Estndar:


E&M
E&M Wink
Feature Group D
FXS
FXO
GR-303
Loopstart
Groundstart
Kewlstart
MF and DTMF support
Robbed-bit Signaling (RBS) Types

Protocolos de Sealizacin RDSI


Primarios
4ESS
BRI (ISDN4Linux)

DMS100

EuroISDN

Lucent 5E

National ISDN2

NFAS

Asterisk: Protocolos de SEALIZACION 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 configuracin normalmente se almacena en varios archivos de texto


editables de forma tradicional.

Se distribuye como cdigo fuente para ser compilado e instalado, aunque


existen versiones paquetizadas para las distribuciones GNU/Linux ms
comunes.

Page 72

Preparando un Sistema para Asterisk

Los requisitos dependen directamente de:

Las llamadas concurrentes. (canales)

Las conferencias y aplicaciones complejas simultneas.

Las transcodifcaciones necesarias (recodificacin).

Principalmente, Asterisk requiere de un microprocesador.

Segn Digium, un equipo Dual Intel Xeon 1.8 Ghz 1 Gb Ram


soporta 60 llamadas concurrentes codificando con el codec
G.729.

Como es difcil 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 instalacin en plataformas GNU/Linux.

Virtualizar? Quizas un web front end

Page 74

Hardware para Telefona: Interfaces Analgicas

Puertos FXO: Estos interfaces que integra el Asterisk es utilizado para


conectarse con la RTPC o como extensin de una centralita tradicional
analgica. 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 analgicas 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
(1 FXO)
RTPC
TDM400P
(4 FXO)

Banco de Canales
(modo FXO)

Page 76

TE110P
(30 FXO)

ASTERISK

TDM400P
(4 FXS)

TE110P
(30 FXS)

Banco de Canales
(modo FXS)

Hardware para Telefonia: Interfaces Digitales

La Red Digital de Servicios Integrados (RDSI) utiliza, en principio, dos tipos de


capacidades de acceso. El acceso Bsico(2 Canales de voz + 1 de sealizacin) y
el acceso Primario(30 canales de Voz + 1 de sealizacin). 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 bsicos.

Adems del tipo de sealizacin, 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 conexin RDSI de foma
esclava.

Modo NT: En este modo el Asterisk puede conectarse con Centrales Digitales
Tradicionales que tengan conexin RDSI de forma Maestro o con extensiones
Digitales.

Page 77

Hardware para Telefona: Interfaces Digitales

Terminales
RDSI
ASTERISK
RED RDSI

RDSI-PRI
Modo TE
RDSI-BRI
Modo TE

RDSI-BRI
Modo NT

RDSI-BRI
Modo NT

PBX con lneas


RDSI bsicas

RDSI-BRI
Modo TE
PBX con
extensiones RDSI

Page 78

RDSI-PRI
Modo NT

PBX con lneas


RDSI primarias

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 Autenticacin

Asterisk mantiene una tabla con sus clientes SIP (algo como una tabla de
enrutamiento online), tambin como es agente entrega esta informacin a
otros Asterisk o a algn SIP Proxy Server.

La autenticacin se hace:

Plana: la clave se guarda en texto plano en el archivo de


configuracin y se transmite en texto plano, seguridad?
MD5/digest: luego de recibir la peticin de registro el servidor pide
autenticacin (nonce). El cliente toma el nonce y crea un hash con
la clave, el servidor validar los hashs y tomar una decisin del
registro.
RSA: o clave publica usa el algoritmo SHA1 de dispersin, 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: sealizacin, 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
Servidor de Buzn de Voz

Soft Switch
Banco de Canales

Servidor de Msica en Espera

Terminal Trad. Terminal Trad.

Page 82

Pasarela RTB
Cliente / Servidor Voz IP
Aplicaciones de Telefona:
+Multiconferencia
+IVR
+Buzn de Voz
+Msica en Espera
+...

Terminal IP

Terminal Trad.

Instalando Asterisk
Da #4
Page 83

Compilando e Instalando Asterisk

Asterisk es un proyecto muy ACTIVO, repositorio es actualizado en


cuestin de das.

Asterisk actualiza sus fuentes como un servicio de red xNIX, cambios


afecta su funcionalidad y su seguridad.

Se debe realizar un anlisis de valor de las consecuencias de una


actualizacin.

En DIGIUM existe un paquete que contiene la versin actual (current) de


asterisk:

Page 84

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

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)

Page 85

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


libtermcap-devel ncurses-devel

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-connectorodbc

En el caso de tener problemas de sources for kernel:

yum y install kernel-devel

yum y update kernel

uname -r

Page 86

De ser necesario reinicie verificando la correcta version de


Linux!!

Paquetes de Asterisk

Asterisk esta compuesto por:

El paquete Asterisk contiene todas las fuentes (cdigo fuente) y


los makefiles para compilar asterisk, es el ncleo del sistema.
Es el unico componente necesario para montar requerimientos
EXCLUSIVOS de VoIP.
Funciones adicionales como mySQL o trabajo con archivos MP3 y
dems estn en el paquete Addons.
Libpri contiene librera para gestion de enlaces ISDN con
tarjetas digitales.

Page 87

Implementa PRI de ISDN.


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

DAHDI

Dahdi (Digium Asterisk Hardware Device Interface)

Page 88

dahdi-linux modulos del kernel para acceder a tarjetas de


comunicaciones para lneas analgicas.
dahdi-tools herramientas para configurar y diagnosticar las
tarjetas de hardware.
ANTES modlos y herramientas en ZAPTEL.
Con tiene las aplicaciones dahdi_cfg y dahdi_tool para monitorear y
configurar las placas.

Descargando Asterisk

Descargue los paquetes en /usr/src

wget -c http://downloads.digium.com/pub/asterisk/asterisk-1.6current.tar.gz
wget -c http://downloads.digium.com/pub/asterisk/asteriskaddons-1.6-current.tar.gz
wget -c http://downloads.digium.com/pub/telephony/dahditools/dahdi-tools-current.tar.gz
wget -c http://downloads.digium.com/pub/telephony/dahdilinux/dahdi-linux-current.tar.gz
wget -c http://downloads.digium.com/pub/libpri/libpri-1.6current.tar.gz

Page 89

Descripcin de comandos de Instalacin


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 tambin!!

Para configurar el entorno, busqueda del compilador y las libreras que


deben estar instaladas para realizar la compilacin.

Toda referencia externa debi ser instalada mediante paquetera.


Especialmente las libreras de ncurses se usan en el proceso de
compilacin.

./configure

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

Page 90

make menuselect

Descripcion de comandos de Instalacin


Compilar y en uso de ncurses crear una interfaz de seleccin de
opciones.

Para compilar las fuentes completas de Asterisk:

Y para instalarlo:

make
make install

Recomendable para ver los ejemplos:

make samples

Asterisk es modular, los modulos estan agrupados por categoras


referentes a su funcionalidad.

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

Los archivos de configuracin 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 instalacin

Luego de la instalacin DAHDI ha creado modulos del kernel y ha cargado


aplicaciones (mdulos).

Liste los Mdulos buscando unicamente aquellos relacionados con


dahdi!!

Verifique que esten cargados los modulos para timing, configuracion,


monitoreo, configuracin en el sistema.

Es util antes de compilar DAHDI realizar una limpieza de cualquier


instalacin previa:

Page 93

make distclean

make clean

Como qued la Instalacin?

Binario Asterisk:

Mdulos de Asterisk:

ls /var/lib/asterisk/sounds

Voces pregrabadas en castellano:

ls /usr/lib/asterisk/modules

Voces pregrabadas:

ls /usr/sbin/asterisk

ls /var/lib/asterisk/sounds/es

Archivos de configuracin 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


aplicacin Verbose() o NoOp() se encuentran aqu, aunque tambien son dirigidos al
demonio syslog.

Page 95

Configuracin Inicial de Asterisk


Da #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 configuracin

Canal (Channel Chan)

Page 98

Es una conexin que conduce una llamada entrante o


saliente en el sistema Asterisk. La conexin puede venir
de o salir hacia telefona tradicional analgica, digital o
VoIP.
Por defecto, Asterisk soporta una serie de canales, los
ms importantes son:

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

Console: GNU Linux OSS/ALSA sound system.

Zap/Dahdi: lneas analgicas y digitales.

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 extensin?

Cada extensin se compone de:

Nombre, prioridad y aplicacin.

Nombre: agrupa una lista de acciones o pasos.

Prioridad: define el orden.

Aplicacin: define la ejecucin.

Con la descripcin anterior defina nuevamente una extensin en Asterisk.

Page 100

Aplicacin

Asterisk ejecuta secuencialmente los comandos asociados a


cada extensin. 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 grabacin a disco de la llamada.

Dial: realizar una llamada saliente.

Goto: saltar a otra extensin o contexto.

PlayBack: reproducir un fichero de sonido.

AGI: llamar a una aplicacin externa (stdin, stdout, stderr).

Page 101

Contexto

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

Un contexto es una coleccin de extensiones.

Permite la interaccin entre las diferentes partes del dialplan.

Los contextos existen para poder diferenciar el lugar en


donde se encuentra una llamada, para:

Aplicar polticas de seguridad: por ej, al entrar una llamada,


con 0 va a la operadora, mientras que cuando un usuario
local marca 0 y un nmero hace una llamada saliente
(fuera de la PBX).

Se declaran colocando el nombre del contexto dentro de los


smbolos [ ].

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 telfono puede tener una ip dinmica


context=internos; El contexto asocia el usuario al plan de
numeracin

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

Page 105

Conteste el telefono!!

Primeros pasos: Los archivos de Canales

Archivos de configuracin de canales:

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

sip.conf: canales SIP.

zaptel.conf/system.conf: telefona analgica y digital.

h323.conf: canales H323.

mgcp.conf: canales MGCP.

unicall.conf: canales R2

Page 106

Carga de Configuraciones
La configuracin 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 mtodos. complementarios
(transferencias, call parking, grabacin de llamadas bajo demanda,
etc.).

Configuracin de aplicaciones del dialplan:

meetme.conf: para salas de conferencias.

musiconhold.conf: config. de la msica en espera.

queues.conf: configuracin de colas de llamadas.

voicemail.conf: configuracin de los buzones de voz.

Page 107

SIP.conf

En primer lugar existe la seccin [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
localizacin del cliente. En ningn caso es suficiente
para poder hacer llamadas.

El comando Register slo es necesario si:

Se necesita ser llamado (lo cul implica ser localizado).


Se aparece en el otro extremo con una configuracin de IP
dinmica.
Los requerimientos registrar se manejan periodicamente!!

Page 109

SIP.conf seccion General

Las variables generales ms importantes son:

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

dtmfmode: especifica el mtodo por el cual se enviarn los tonos (dgitos


pulsados durante la conversacin); inband/rfc2833/info

nat: informa a Asterisk el tipo de NAT en el que se encuentra;


yes/no/never/route

externip: direccin pblica si esta atrs de un NAT.

context: contexto por defecto donde entrarn las llamadas entrantes por
SIP.

port: puerto en el que escuchar (5060 ).

Page 110

SIP.conf

user: enva llamadas a Asterisk.

peer: recibe llamadas de Asterisk.

friend: recibe y enva 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 entrarn 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: contrasea de acceso en texto plano.

allow y disallow: configuraciones de codecs especficas para cada peer /


friend.

qualify: evala 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 trfico de voz pase por el asterisk o bien


directamente entre las partes.

Page 112

SIP.conf Ejemplo

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

Page 113

[juan]
type=friend
secret=juanin
callerid="juan perez" <1002>
context=internos
host=dynamic
nat=yes
canreinvite=no
;disallow=all
;allow=gsm
;allow=ulaw
;allow=alaw
mailbox=1002@default

SIP.conf Verificacion en el CLI

Mediante el comando reload en el CLI de Asterisk, se indica


que recargue la configuracin. Aunque es posible recargar de
forma independiente slo 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 seccin
general con el comando: sip show registry

Pueden verse los canales sip activos (comunicaciones


activas), va el comando: sip show channels

Page 114

IAX.conf

En el archivo IAX.CONF se definen todos los enlaces que se establecern


usando el protocolo IAX tiene la misma estructura que el SIP.CONF: una
seccin 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 comunicacin
entre clientes.

Page 115

IAX.conf

El protocolo IAX permite el trunking de llamadas, es decir, que mltiples


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 definicin del archivo
iax.conf:
trunk=yes

Page 116

Definiciones con Plantillas

Para definiciones estticas de usuarios con caractersticas 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 configuracin,


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 estn rotuladas y contienen un grupo de
extensiones.

Los contextos se definen colocando su nombre entre


corchetes ([]). Este nombre puede contener caracteres
alfanumricos adems del guin y el guin bajo. Por ej:
[interno]

Todas las instrucciones son parte del contexto hasta que


el prximo contexto es definido.

Page 118

Detalles del Extensions.conf

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


[globals] (variables no predefinidas).

Una extensin es una instruccin que ser seguida por Asterisk, luego de
ser disparada por una llamada entrante o bien por dgitos discados en un
canal, definida en el marco de un contexto.

La sintaxis de una extensin es la siguiente:


exten => nombre,prioridad,aplicacion()

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

Extensin s (start): es una extensin especial que es utilizada si una


llamada entra a un contexto sin una extensin destino especfica (por
ejemplo una llamada en un puerto FXO); la llamada trata de entrar
automticamente a la extensin s.

exten => s,1,Answer()


Page 119

Detalles del Extensions.conf Prioridades

Una extensin puede tener varios pasos, denominados


prioridades.

Las prioridades comienzan con 1 y se ejecutan en orden


numrico.

Si no existe la prioridad N + 1, Asterisk no salta a la siguiente


prioridad (N+2).

Cada prioridad ejecuta una nica aplicacin.

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 nmero
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)
;Tambin 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 accin 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 parmetros,


estos se incluyen dentro de los parntesis, separados por ,.

Page 123

extensions.conf

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


de la central telefnica.
El dialplan consistir en una serie de contextos que contendrn
extensiones y que tendrn diferentes prioridades.
Una extensin VOIP Asterisk no es lo mismo que una extensin
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 sera la utilidad de tener una extensin hola??

Page 125

Contextos y Extensiones

Cada extensin 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 extensin significa acceder a una seccin de cdigo, y, de


acuerdo a una prioridad establecida ejecutar una aplicacin.

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


extensin 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 (aritmticos, lgicos) se usa:

$[OPERACION]

Ejemplo de extensin como funcin:

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

Page 128

Practica: PBX Battle V1

Recordar Polticas del curso: Las practicas SON CALIFICADAS!! Y


Corresponden al 50% de la nota de APROBACION.
Las practicas sern HANDS-ON, Lo estamos cumpliendo?
Esta ser una prctica 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 da tendremos 2 grandes centrales conversando entre s.
Debern 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 opcin de recibir como efectuar
llamadas. Realizar la configuracin va IP dinmica. Recordar hacer la recarga de
la configuracin 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
nmeros <F><C>01 y <F><C>02 haga las llamadas va 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 fcilmente en
qu PBX est configurado el usuario. Por ejemplo, "<Usuario> en PBX <F><C>".

Page 130

Practica: PBX Battle V1

1.5. Verificar va la CLI que los softphones se registraron. Utilizar: sip


show peers

1.7. Realizar llamadas entre los telfonos, en ambas direcciones.

1.8. Verificar va la CLI que las llamadas estn 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 Bsicos del Plan de


Marcado DialPlan
Da #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 ningn 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 parmetro el nombre del
archivo sin extensin, 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 telfonos Grandstream

Verifique el CABLE original de los telfonos, ayudemos a la Ingeniera de


Red del Laboratorio.

Verifique la IP de los telfonos, Que direccin tienen? A que corresponde


esa direccin?

Esta registrado el telfono? Como identificar el registro?

Acceda al men en la LCD del Telfono?

Como resetear un telfono Grandstream? Donde esta la MAC?

Configuracin de Telfonos Grandstream, Accese a la Interfaz Web.

Revisin de caractersticas principales de la Interfaz Web.

Registrar sus telfonos Grandstream:

Page 135

Es un trabajo GRUPAL, 1 Central por pareja.

Tiempo aproximado: 10 minutos

Ejemplo de Configuracin de una Linea

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

Alguien puede explicar cada lnea de cdigo anterior?

Prueben rpidamente 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

Bsicos de otras aplicaciones

Background(). Similar a playback, pero si el usuario presiona dgitos, la


aplicacin lo captura y trata de enviarlo a la extensin presionada.

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


Goto(). Nos permite mandar una llamada a otro contexto, extensin 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 Bsico

[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 dgito 1
exten => 2,1, Playback(digits/2) ; reproduce el dgito 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 invlida, la llamada es enviada a la


extensin i.

Cuando el usuario no teclea ninguna opcin, es necesario tener una


extensin que nos permita manejar esta situacin. Por defecto, si no se
teclea nada despus de 10 segundos de haberse terminado de reproducir
el archivo la llamada es enviada a la extensin 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 aplicacin GOTO se puede saltar de un lugar a otro dentro del


dialplan.

La aplicacin GOTO recibe:

Page 144

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


extension).
2 parametros: extension y prioridad (dentro del mismo contexto).
3 parametros: Contexto, extensin y prioridad (en cualquier lugar
del dial plan).

Uso de GOTO

Pruebe el uso de la aplicacin 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 aplicacin Dial

Permite conectar 2 ms canales.

Es especialmente til cuando los dispositivo usan


tecnologas diferentes(SIP,IAX,etc).

Puede tomar hasta 4 parmetros:

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 aplicacin 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 parmetro, la llamada
contina 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 contina 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 parmetro es una cadena que puede estar


compuesta por varios caracteres que brindan algunas
caractersticas especficas 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 msica 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
Da #7

Page 153

Manejo de Variables

En el dialplan de Asterisk existen variables, que pueden ser


modificadas por el propio Asterisk en su ejecucin lgica o por
comandos expresos (aplicaciones) del dialplan.

Las variables reducen la escritura, agregan claridad al


dialplan y le aportan lgica.

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

Asignacin 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)}

Concatenacin: ${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 slo 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
PEDRO=Iax2/4010

; define la variable JUAN

[interno]
exten => 4000,1,Answer( )
exten => 4000,2,Background(enter-ext-of-person)
exten => 4001,1,Dial(${JUAN},10)
variable JUAN

; hace referencia a la

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 ms importantes:

${CALLERID}: caller ID actual, nombre y nmero.

${CONTEXT}: contexto actual.

${EXTEN}: extensin 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} )

Page 159

Mostrar en el CLI el valor.

Variable ${EXTEN}

Permite saber cul es la extensin que fue marcada.

Se utiliza comunmente para eliminar dgitos marcados: ${EXTEN:x}

Si x es positivo, quita los primeros x dgitos


marcados
exten => _XXX,1,SayDigits(${EXTEN:1})
Si x es negativo, devuelve los ltimos x dgitos
marcados
exten => _XXX,1,SayDigits(${EXTEN:-1})

Page 160

Coincidencia de Patrones

Permite definir una sola extensin 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 patrn y no con un nmero de


extensin.

Page 161

Coincidencia de Patrones (Pruebelos)

X. Hace match con cualquier dgito de 0 a 9.

Z Hace match con cualquier dgito de 1 a 9.

N Hace match con cualquier dgito del 2 al 9.

_[15-7] Hace match con el rango de dgitos especificados, en este ejemplo


matchea los nmeros 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 ms de 1 patrn para una extensin marcada, se usa la ms


especfica:

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

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

Page 162

Aplicacin a la salidas de Troncales

Se generan contextos especificos para llamadas locales a la PSTN para


regular y controlar quines 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 travs


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 despus 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 combinacin de variables, operadores y valores


que arrojan un resultado.
Sintaxis:

$[expr1 operador expr2]

Operadores lgicos: |(or) , &(AND)

Operadores de comparacin: =, !=, <, >, <=, >=

Operadores aritmticos: +, -, *, /, %

[...] , 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.

Aplicacin GotoIf()

GotoIf(expresion1?destino1:destino2)

Si la expresin evaluada es verdadera, la llamada es enviada


a destino1, de lo contrario es enviada a destino2.

Una cadena vaca y el nmero 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
extensin 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 nmero ilimitado de buzones.

Notificacin por correo:

Puede anexar el mensaje de voz (.wav)

Indicador luminoso o seal de mensaje en espera.

Indicador auditivo de mensaje en espera al levantar el


telfono.

Manejo de mensajes va telefnica.

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: nmero de mailbox, generalmente asociado al nmero de
extensin.

password: clave numrica del buzn.

nombre: nombre del propietario del buzn. Se utiliza para permitir


incorporar en el directorio de Asterisk.

e-mail: correo electrnico adonde se enva la notificacin.

pager-email: correo electrnico para enviar la notificacin.

Opciones: hay varias como attach=yes

Voicemail() enva al emisor al buzn especificado para dejar un mensaje.

El nmero de buzn 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 aplicacin Voicemail

En Voicemail.conf se encuentra la configuracion de las


casillas individuales de voicemail.
La aplicacin Voicemail() dirige la llamada al voicemail y
reproduce el mensaje de bienvenida.
Aplicacin 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 buzn 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 aplicacin Record

Hace unos dias surgi esta duda en el curso y siempre es mas facil grabar
con esta aplicacin 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:

Page 177

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

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 estticas (en el meetme.conf).

Crear conferencias dinmicas (utilizando el plan de marcacin).

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 extensin 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 extensin 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 adems
puedan llamar a las extensiones del grupo internos, va la utilizacin de includes. A
su vez, las extensiones pertenecientes a internos no deben poder realizar llamadas
a las del grupo vips.

Page 180

Interfaces Grficas para la


Administracin de Asterisk
FreePBX, TrixBOX, Elastix
Da #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 capacitacin GENERAL


en Voz sobre IP usando Asterisk.

Han adquirido Competencias para:

Page 183

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

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

Page 185

Configuracion de Sealizaciones y establecimiento de canales


Digitales.
Macros y Codificacion Automatica

Capacitacion en VOIP

Page 186

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.

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

Page 187

Consideraciones de Red de datos (Capacidad de SW,


Crecimientos, Redes dedicadas)

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:

Page 188

TrixBOX

Elastix

FreePBX

AsteriskNOW

You might also like