Vous êtes sur la page 1sur 177

Programa Integral: Telefonía IP con

Asterisk

Departamento de Informática

Copyright © 2008 por TECSUP


Módulos del Programa Integral

1. Instalación y Configuración de Asterisk (30 horas)


2. Administración de Asterisk (30 horas)
3. Tópicos Avanzados con Asterisk (36 horas)
Módulo 1: (30 hrs.)
Instalación y
Configuración de Asterisk
Unidad 01
Introducción a Asterisk
Introducción

• En esta unidad conoceremos los principios básicos de la


telefonía tradicional y la telefonía IP, como la
señalización, los protocolos y los CODECs.

• Veremos la arquitectura de asterisk para entender como


su estructura modular lo hace flexible y rápido de
desplegar en diferentes entornos.

• Instalaremos el servidor asterisk sobre linux y


reconoceremos los principales archivos de configuración.
Objetivos

• Definir los conceptos básicos de telefonía


tradicional y telefonía IP.
• Entender la arquitectura de Asterisk.
• Conocer el hardware disponible para Asterisk.
• Instalar Asterisk en un entorno Linux.
Tema 01
Conceptos de Telefonía
Analógica
Conceptos Básicos de Telefonía

• La telefonía tradicional provee servicios de


voz basados en la conmutación de
circuitos.
• Consiste en convertir la voz a formato
electrónico (analógico o digital) y
transportarla a través de una red para
comunicar a dos o más personas.
La PSTN

Red de Enlaces

Central Telefónica

PSTN

Bucle de Abonado
PBX
La PSTN

• Los COs (Central Office) son centrales de


conmutación locales que interconectan los
teléfonos en un área específica.
Troncales

• Las troncales permiten interconectar las


centrales telefónicas. Y transportan las
llamadas de voz de los abonados de
central a central.

• Las troncales pueden ser:


– Analógicas
– Digitales
Bucle de Abonado

Abonados Telefónicos
Central Telefónica
Interfaces Analógicas

• Las interfases analógicas proveen la señalización en


ambos extremos del bucle de abonado. Estas interfases
son FXS y FXO.
FXS / FXO

Gateway de voz
FXS / FXO

Gateway de voz
PBX – Private Box eXchange

Una PBX se
conecta a la PSTN
y administra las
llamadas locales
(entre extensiones
de la PBX) y las
llamadas con el
exterior. PBX
Central Telefónica (CO)

Soportan interfases
como: FXS, FXO,
E&M, E1, T1, IP,
etc.
Funcionalidad de una PBX

• Transferencia de Llamadas
• Conferencia
• Captura de llamadas
• Llamada en espera
• Servicio diurno y nocturno
• Clases de Servicio
• IVR
Tema 02
Conceptos de Telefonía IP
Telefonía IP

• La telefonía IP da servicios de voz y otros


de valor agregado a través de una red de
conmutación de paquetes sobre TCP/IP.
• Permite por lo tanto implementar estos
servicios a través de la red Pública de
Internet.
Telefonía IP

FXS

Gateway
de Voz

INTERNET

FXO

PBX ATA Teléfonos IP


Protocolos

Los protocolos de señalización son


utilizados para establecer la conexión,
ubicar al destino, identificar la llamada,
desconexión, etc.

Protocolos utilizados en Telefonía IP: SIP,


H.323, MGCP
CODECs

• Los CODECS nos dan la posibilidad de utilizar


menos ancho de banda por canal de voz.
Permitiéndonos pasar más canales de voz
(llamadas) por la red.

- G.711 (ulaw / alaw) -> 64 Kbps


- G.726 -> 32 Kbps
- G.729 -> 8 Kbps (Necesita adquisición de licencia)
- GSM -> 13 Kbps
MOS

Main Opinion Score


MOS Calidad Deficiencia
5 Excelente Imperceptible
4 Buena Perceptible pero no incomoda
3 Pasable Incomoda mínimamente
2 Pobre Incomoda
1 Mala Incomoda bastante
Multiconferencia, IVR, Buzón de Voz, Directorio, aplicaciones

Tema 03
personalizadas, ...

API de Aplicaciones Asterisk


API de Formatos de Ficheros Asterisk

Traductor
API de Traducción de Codecs

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

Arquitectura de Asterisk
Centralita
Cargador de
Módulos

API de Canales Asterisk

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


Historia

• Mark Spencer creo en 1999 la


empresa “Linux Support Services”
con el objetivo de dar soporte a
usuarios de Linux.

• Al tener dificultad en adquirir una


central telefónica para su empresa
por los altos costos, decidió construir
su propia Centralita en Linux
utilizando lenguaje C.
Historia

• Jim Dixon escribe un driver para una tarjeta Mitel89000C


sobre FreeBSD que corría en una Pentium III de
600Mhz.

• Jim Dixon crea su propia tarjeta con el nombre


“Tormenta” y llama a su revolucionaria tecnología
ZAPATA (Zapata Telephony Project).

• Jim Dixon intenta migrar su driver a Linux (Red Hat 6.0)


no tiene éxito y libera el código en la red. A las 48 hrs.
recibe un correo de Mark Spencer.
Historia

• Mark Spencer y Jim Dixon unen esfuerzos en un nuevo


modelo de negocio.

• Mark Spencer funda Digium proveedor de servicios y


productos de hardware y software para Asterisk.
Asterisk

• Asterisk es una central telefónica (PBX) en


software bajo licencia GPL, creada por
Mark Spencer.
• Asterisk es un sistema telefónico de
código abierto (Open Source), que ofrece
funcionalidad, flexibilidad y características
avanzadas.
Asterisk

Telefonía IP:
Telefonía Tradicional: - SIP, IAX, H323

- Telefonía Analógica - Codecs: G711, G729, GSM

- Redes RDSI - Codec G711

- Codec G711
Hardware para Asterisk

TDM400P B410P
4 interfases FXS/FXO Interfase BRI

TDM2400P TE420
24 interfases FXS/FXO 120 canales E1
Arquitectura
Multiconferencia, IVR, Buzón de Voz, Directorio, aplicaciones
personalizadas, ...

API de Aplicaciones Asterisk

API de Formatos de Ficheros Asterisk


Traductor
API de Traducción de Codecs

de Codecs
Temporizador y
Gestor de
GSM
Lanzador de Entradas/Salidas
Aplicaciones GSMsf
G723
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, ...


Arquitectura

Canales.-
Un canal equivale a una línea telefónica, como un
circuito de voz digital. Puede ser una línea
analógica o un circuito digital.
(CODEC / Protocolo de señalización Ejm: GSM / SIP).

API de canales: Sirve para controlar todas las


llamadas del sistema, sean Voz IP, analógicas,
cualquier otra tecnología; pudiendo desarrollar
nuevos canales.
Arquitectura

API de Traducción de Codec: Controla la


traducción de CODECs entre participantes en
una comunicación.

- G.711 (u-law / a-law) -> 64 Kbps


- G.726 -> 32 Kbps
- G.729 -> 8 Kbps (Necesita adquisición de licencia)
- GSM -> 12 – 13 Kbps
Arquitectura

Aplicaciones.-
Para que Asterisk pueda conectar llamadas de entrada
o salida, utilizar el buzón de voz, conferencia, etc.
necesita ejecutar aplicaciones.

API de Aplicaciones: Se han desarrollado muchas


aplicaciones de IVR, MultiConferencia, etc, etc.
Teniendo la posibilidad de desarrollar nuevas
mediante AGI (Asterisk Gateway Interface)
utilizando lenguajes como C, C++, perl, php, java,
etc.
Arquitectura

Archivos.-
Asterisk soporta algunos tipos de archivos que
utiliza para tocar audio como: mp3, wav, GSM,
etc.
API de Formato de Ficheros: Sirve para
controlar el formato de archivos que pueden ser
controlados por el sistema.
Tema 04
Escenarios de
Implementación
Implementaciones

Telefonía IP
Internet

Telefonía Analógica
PSTN
Implementaciones

SIP

Internet Telefonía IP

PSTN

Telefonía Analógica
Implementaciones

IAX
IAX Internet

SIP
SIP

Telefonía IP Telefonía IP
Implementaciones
Aplicaciones :
-Click and Dial
- Marcador predictivo
- CRM

Internet

BD
PSTN

Servidor de
aplicaciones
Implementaciones
Tema 05
Instalación de Asterisk
Requisitos de Software

Asterisk Funciona sobre Linux y requiere los siguientes


paquetes instalados:
- Kernel (fuentes y cabeceras)
- gcc (versión 3.x o superior)
- ncurses (para el CLI)
- bison (para los archivos de
configuración)
- openssl
- libnewt
Preparando la instalación

http://www.asterisk.org/downloads
De aquí descargamos los paquetes básicos para
instalar asterisk en formato tar.gz:

- asterisk
- asterisk-addons
- asterisk-sounds
- zaptel
- libpri
Instalando ZAPTEL

Ingresamos a la carpeta de zaptel y ejecutamos los


siguientes comandos:

#make clean
#./configure
#make
#make install
#make config
Instalando libpri

Ingresamos a la carpeta de libpri y ejecutamos los


siguientes comandos:

#make clean
#make
#make install
Instalando asterisk

Ingresamos a la carpeta de asterisk y ejecutamos


los siguientes comandos:
#make clean
#./configure
#make
#make install
#make samples
#make config
Iniciando asterisk

Asterisk se puede iniciar de diferentes formas, si


hemos ejecutado make config, la forma más
sencilla es utilizando:
#service asterisk start
O de otra manera podemos iniciarlo como:
#asterisk –vvvvvc
Inicia el servidor asterisk e inicia el modo de
comandos.
Directorios de Instalación
Los directorios de instalación de asterisk se encuentran
configurados en el archivo /etc/asterisk/asterisk.conf
[directories]
astetcdir => /etc/asterisk
astmoddir => /usr/lib/asterisk/modules
astvarlibdir => /var/lib/asterisk
astdatadir => /var/lib/asterisk
astagidir => /var/lib/asterisk/agi-bin
astspooldir => /var/spool/asterisk
astrundir => /var/run
astlogdir => /var/log/asterisk
Resumen de la Unidad

Asterisk como servidor de comunicaciones permite la convergencia


de la telefonía tradicional y la telefonía __ en un entorno flexible,
económico y consistente.

Asterisk se puede desplegar en diversos escenarios de


implementación aumentando las posibilidades de comunicación de
las compañías. Incluyendo la posibilidad de agregar aplicaciones o
hacer interfaces con aplicaciones existentes.

Asterisk se instala sobre ____ incluyendo 3 paquetes básicos


asterisk, zaptel, libpri. Los drivers zaptel, y las librerías libpri nos
permiten utilizar hardware para conectarnos a la teléfonos
analógicos y troncales analógicas y digitales (PSTN).
Unidad 02
Configurando Teléfonos IP
Introducción

• Completando los pasos de la unidad anterior


tenemos un servidor Asterisk funcionando, pero
para que podamos realizar llamadas es
necesario configurar los dispositivos que
manejará asterisk.
• En esta unidad veremos como configurar
dispositivos SIP, configurar extensiones en el
Plan de Discado, e interconectar 2 servidores
asterisk utilizando el protocolo IAX2.
Objetivos

• Aprender el concepto de canal y troncal en asterisk.


• Configurar dispositivos SIP utilizando el archivo
sip.conf.
• Conocer el protocolo IAX2.
• Interconectar 2 servidores asterisk utilizando IAX2.
Tema 01
Principios Básicos
Funciones de PBX

Una PBX es una central privada en una compañía u


oficina que se encarga de administrar las llamadas entre
las extensiones conectadas a ella, así como las líneas
telefónicas de entrada y de salida.

Cumple generalmente 3 funciones principales:


Establecer llamadas entre dos o más usuarios.
(Llamadas internas o externas)
Mantener la comunicación durante el tiempo solicitado..
Proveer información para contabilidad y/o facturación de
llamadas.
Concepto de Canal

Un canal para asterisk es una conexión producto de una


llamada en la central Asterisk. Representa la conexión de
dos entidades dentro del sistema y pueden ser de los
siguientes tipos:
– ZAP
– SIP
– IAX
– H323
– skinny
Nomenclatura de Canales

Entender la nomenclatura que utiliza asterisk


para nombrar canales es crítico para hacer un
buen uso de ellos.
El formato utilizado es el siguiente:
<tecnología>/<cadena marcada>
Ejm:
ZAP/2
SIP/5001
IAX/guest@rgonzales.tecsup.edu.pe
Protocolo SIP

SIP es un protocolo punto a punto,


implementado como cliente-servidor. Su diseño
se basa en los protocolos HTTP y SMTP. Fue
usado originalmente para establecer, modificar y
terminar sesiones multimedia en Internet .

Estas sesiones pueden ser de voz, vídeo, chat,


juegos interactivos, etc.
Registro SIP

Cliente SIP

Register sip: rgonzales.com


From sip: 8500@rogonzales.com
…..
Expires : 3600

Base de datos
de ubicaciones
Tema 02
Configurando Teléfonos
SIP
Módulo SIP

El módulo de asterisk para canales SIP permite


a asterisk a comunicarse vía VoIP con otros
dispositivos SIP.

Asterisk puede actuar como:


Cliente SIP
Servidor SIP
Gateway SIP
Módulo SIP

La configuración del modulo SIP de asterisk se


lleva a cabo configurando el archivo sip.conf,
que se encuentra en /etc/asterisk.

Este archivo está dividido en secciones primero


tenemos una sección general donde aplicaremos
las configuraciones que serán tomadas por
defecto en caso no se especifiquen en las
secciones individuales.
Configurando cuentas SIP

SIP.CONF :
/etc/asterisk/sip.conf

[general]
bindport=5060
bindaddr=0.0.0.0
context=Internal
language=es
disallow=all
allow=all
Configurando cuentas SIP

[3001]
type=friend
secret=123456
peer nat=no
host=dynamic
disalow=all
allow=ulaw
allow=gsm
context=Internal
Configurando cuentas SIP

Podemos ver otros parámetros adicionales para


la configuración SIP:

canreinvite = yes
Permite que asterisk pase directamente los paquetes
RTP entre los puntos de comunicación.

dtmfmode = info
Permite detectar los tonos DTMF en la línea de
comunicación.
Instalando el softphone SIP

X-Lite:
- 2 Líneas
- Mute
- Redial
- Videoconferencia
- G.711, GSM
Instalando el softphone SIP

La configuración de
x-lite es simple
basta con llenar el
siguiente
formulario con la
información que se
configuró en
sip.conf
Probando la configuración

• Una vez configurado el teléfono IP este intentará


registrarse al servidor asterisk.
• Para probar si está registrado correctamente en la
línea de comandos de asterisk escribimos el
comando: sip show peers.
Probando la configuración
Tema 03
El Plan de Discado
Plan de Discado

El plan de discado de Asterisk (Dial Plan) es el


corazón del sistema, aquí se define como se
manejarán las llamadas entrantes, salientes y
locales.

Consiste en un conjunto de instrucciones que


Asterisk ejecutará siguiendo un orden
determinado.
Plan de Discado

El plan de discado se configura


principalmente en el archivo extensions.conf
y está dividido en 4 partes:
- Contextos
- Extensiones
- Prioridades
- Aplicaciones
Plan de Discado

Contextos: el plan de discado está dividido en


secciones llamadas contextos. Un contexto
actúan como una colección de extensiones.

De esta manera un grupo de extensiones que


pertenecen a un contexto estarán
completamente aisladas de las extensiones en
otro contexto.
Plan de Discado

El nombre del contexto se coloca entre [ ] todo lo que


vaya debajo será parte del contexto hasta el llegar al
siguiente [ ]. Por ejemplo para determinar el
contexto salida: [salida]

Es posible incluir un contexto dentro de otro para esto


utilizamos include.
[salida]

[local]
include => salida
Plan de Discado

Extensiones: una extensión es una lista de


instrucciones que Asterisk ejecutará disparadas
por una llamada entrante o por dígitos marcados
en un canal.

Prioridades: cada extensión ejecuta múltiples


pasos las prioridades indican el orden en que se
ejecutarán.
Plan de Discado

Aplicaciones: las aplicaciones ejecutan acciones


especificas en un canal, tales como: contestar
un canal, tocar un sonido, espiar un canal,
colgar un canal.
Ejm:
- Answer()
- Hangup()
Aplicaciones

Dial – Intenta establecer una nueva conexión con un


canal y lo enlaza con el canal que está iniciando la
llamada.
Presenta la siguiente sintaxis:
• Dial(type/identifier, timeout, options, URL)

• Dial(type1/identifier1[&type2/identifier2[&type3/ide
ntifier3... ] ], timeout, options, URL)
Para timbrar varios canales al mismo tiempo se colocan
varias líneas del tipo type/identifier separadas por ´&´.
Aplicaciones

Answer – Responde un canal que está timbrando.


La sintaxis es la siguiente:
answer([delay])

Hangup – cuelga incondicionalmente un canal.


La sintaxis es la siguiente:
hangup()
Aplicaciones

Playback – toca el archivo especificado (se debe


omitir la extensión del archivo). Playback
terminará de tocar el archivo de sonido y luego
devolverá el control al plan de discado.

La sintaxis es la siguiente:
Playback(filename,options...)
Plan de Discado

Ejemplo de un Plan de Discado:


[incoming]
exten => 1001,1,Answer()
exten => 1001,2,Playback(bienvenida.wav)
exten => 1001,3,Hangup()

exten => 1002,1,Dial(SIP/1002,10)


exten => 1002,3,Hangup()
Tema 04
Interconexión de
Servidores Asterisk
Concepto de Troncal

Una troncal es una línea que puede ser utilizada


para hacer una llamada hacia fuera o para
recibir llamadas desde fuera del servidor
Asterisk.

Ejm:
- La línea telefónica que viene de la PSTN podemos
usarla como troncal.
- Una cuenta SIP con un proveedor de telefonía IP.
Protocolo IAX2

El protocolo IAX2 fue creado por Mark


Spencer para la señalización de VoIP en
Asterisk.

El protocolo crea sesiones internas y dichas


sesiones pueden utilizar cualquier CODEC
que pueda transmitir voz o vídeo.
Protocolo IAX2

Operación de IAX2
IAX es un protocolo para medios y señalización
“peer to peer”, su señalización es parecida a la
de SIP.
Nomenclatura de canales IAX2

La sintaxis para nombrar canales IAX2 es la


siguiente.
Canales de salida:
IAX/[<user>[:<secret>]@]<peer>[:<portno>][/<exten
>[@<context>][/<options>]]

Ejm:
IAX/mark:asdf@myserver/6275@default
Nomenclatura de canales IAX2

Canales de entrada:
IAX[[<username>@]<host>]/<callno>

Ejm:
IAX[mark@192.168.0.1]/14
Interconectando 2 Asterisk

• La conexión de 2 servidores asterisk puede ser


hecha utilizando SIP o IAX2.

• La ventaja de usar IAX2 radica en que utilizando


el modo “trunking” es posible enviar varias
conversaciones de voz utilizando una sola
cabecera.
Interconectando 2 Asterisk

El archivo iax2.conf está formado por secciones


empezaremos por la configuración de las opciones
globales.

[general]
bindport=4569
bindaddr=192.168.0.1
bandwidth=low
jitterbuffer=yes
register => rgonzales:123456@192.168.1.107
Interconectando 2 Asterisk

Configurando las entidades


[trujillo]
type=friend
host=dynamic
trunk=yes
secret=welcome
context=incoming
deny=0.0.0.0/0.0.0.0
permit=192.168.1.107/255.255.255.2
Configurando el Plan de discado

En el plan de discado podemos ingresar una


extensión como sigue:

[toTrujillo]
exten=>9001,1,Dial(iax2/trujillo/${exten})
Probando la configuración

Una vez configurado debemos recargar la


configuración de asterisk.
• CLI>reload

Para comprobar los canales IAX:


• iax show peers.
• iax show channels.
Resumen de la Unidad

Asterisk actúa como un ____ to Back User Agent SIP, de tal forma
que es posible que detecte el envío de tonos durante la
conversación para realizar acciones.
La configuración de dispositivos ___ la hacemos a través del archivo
/etc/asterisk/sip.conf, mientras que la configuración de las
extensiones se realiza en el archivo /etc/asterisk/extensions.conf.
El protocolo IAX2 puede funcionar en modo trunking y permitir el
transporte de _______ de varias comunicaciones de voz utilizando
una única cabecera.
la interconexión de servidores asterisk se hace de preferencia
utilizando el protocolo IAX2 y se configura en /etc/asterisk/iax2.conf
Unidad 03
Configurando Teléfonos
Analógicos
Introducción

• Aunque la telefonía IP nos ofrece grandes


ventajas, todavía no se ha dejado de lado
a la telefonía tradicional.
• En esta unidad veremos como configurar
tarjetas digium para agregar teléfonos
analógicos a nuestra red IP, y como
integrarlos en el Plan de Discado.
Objetivos

• Configurar interfases FXS en tarjetas


Digium TDM.
• Configurar teléfonos analógicos en el
servidor Asterisk.
• Implementar una red hibrida con
teléfonos analogías y teléfonos SIP.
Tema 01
Interfases FXS / FXO
FXS / FXO

• Las interfases analógicas FXS y FXO proveen


señalización en el bucle de abonado. Entre los teléfonos
y la central telefónica.
• En telefonía IP es importante reconocer la diferencia de
estas interfases para poder conectar los dispositivos a
los puertos correctos.
Procedimiento de llamada

• FXO Descuelga el teléfono


Envía los números DTMF

Descuelga el teléfono
para atender la llamada
Detecta el voltaje de timbrado.
Procedimiento de llamada

Descuelga el teléfono
FXS

Detecta la corriente de
descolgado.
Recibe los dígitos DTMF.
Señalización de Abonado

La señalización entre le abonado y la central permite


reconocer cuando se ha descolgado el teléfono para
hacer una llamada y recibamos tono de línea. Entre las
principales tenemos:

• Loop start.
• Ground Start.
• Kewl Start.
Tema 02
Configurando Tarjetas
Digium TDM
Tarjeta TDM400P

Es una tarjeta Digium que soporta hasta 4


módulos donde podemos colocar interfase FXS
y/o FXO.
Módulos FXS / FXO

El módulo s110m de color


verde provee un puerto
con señalización FXS.

El módulo x100m de color


rojo provee un puerto
con señalización FXO.
Zaptel.conf

Zaptel.conf se ubica en la carpeta /etc/ a


diferencia del resto de archivos de
configuración. Aquí se configura el hardware
zaptel como son las tarjetas TDM400P.

Este archivo es leído por el programa ztcfg para


la configuración de los drivers.
Zaptel.conf

La señalización FXS / FXO en el zaptel.conf está


dada por las siguientes opciones.
• fxols – indica señalización FXO loop-start
• fxogs – indica señalización FXO ground-start
• fxoks – indica señalización FXO kewl-start

• fxsls – indica señalización FXS loop-start


• fxsgs – indica señalización FXS ground-start
• fxsks – indica señalización FXS kewl-start
Zaptel.conf

Asumimos que tenemos una tarjeta TDM400P con 2


módulos FXS en los canales 1 y 2; y 2 módulos FXO
en los canales 3 y 4. El archivo de configuración
/etc/zaptel.conf quedaría de la siguiente manera:

fxoks=1,2
fxsks=3,4
loadzone = fr
defaultzone = fr
Cargando los módulos

Para cargar los módulos se deben ejecutar los


siguientes comandos en el shell de Linux:

#modprobe wctdm
#ztcfg -vv
Zapata.conf

Configurando y cargando el módulo zaptel lo


tenemos disponible para que cualquier
aplicación haga uso de él. Para que Asterisk
pueda utilizarlo es necesario que configuremos
el archivo /etc/asterisk/zapata.conf.

Aquí se configuran que canales de la tarjeta


digium y como serán utilizados por asterisk por
el módulo zap_channel.
Ejemplo de Zapata.conf

[channels]
usecallerid=yes
hidecallerid=yes
callwaiting=yes
threewaycalling=yes
transfer=yes
echocancel=yes
echocancelwhenbridged=yes
rxgain=0.0
txgain=0.0
Zapata.conf

Un ejemplo de la configuración de los canales es el


siguiente:
group 1
signalling=fxo_ks
language=en
context=reception
channel => 1

signalling=fxo_ks
language=fr
context=sales
channel => 2
Tema 03
Implementando el plan de
Discado
Nomenclatura de canales ZAP

La sintaxis para nombrar canales ZAP es la


siguiente.
Canales de salida:
Zap/[g]<identifier>[c][r<cadence>]

Ejm:
Zap/1
Zap/g1
Nomenclatura de canales ZAP

La sintaxis para nombrar canales ZAP es la


siguiente.
Canales de entrada:
Zap/<channel>-<instance>

Ejm:
Zap/1-1
Zap/3-2
Plan de Discado

La configuración del plan de discado para los canal


es ZAP FXS 1 y 2 es la siguiente:

[local]
exten => 2001,1,Dial(ZAP/1,20,trT)
exten => 2001,2,Hangup()
exten => 2002,1,Dial(ZAP/2,20,trT)
exten => 2002,2,Hangup()
Aplicaciones

Record – Graba la voz que ingresa a un canal.

La sintaxis es la siguiente:
Record(filename.format[|silence][|mxduration][|option])
Aplicaciones

Background – tocara la lista de archivos


especificada mientras espera que se ingrese un
número de extensión.

La sintaxis es la siguiente:
Background(filename1[&filename2...][|options[|langover
ride][|context]])
Aplicaciones

Wait – espera el número de segundos


especificados.
La sintaxis es la siguiente:
wait(seconds)
Aplicaciones

WaitExten – espera a que se ingrese una nueva


extensión, dándole la oportunidad al que llama
de marcar una nueva extensión.

La sintaxis es la siguiente:
WaitExten(seconds)
WaitExten([seconds][|options])
Aplicaciones

Echo – Devuelve el audio de regreso al mismo


canal que lo ha generado. La ejecución de esta
aplicación termina cuando el usuario presiona la
tecla # o cuelga el teléfono.

La sintaxis es la siguiente:
Echo()
Resumen

• La configuración del hardware Digium se hace en el


archivo /etc/zaptel.conf, aquí se definen principalmente
los ______ configurados y la señalización.
• La configuración de los canales analógicos del módulo
ZAP_Channel en asterisk se hace en el archivo
/etc/asterisk/zapata.conf aquí se definen la señalización
y los parámetros que utilizará asterisk para administrar
dichos canales.
• En el plan de discado se agregan los canales analógicos
utilizando el formato _____, que indica el tipo de canal y
el número de canal que estamos utilizando.
Unidad 04
Configurando Troncales
Analógicas/Digitales
Introducción

• Nuestro servidor de comunicaciones ya está


funcionando con teléfonos SIP y teléfonos
analógicos. Pero solo nos permite llamadas entre
los teléfonos locales y los teléfonos de otro
servidor asterisk.
• Ahora necesitamos comunicarnos con el exterior
para eso deberemos conectarnos a la PSTN,
para esto utilizaremos hardware Digium y
configuraremos asterisk para que utilice líneas
analógicas y digitales.
Objetivos

• Configurar líneas analogías FXO para


comunicarnos con la PSTN.
• Aprender el concepto de E1.
• Configurar líneas digitales E1 para comunicarnos
con la PSTN.
• Configurar el plan de discado para atender
llamadas de la PSTN.
Tema 01
Troncales Analógicas
Líneas Analógicas

• Nuestro proveedor de telefonía tradicional


generalmente nos da un acceso a la PSTN
a través del bucle de abonado utilizando
líneas analógicas que van a nuestros
teléfonos (POTS).
• Para conectarnos a estas líneas utilizamos
interfases FXO.
Zaptel.conf

Asumimos que tenemos una tarjeta TDM400P con 2


módulos FXS en los canales 1 y 2; y 2 módulos FXO
en los canales 3 y 4. El archivo de configuración
/etc/zaptel.conf quedaría de la siguiente manera:

fxoks=1,2
fxsks=3,4
loadzone = fr
defaultzone = fr
Cargando los módulos

Para cargar los módulos se deben ejecutar los


siguientes comandos en el shell de Linux:

#modprobe wctdm
#ztcfg -vv
Ejemplo de Zapata.conf

[channels]
usecallerid=yes
hidecallerid=yes
callwaiting=yes
threewaycalling=yes
transfer=yes
echocancel=yes
echocancelwhenbridged=yes
rxgain=0.0
txgain=0.0
Zapata.conf

Un ejemplo de la configuración de los canales FXO es el


siguiente:
group=2
echocancel=yes
signalling=fxs_ks
context=entrante
busydetect=yes
busycount=6
answeronpolarityswitch=yes
hanguponpolarityswitch=yes
callprogress=yes
progzone= fr
channel=3-4
Tema 02
Troncales Digitales
Líneas Digitales E1

• Cuando necesitamos un número mayor de líneas


telefónicas, el proveedor de telefonía puede
entregar canales digitales, en nuestro caso E1´s.

• EL E1 entrega 2Mbps con señalización CAS o


puede utilizar señalización CCS del estándar
ISDN PRI.
Líneas Digitales E1

• Una trama E1 tiene 32 canales de 64 Kbps cada


uno, en telefonía utilizamos el canal „0‟ (cero) para
sincronía y el canal ‟16‟ para señalización. Quedando
‟30‟ canales disponibles para transmitir voz.

8 Bits 8 Bits 8 Bits 8 Bits 8 Bits 8 Bits 8 Bits

CANAL 00 1
1 -- 15
15 16
16 17
17 --- 30
30 31
31
-- -

Sincronía Información Señalización Información


y control
Canales ISDN PRI

• Conocidos comúnmente como primarios,


están formados por un E1. Utilizan una
configuración 30B + D, es decir 30 canales
de información 1 canal de señalización.

30 canales B
PRI B

D 1 canal D
Zaptel.conf

Asumimos que tenemos una tarjeta TE110 con


un canal E1. El archivo de configuración
/etc/zaptel.conf quedaría de la siguiente
manera:
span=1,1,0,ccs,hdb3
bchan=1-15
bchan=17-31
dchan=16
Cargando los módulos

Para cargar los módulos se deben ejecutar los


siguientes comandos en el shell de Linux:

#modprobe wctlxxp
#ztcfg -vv
Zapata.conf

Un ejemplo de la configuración de los canales E1 es el


siguiente:

group=3
switchtype=euroisdn
signalling=pri_cpe
channel=>1-15;17-31
Probando la configuración

Después de hacer un reload en la Línea de


Comandos de Asterisk. Utilizamos estos
comandos:
zap show status – muestra el estatus de las
placas zaptel.
zap show channels – muestra los canales ZAP
configurados.
pri show span – verifica los datos del enlace PRI.
Tema 03
Plan de Discado
Extensiones Especiales

Asterisk utiliza algunos nombres para extensiones


que cumplen propósitos especiales.
i : Invalid
s : Start
h : Hangup
t : Timeout
T : AbsoluteTimeout
Patrones de Extensiones

Para mejorar las características del plan de discado es


posible utilizar patrones de extensiones, todos los
patrones deben empezar con “_”, aquí ponemos algunos
ejemplos:

_9xxxxx -> cualquier extensión de 6 dígitos que


empiece con el número 9.
_7. -> cualquier extensión que empiece con 7.
_56xxx5 -> extensiones de 5 dígitos que comiencen
con 56 y terminen en 5.
Plan de Discado

Cuando utilizamos los canales FXO para recibir


llamadas desde el exterior, en el plan de discado
utilizamos la siguiente configuración:

[entrante]
exten => s,1,Answer
exten => s,2,Dial(SIP/5001,20,trT)
exten => s,3,Hangup
Plan de Discado

Cuando utilizamos los canales FXO para iniciar


llamadas al exterior, en el plan de discado
utilizamos la siguiente configuración:

[salidas]
exten => _9xxxxxxx,1,Dial(ZAP/3/${EXTEN:1}),20,trT)
exten => _9xxxxxxx,2,Hangup
Plan de Discado

Adicionalmente si deseamos que al hacer una


llamada al exterior y que ésta sea tomada por
cualquiera de las líneas disponibles, entonces
debemos utilizar el concepto de grupo:

[salidas]
exten => _9xxxxxxx,1,Dial(ZAP/g2/${EXTEN:1}),20,trT)
exten => _9xxxxxxx,2,Hangup
Resumen

• Las líneas analógicas FXO se configuran en los


archivos /etc/zaptel.conf y /etc/asterisk/zapata.conf
• Asterisk puede utilizar líneas digitales con canales
___ para manejar números grandes de líneas
telefónicas.
• Las líneas digitales E1 se configuran en los archivos
/etc/zaptel.conf y /etc/asterisk/zapata.conf
• El plan de discado utiliza extensiones especiales
para cubrir características especiales en el plan de
_______.
Unidad 05
Variables y Macros en el
Plan de Discado
Introducción

• En esta unidad explotaremos mucho más las


capacidades del plan de discado, aprovechando
las aplicaciones incluidas en asterisk.

• Utilizaremos variables y macros para realizar


tareas repetitivas en el plan de discado, además
de incluir la ejecución de comandos del shell de
linux desde el plan de discado, que nos da una
poderosa herramienta de programación.
Objetivos

• Utilizar aplicaciones internas de asterisk en el


plan de discado.
• Aplicar el uso de variables dentro del plan de
discado.
• Programar macros en el plan de discado.
• Utilizar comandos del shell de Linux.
Tema 01
Uso de Variables y
Expresiones
Variables en asterisk

• Asterisk puede hacer uso de variables globales y


variables específicas por cada canal para ser
utilizadas como argumentos en las aplicaciones
que ejecutamos en el plan de discado.

• Para expresar una variable en el plan de discado


utilizamos la siguiente notación:
${nombre_variable}
Variables en asterisk

Existen 3 tipos de variables:

- Variables globales
- Variables de canal
- Variables de entorno
[globals]

• Esta sección del plan de discado es utilizada


para definir las variables globales y sus valores
iniciales.

• Ejm:
[globals]
OPERADORA=sip/2001
SALIDAS=zap/g3
IVRMSG=mensaje-ivr1
Variables de Entorno

• El acceso a las variables de entorno se realiza


con la siguiente sintaxis:
${ENV(nombre_variable)}

• Ejm:
${ENV(ASTERISK_PROMPT)} – indica el prompt
actual en al CLI de asterisk.
${ENV(RECORDED_FILE)} – el nombre del archivo
grabado por última vez con el comando record.
Variables Pre-Definidas

• Asterisk define variables predefinidas que


podemos utilizar en el plan de discado. Estas
pueden ser:
– Variables de canal predefinidas.
– Variables específicas para aplicaciones.
– Variables específicas para macros.
Variables Pre-Definidas

Variables de Canal:
${CDR(accountcode)}: Código de cuenta si está
especificado.
${CALLERID(all)}:El CallerID name / number
utilizado actualmente.
${CALLERID(name)}: El nombre para el callerID
utilizado actualmente.
${CALLERID(num)}: El número para el callerID
utilizado actualmente.
Variables Pre-Definidas

Variables específicas de Aplicaciones:

ChanIsAvail – devuelve ${AVAILCHAN}: el primer


canal disponible.
Dial – devuelve ${DIALSTATUS}: el estatus del
último intento de discado.
Dial – toma la entrada de
${TRANSFER_CONTEXT}: si esta variable existe,
cuando una trasferencia(#) es ejecutada ésta va a
la extensión escogida en ese contexto.
Variables Pre-Definidas

Variables específicas de Macros:

${ARG1}: El primer argumento pasado a la macro.


${ARG2}: El segundo argumento pasado a la macro
(y así sucesivamente).
${MACRO_CONTEXT}: El contexto de la extensión
que inició esta macro.
${MACRO_EXTEN}: la extensión que inició esta
macro.
Aplicación: Set( )

• Asigna un valor a una variable.

• Sintaxis:
Set(variablename=value[|variable2=value2][|options])

• Esta función puede utilizarse para signar valores


a las variables de canal o a las variables globales
desde el plan de discado.
Expresiones

• Las expresiones combinan variables, valores y


operadores para entregar un resultado que
puede ser evaluado por otra aplicación.

• Sintaxis:
$[expresión]
Expresiones

Operadores Booleanos:

expr1 | expr2 : el operador OR.

expr1 & expr2 : el operador AND.


Expresiones

Operadores Matemáticos:

expr1 + expr2 : el operador suma.


expr1 - expr2 : el operador resta.
expr1 * expr2 : el operador multiplicación.
expr1 / expr2 : el operador división.
expr1 % expr2 : el operador residuo.
Expresiones

Ejemplo:
$[${valor1}+500] ; suma 500 a la variable valor1.

exten => 1001,1,Set(TEST=$[${valor1}-10])


Le asigna el valor de la expresión a la variable
TEST.
Tema 02
Uso de Aplicaciones
Condicionales
[general]

• El plan de discado inicia con esta sección aquí


colocamos opciones de configuración general.

• Ejm:
[general]
static=yes
writeprotect=yes
autofallthrough=yes
clearglobalvars=no
priorityjumping=no
Aplicación Goto

• Salta a un contexto, extensión y/o prioridad en


particular.

• Sintaxis:
Goto([[context,]extension,]priority)

• No deben insertarse espacios en blanco entre las


comas.
Aplicación Goto

Ejemplos:
exten => 1,1,Goto(submenu,s,1)
Salta al contexto “submenu”, extensión “s” y
prioridad “1”.

exten => 600,4,Goto(s,6)


Salta a la extensión “s”, prioridad “6”.
Aplicación GotoIf

• Implementa un goto pero condicional.

• Sintaxis:
GotoIf(condition?label1[:label2])

• Salta a label1 si la condición es verdadera o a


label2 si la condición es falsa.
Aplicación GotoIf

[testing]
exten => 2001,1,GotoIf($["${CALLERID(num)}" = “3001"]?3)
exten => 2001,2,GotoIf($["${CALLERID(num)}" != "3002"]?7:5)
exten => 2001,3,Dial(SIP/4001,15,Trt)
exten => 2001,4,Hangup
exten => 2001,5,Dial(SIP/4002,15,Trt)
exten => 2001,6,Hangup
exten => 2001,7,MusicOnHold(default)
Tema 03
Creación de Macros
Macros

• Las macros son un conjunto de aplicaciones que


serán ejecutadas en secuencia; siempre deben
iniciarse en la extensión s y la prioridad 1.

• Las macros son muy utilizadas para evitar


repetición de código en la construcción de un
plan de discado, facilitando el mantenimiento y
la creación de nuevas extensiones que realicen
pasos comunes.
Aplicación: macro

• Permite la ejecución de una macro, utiliza el


contexto macro-<macroname>, y salta a la
extensión s de dicho contexto ejecutando paso a
paso las prioridades indicadas, luego regresará a
la siguiente prioridad de donde fue llamado.

• Sintaxis:
Macro(macroname,arg1,arg2,…)
Ejemplo

• Desde el plan de discado llamamos a la macro


test:
exten => 1001,1,Macro(test,1001,SIP/2001)

• Donde los argumentos son:


${ARG1} = 1001
${ARG2} = SIP/2001
Ejemplo

[macro-test]
exten => s,1,Dial(${ARG2},20)
exten => s,2,Goto(s-${DIALSTATUS},1)
exten => s-NOANSWER,1,Voicemail(u${ARG1})
exten => s-NOANSWER,2,Goto(default,s,1)
exten => s-BUSY,1,Voicemail(b${ARG1})
exten => s-BUSY,2,Goto(default,s,1)
exten => _s-.,1,Goto(s-NOANSWER,1)
exten => a,1,VoicemailMain(${ARG1})
Tema 04
Ejecutando Comandos del
Shell de Linux
EL Shell de Linux

• El interprete de comandos o shell de Linux


es una poderosa herramienta para
ejecutar tareas en el servidor.

• Asterisk nos permite aprovechar esta


herramienta para poder lanzar la ejecución
de comandos del shell desde el plan de
discado.
Aplicación System()

• Ejecuta un comando del sistema Linux.

• Sintaxis:
System(comando arg1 arg2 )
Ejemplo

Haciendo un log de extensiones marcadas:


exten => s,1,system(echo ${EXTEN} >> /var/log/calls.log)

Reiniciando asterisk:
exten => 2001,1,Playback(asterisk-restart-msg)
exten => 2001,2,Wait(1)
exten => 2001,3,System(“service asterisk restart”)
exten => 2001,4,Hangup
Resumen de la Unidad

• Desde el plan de discado es posible utilizar variables y


macros que faciliten la creación de extensión,
reduciendo el tiempo de administración y la cantidad de
líneas de programación.
• Además de aumentar la posibilidades de configuración lo
que nos permite planes de discado más complejos y con
características potentes y variadas.

Vous aimerez peut-être aussi