You are on page 1of 16

Mini-Howto:

Como instalar Asterisk 1.2 estable desde código fuente

Versión 1.0 17/11/2005

Autores: Juan Carlos Valero / Xavier Jimenez

Capa Tres Soluciones Tecnológicas S.L.


C/. Pintor Fortuny, 8, 3º 2ª
08120 La Llagosta
Barcelona – España
Telf./Fax: +34935742427
http://www.capatres.com
Este documento está protegido por la licencia Creative Commons (Commons Deed)

Reconocimiento-CompartirIgual 2.0
Usted es libre de:
● copiar, distribuir y comunicar públicamente la obra
● hacer obras derivadas
● hacer un uso comercial de esta obra
Bajo las condiciones siguientes:

Reconocimiento. Debe reconocer y citar al autor


original.

Compartir bajo la misma licencia. Si altera o


transforma esta obra, o genera una obra derivada, sólo
puede distribuir la obra generada bajo una licencia
idéntica a ésta.

● Al reutilizar o distribuir la obra, tiene que dejar bien claro los términos de la
licencia de esta obra.
● Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del titular
de los derechos de autor

Los derechos derivados de usos legítimos u otras limitaciones no se ven afectados por
lo anterior.
Esto es un resumen legible por humanos del texto legal (la licencia completa).
(http://creativecommons.org/licenses/by-sa/2.0/legalcode)
Advertencia
(http://creativecommons.org/licenses/disclaimer-popup?lang=es)
Este documento no pretende en ningún momento ser la “guía definitiva” de como instalar/compilar
Asterisk sobre un servidor Linux. Tan solo recoje las experiencias que hemos tenido a lo largo de las
últimas semanas mientras aparecían las versiones “beta” y “Release Candidate” de Asterisk 1.2. En cierto
modo es nuestro manual de trabajo con un par de retoques para hacerlo más leible. Hemos incluído
algunas configuraciones-tipo y algunas cosas que creemos que son interesantes. Nuestro propósito es
facilitar un poco el choque inicial de encontrarse con Asterisk.

Espero os sea de utilidad a todos y os evite quebraderos de cabeza.

Juan Carlos Valero / Xavier Jiménez. La Llagosta 17 de Septiembre del 2005.


Compilación de Asterisk 1.2
Para instalar Asterisk 1.2 hemos cojido como base un sistema basado en CentOS Linux ( clon de RedHat
Enterprise Linux). No hay a priori ningún motivo para que lo aquí nombrado no funcione sobre otras
versiones distintas de Linux. No obstante, pueden variar los nombres de librerias (sobre todo de los
paquetes precompilados) por lo cual se recomienda prudencia a la hora de desplegar este manual sobre
versiones distintas de Linux.

1.0.- Descargar el fuente

Descargaremos todos los fuentes de la última versión estable de la rama 1.2 de Asterisk desde la web del
proyecto. En este documento usaremos el directorio /asterisk-srcs como el contenedor de todos los
fuentes que necesitamos. (asterisk, zaptel, libpri, addons y sounds)

URL de descarga:

http://www.asterisk.org/

ftp://ftp.asterisk.org

Asterisk 1.2

http://ftp.digium.com/pub/asterisk/asterisk1.2.0.tar.gz

Zaptel 1.2

http://ftp.digium.com/pub/zaptel/zaptel1.2.0.tar.gz

Libpri 1.2

http://ftp.digium.com/pub/libpri/libpri1.2.0.tar.gz

Addons 1.2

http://ftp.digium.com/pub/asterisk/asteriskaddons1.2.0.tar.gz

Sounds 1.2

http://ftp.digium.com/pub/asterisk/asterisksounds1.2.0.tar.gz

Voces en Español 0.3

http://www.capatres.com/asterisksonidoses0.3.tar.gz

1.1 .- Prerequisitos

Asegurarse de tener instalados los siguientes paquetes:

libxml2
libtiff
libtiff-devel
mysql-server
php
php-mysql
openssl
openssl-devel
httpd
mysql
mysql-devel
kernel-source
perl
perl-CPAN
cvs
bison
ncurses-devel
audiofile-devel
lame
ncurses-devel
bison
cpp
glibc-devel
glibc-headers
glibc-kernheaders
openssl-devel

1.2.- Verificar que las tarjetas son correctamente detectadas

No vamos a discutir aquí la instalación de una X100p por los problemas de eco/latencias/ruidos y en
general la baja calidad del producto. En su lugar comentaremos como configurar una A400P/TDM400.

Hacer un lspci para ver si la tarjeta esta presente:

00:08.0 Communication controller: Unknown device e159:0001 <una a400p/TDM

Establecer variables de compilacion

Grabar en /etc/profile.d/flags.sh:

Si es un Athlon XP:

CHOST="i686­pc­linux­gnu"
CFLAGS="­march=athlon­xp ­O3 ­pipe ­fomit­frame­pointer"
CXXFLAGS="­march=athlon­xp ­O3 ­pipe ­fomit­frame­pointer"
export CHOST CFLAGS CXXFLAGS

Si es un Pentium 3:

CHOST="i686­pc­linux­gnu"
CFLAGS="­march=pentium3 ­O3 ­pipe ­fomit­frame­pointer"
CXXFLAGS="­march=pentium3 ­O3 ­pipe ­fomit­frame­pointer"
export CHOST CFLAGS CXXFLAGS

Si es un Pentium IV:

CHOST="i686­pc­linux­gnu"
CFLAGS="­march=pentium4 ­O3 ­pipe ­fomit­frame­pointer"
CXXFLAGS="­march=pentium4 ­O3 ­pipe ­fomit­frame­pointer"
export CHOST CFLAGS CXXFLAGS

Y darle permisos de ejecucion.

Cerrar sesion actual y abrir una nueva para recargar las variables.

1.3.- Descomprimir los fuentes descargados

En una linea 8-):

$ for i in *; do tar zxvf $i; done
1.4.- Compilar driver zaptel

Comenzaremos por el driver que va a controlar la tarjeta A400P/TDM400B. Entraremos por tanto al
directorio zaptel y ejecutaremos:

make linux26
make install 
make config 

Debe acabar la compilacion sin errores, aunque puede aparecer algun warning. De resultas de esto se
habra instalado en /etc el fichero zaptel.conf con una configuracion base que editaremos ahora. Para
nuestra configuracion, por ejemplo, que incluye un único modulo FXO en la posicion 4, nuestro fichero de
configuracion es:

#
#
# Fichero de configuracion zaptel.conf
#
# Este fichero es leido por la utilidad de configuracioin ztcfg
#
#

# definimos la zona de tonos de españa
loadzone = es
defaultzone= es
# Usamos Kewlstart FXS aunque no es significativo para la deteccion de colgado
# la señalizacion es al reves. las tarjetas FXS llevan FXO y las FXO llevan FXS
# nuestro modulo esta en la posicion 4
fxsks=4

En /etc/udev/rules.d/50-udev.rules añadir al final la siguiente regla (para la creación automática de los


dispositivos y la correcta asignación de permisos):

# Seccion para el dispositivo zaptel 
KERNEL="zapctl",     NAME="zap/ctl"
KERNEL="zaptimer",   NAME="zap/timer"
KERNEL="zapchannel", NAME="zap/channel"
KERNEL="zappseudo",  NAME="zap/pseudo"
KERNEL="zap[09]*",  NAME="zap/%n"

Añadir en /etc/udev/permissions.d/50-udev.permissions la siguiente línea al final, para la asignación de


permisos sobre el dispositivo.

# zaptel devices – si asterisk corre como root 
zap/*:root:root:05700

Ojo: Si asterisk va a correr con un usuario distinto de root, usar las líneas que mostramos a continuación:

# zaptel devices – si asterisk corre con un usuario distinto de root 
# (asterisk en este ejemplo)
zap/*:asterisk:asterisk:660

Salvar los cambios. Pasaremos a la instalacion del siguiente bloque de código.

1.5.- Compilando e instalando libpri

Entramos al directorio y ejecutamos:

make 
make install 
No deben producirse errores.

1.6.- Compilacion de asterisk

Entramos al directorio y ejecutamos:

make mpg123

Con esto se compila la version de mpg123 adecuada para asterisk. Tras la compilacion, entrar al directorio
mpg123 y ejecutar un make install.

1.6.1.- Parchear Asterisk para la detección de colgado en España

Volvemos al directorio de asterisk

Descargamos y copiamos el parche para la detección de colgado en la línea telefónica española.

ulrs:

http://bugs.digium.com/view.php?id=3874

Parcheamos:

patch  channels/can_zap.c < asterisk12polarity3.diff

Atencion: tras la instalación es preciso retocar el fichero /etc/asterisk/zapata.conf para que contenga las
siguientes líneas:

[channels]
signalling=fxs_ks
context=el_contexto_a_donde_pertenezca
busydetect=no
answeronpolarityswitch=yes ;;; <­­­ estas son
hanguponpolarityswitch=yes ;;; <­­­ estas son
callprogress=no
progzone=es
channel => 4 ; <­­ el canal ZAP que sea.

1.6.2.- Compilación Asterisk e instalación

A continuación realizamos la compilación y la instalación, que deben de terminar sin errores.

make
make install
make samples
make config 

Instalamos asterisk-sounds, desde el directorio del fuente

make install

Por ultimo compilamos e instalamos los addons de asterisk, desde el directorio con los fuentes de asterisk-
addons

make 
make install

2.- Post-Instalación

Primero de todo verificaremos que Asterisk arranca correctamente invocandolo desde linea de comando:
asterisk vvvvvvvvvvvvvvvvvc

Y despues, una vez en la consola, podemos utilizar la orden:

asterisk*CLI> show version

Asterisk 1.2.0 built by root @ asterisk.capatres.com on a i686 running Linux on 
20051117 10:35:51 UTC

Por lo tanto es correcta la instalación. Pasaremos ahora a añadir algunas cosas necesarias y a explicar
pasos de configuración.

2.1.- Instalar sonidos en Español

Es simple. Desde el directorio donde antes hemos descomprimido el fichero de sonidos en Español, basta
con copiar el directorio es a la ruta /var/lib/asterisk/sounds. Adicionalmente renombrar
/var/lib/asterisk/sounds/digits a digits.old y crear un enlace simbólico:

ln ­s /var/lib/asterisk/sounds/es/digits /var/lib/asterisk/sounds/digits

Esto es preciso para solucionar un problema que tienen algunas aplicaciones a la hora de leer la variable
del idioma.

2.2.- Instalación codecs g723 y g729

Estos codecs solo son precisos cuando se deba comunicar obligatoriamente con un producto que lo soporte
(en el ejemplo aqui mostrado es PeopleCall quien lo requiere).

Atención: La instalación de estos codecs requiere una licencia que puede ser conseguida sin cargo a través
de Intel si es para uso personal, a través de la página web:

http://www.intel.com/software/products/ipp/noncom.htm

Los codecs ya compilados para asterisk estan en:

http://kvin.lv/pub/Linux/Asterisk/

Las licencias pueden ser adquiridas a Digium:

http://www.digium.com/index.php?menu=asterisk_g729

Descargar de la página mostrada (http://kvin.lv/pub/Linux/Asterisk/) los ficheros adecuados a nuestro


sistema, teniendo en cuenta que la nomenclatura es:

codec_g72xCOMPILERCPUTYPE.so

Por ejemplo para Athlon XP:

wget http://kvin.lv/pub/Linux/Asterisk/codec_g723gccathlonsse.so

wget http://kvin.lv/pub/Linux/Asterisk/codec_g729gccathlonsse.so

Una vez descargados copiarlos al directorio:

/usr/lib/asterisk/modules

Renombrarlos para simplificar la configuracion posterior:

mv codec_g723gccathlonsse.so codec_g723.so
mv codec_g729gccathlonsse.so codec_g729.so

Realizaremos la configuración de estos codecs con la configuración de asterisk.

Configuración de Asterisk
Asterisk es un producto complejo de configurar. Nosotros aquí únicamente vamos a detallar una
configuración simple consistente en:

1. Instalacion de una tarjeta A400P/TDM400B con 1 solo modulo FXO.


2. Configuración de una pasarela de Voz sobre IP (VoIP) a través de un proveedor español como es
PeopleCall, con la posibilidad de recibir llamadas a través de un número telefónico convencional,
y originarlas tambien.
3. Configuración de una extensión SIP y dos extensiones IAX para su uso por software de VoIP.
Configuraremos tambien sus buzones de voz.

Para realizar estos pasos supondremos que poseemos un entorno de nombre capatres. Este será el
contexto utilizado (solo los dispositivos dentro de un mismo contexto pueden hablar entre ellos
inicialmente).

Es recomendable copiar los ficheros instalados por asterisk de configuración a unas copias y partir de
ficheros en blanco. Para ello copiaremos todos los fichero en /etc/asterisk/ a otra ubicación, creando en
los pasos siguientes los ficheros precisos en blanco.

Extensions.conf

El fichero /etc/asterisk/extensions.conf es el núcleo del sistema. Definiremos aquí las extensiones que
existen y las líneas de entrada y salida, así como los buzones de voz. Ponemos a continuación el fichero de
nuestro entorno de pruebas con los comentarios pertinentes:

;
; fichero de configuracion de las extensiones de asterisk
; by Juan Carlos Valero para CapaTres
;

[default]
language = es    ; indicamos el languaje. Esto influye en los mensajes
                 ; de respuesta de voz. 

; contexto incoming
; es donde se reciben las llamadas y donde se da opcion a
; seleccionar el menu o escuchar textos

[incoming]
include=default
include=capatres

; la línea de entrada por defecto es “s”.
exten => s,1,Answer()     ; descolgamos
exten => s,2,Background(CAPATRES_bienvenido_capatres) ;reproducimos mensaje
exten => s,3,Hangup()     ; colgamos
exten => 1,1,Goto(capatres,100,1)  ; si mientras se escuchaba el mensaje pulsamos 1
                                   ; se nos envia al contexto capatres, extension 100
exten => 2,1,Goto(capatres,200,1)  ; si mientras se escucha el mensaje pulsamos 2
                                   ; se nos envia al contexto capatres, extension 200
exten => 3,1,Background(CAPATRES_explicacion_asterisk)  ; si se pulsa 3
                                                        ; se reproduce el fichero
exten => 0,1,Goto(incoming,s,1)   ; al final volvemos al principio

;##########################################################################
; contexto capatres
; la sintaxis es: extension, numero de orden a ejecutar (1), orden(Dial),
; extension real (IAX/numero extension), esperar 20 ms y ....
[capatres]
include = default
include = incoming
include = buzonvoz

exten => 100,1,Dial(IAX2/100,20,tr)  ; la extension 100 llama a un soft IAX2
exten => 100,2,VoiceMail,100         ; si no contesta a buzón de voz
exten => 100,102,VoiceMail,100       ; idem, con prioridad mas baja
exten => 200,1,Dial(IAX2/200,20,tr)  ; la extension 200 llama a un soft IAX2
exten => 200,2,VoiceMail,200         ; si no contesta a buzon de voz
exten => 200,102,VoiceMail,200       ; idem, con prioridad mas baja

; definimos una extension para escuchar la musica en espera
exten => 9000,1,Answer()
exten => 9000,2,WaitMusicOnHold(30)
exten => 9000,3,Hangup()
; y una extensión para hacer pruebas de eco
exten => 9001,1,Answer()
exten => 9001,2,Echo
exten => 9001,3,Hangup()

; definimos la salida de llamadas via peoplecall
; Primera prioridad declara el caller id, el _0. significa que marcando 0 y lo que
; sea se envia a peoplecall.

exten => _0.,1,SetCallerID,"123456"   ; 123456 es el numero de telef. asignado

; Segunda prioridad marca y ":1" en exten significa ignora el primer dígito
; que en este caso seria el 0.

exten => _0.,2,Dial(SIP/${EXTEN:1}@peoplecall,90,Ttr) 

; la linea anterior enlaza por la palabra peoplecall con la sección peoplecall
; del fichero sip.conf, que usa para establecer usuario y contraseña que
; pueden llamar.

[buzonvoz]
;
; el contexto buzonvoz sirve para que llamando al 123 se acceda al buzon de
; voz propio, pidiendo la contraseña
;

exten => 123,1,VoicemailMain(${CALLERIDNUM})
exten => 123,2,Hangup

Iax.conf

En el fichero iax.conf definimos las extensiones que usan el protocolo IAX para comunicarse:

;
; fichero de configuracion de extensiones IAX
; by Juan Carlos Valero para CapaTres
;

[general]
context = capatres   ; contexto por defecto
language=es
delayreject = yes
tos=0x18              ; indicamos que marque los paquetes para QoS
bandwidth=low         ; preferibles codecs con bajo consumo

; indicamos ahora los codecs a utilizar
allow=all                       ; lo mismo que bandwidth=high
; definimos las extensiones

[100]
type=friend
username=usuario_numero_uno
secret=contraseña
context=capatres
host=dynamic      ; se permite la conexion desde cualquier ip
mailbox = 100     ; su buzon de voz tiene el numero 100
callerid = "Juan Carlos Valero" <100>   ; el identificador de llamada

[200]
type=friend
username=usuario_numero_dos
secret=contraseña2
context=capatres
host=dynamic
permit=123.123.123.123/255.255.255.255  ; solo desde la ip 123.123.123.123
auth=md5,plain                          ; se permiten contraseñas en md5 y plano
mailbox = 200                           ; buzon de voz es el 200
callerid = "Xavier Jimenez" <200>       ; identificador de llamada

sip.conf

En el fichero SIP.CONF definimos tambien las extensiones que usan SIP como protocolo, y en este caso
definimos la conexión a PeopleCall ya que ellos utilizan SIP.


; Fichero de configuración de clientes SIP
; By Juan Carlos Valero para CapaTres
;

;contexto general
[general]
port =  5060                   ; puerto donde escucha asterisk
bindaddr = 0.0.0.0             ; en que ip escucha, asi es el todas
context = capatres             ; nombre del contexto
; codecs de audio
disallow=all              ; por defecto todos fuera
;allow=g729               ; en esta prueba NO usamos g729
allow=g723                ; permitimos g723
allow=gsm                ; permitimos gsm
language=es
useragent=Asterisk PBX CapaTres   ; identificador en los traces en modo debug
; indicamos el valor de Qos para prioritizar tráfico
tos=0x18
;definicion peoplecall para las llamadas salientes, no es necesaria para las
;entrantes

[peoplecall]
type=peer
host=sip.peoplecall.com
fromuser=aqui_el_id_asignado_como_login
fromdomain=sip.peoplecall.com
username=igual_que_en_fromuser
secret=el_password_asignado
dtmfmode=rfc2833

; ahora ponemos los telefonos SIP
;#################################################################
; primero definimos que tenemos un enlace a PeopleCall asociado a
; la extensiones “s”
;register => numero_telefono:contrasela@sip.peoplecall.com
register => 1234567890:12345678@sip.peoplecall.com

VoiceMail.conf

Vamos ahora a añadir los dos buzones de voz que hemos asociado a las extensiones 100 y 200. Para ello
editaremos el fichero voicemail.conf:

;
;
; fichero de configuracion del voicemail
; by Juan Carlos Valero para capatres
;
;

[general]
format=wav49|gsm|wav       ; formato de grabación del audio
attach=yes                 ; enviar mensajes de voz por correo electronico
fromstring="Centralita Asterisk de CapaTres"   ; texto del From:
emailsubject=[PBX] Recibido mensaje numero ${VM_MSGNUM} en su buzon de voz.
emailbody=\n\n\n***** Este es un mensaje automatico de la centralita de VoIp de *****\n*
****   Capa Tres Soluciones Tecnologicas, Sociedad Limitada *****\n\n\n\n\tTiene un mens
aje nuevo en su buzon de voz, con el numero ${VM_MSGNUM}, recibido desde el numero de te
lefono ${VM_CALLERID} el ${VM_DATE} . Dicho mensaje se adjunta a este email, pero no obst
ante Vd. debe de llamar a su buzon de voz y eliminarlo tras su escucha. Si no conoce como 
acceder a su buzon de voz, por favor contacte con el departamento al cargo.\n\n\t Gracia
s.\n\n\t Centralita automatica Asterisk.\n

[default]
; la sintaxis es:
; mailbox number => mailbox password, mailbox description, mailbox user
; email address

100 => 1234,usuario_1,usuario_1@capatres.com
200 => 1234,usuario_2,usuario_2@capatres.com

musiconhold.conf

El fichero musiconhold.conf es el responsible de la configuración de la música en espera, esa que suena


cuando uno es retenido y transferido a otro número de teléfono.

;
; Music on hold 
; by Juan Carlos Valero para Capatres
;

[classes]

default => quietmp3:/var/lib/asterisk/mohmp3

En el directorio /var/lib/asterisk/mohmp3 hay tres temas mp3 proporcionados con la distribución. Si se


desean otros pueden añadirse a ese directorio.

Es importante señalar que mpg321 NO funciona correctamente con Asterisk. Hay que utilizar mpg123.

Indications.conf

A fin de que se reconozca correctamente los tonos, editar el fichero indications.conf y añadir al final el
parrafo:

[es]
description = Spain
ringcadence = 1500,3000
dial = 425
busy = 425/200,0/200
ring = 425/1500,0/3000
congestion = 425/200,0/200,425/200,0/200,425/200,0/600
callwaiting = 425/175,0/175,425/175,0/3500
dialrecall = !425/200,!0/200,!425/200,!0/200,!425/200,!0/200,425
record = 1400/500,0/15000
info = 950/330,0/1000
dialout = 500

Cambiar asimismo la linea country a “es”.


Configurar el acceso a algunos proveedores de VoIP

Como configurar el acceso a FWD

Para usar FWD (Free World Dialup ) hay que registrarse aqui:

http://account.freeworlddialup.com/index_new.php?section_id=94

Añadir a iax.conf la entrada del register (en la sección general):

register => 646499:xxxx@iax2.fwdnet.net

Y mas abajo hacer estas entradas (ojo, sustituir valores por los correctos):

; Trust Caller*ID Coming from iax.fwdnet.net
[iaxfwd]
type=user
context=default
auth=rsa
inkeys=freeworlddialup

[fwdgw]
 ; outbound connections to FWD
type=peer
auth=md5
secret=xxxx
username=9999999
qualify=yes
host=iax2.fwdnet.net
disallow=all
allow=ulaw
callerid="lo_que_sea"<9999999>

Y en el extension.conf:

[iaxfwd]
exten => _001.,1,SetCallerId,646499
exten => _001.,2,Dial(IAX2/646499@fwdgw/${EXTEN:3},60,r)
exten => _001.,3,Congestion

[fromiaxfwd]
exten => 646499,1,Dial(numero,20,r)
exten => 646499,2,Voicemail,u200
exten => 646499,102,Voicemail,b200

Como configurar el acceso a PeopleCall

Conectar a PeopleCall

PeopleCall dispone de cuentas tipo SIP que pueden ser facilmente contratadas para su uso con Asterisk.
Para configurar la conexión editaremos los ficheros sip.conf y extensions.conf:

sip.conf

En la sección general incluímos una entrada para permitir la conexión entrante de llamadas. Si al final de
la línea no añadimos un /numero_extension por defecto las llamadas serán enviadas a la extension s(start)
del contexto en que se encuentren. Esta entrada debe estar en la seccion [General]:

; PEOPLECALL 
; admite hasta 15 lineas de entrada indicando 001 al 015
; tras el numero SIP asignado
register => 34700xxxxxx001:password@sip.peoplecall.com
register => 34700xxxxxx002:password@sip.peoplecall.com
register => 34700xxxxxx003:password@sip.peoplecall.com

Añadiremos mas abajo una entrada para poder tener la posibilidad de originar llamadas...

[peoplecall]
type=peer
host=sip.peoplecall.com
fromuser=34700xxxxxx001
fromdomain=sip.peoplecall.com
username=34700xxxxxx001
secret=password
dtmfmode=rfc2833
qualify=yes
disallow=all
allow=g729
allow=g723
;allow=gsm
;allow=ulaw
insecure=very
nat=yes

Es interesante reseñar que las opciones insecure=very y nat=yes nos facilitarán mucho la vida a la hora de
evitar problemas con el NAT, así como la entrada qualify=yes que periódicamente comprueba la conexión
ayudando a que el NAT Tracking no desconecte la conexión.
Por último configuraremos en el fichero extensions.conf la entrada para permitir la llamda a través de
este proveedor. En el ejemplo utilizamos el prefijo 340 para indicar que las llamadas se originan a través
de PeopleCall:

;  P E O P L E C A L L 
;  Números de 9 cifras que comienzan por 700 se envian a PeopleCall (Gratis)
;

exten => _700XXXXXX,1,SetCallerID,"123456"   ; 123456 es el numero de telef. asi
gnado por PeopleCall
exten => _700XXXXXX,2,Dial(SIP/${EXTEN}@peoplecall,90,Ttr)

; P E O P L E C A L L   F O R Z A D O 

; marcando 340 + numero nacional (+34 seguido de numero) se envia a numero nacio
nal
exten => _340.,1,SetCallerID,"123456"   ; 123456 es el numero de telef. asignado 
por PeopleCall
exten => _340.,2,Dial(SIP/${EXTEN:3}@peoplecall,90,Ttr)

Consideraciones con el uso de NAT y cortafuegos con Asterisk

NAT y Conexiones SIP

Los problemas más frecuentes con las conexiones de clientes SIP son problemas de NAT. A fin de evitarlos
es importante tener los siguientes puertos configurados en el NAT de su router para ser reenviados al
equipo donde tenga instalado Asterisk:

5060 UDP  (SIP Session)

10000 20000 (RTP Communication)

El rango 10000 al 20000 deberá ser el mismo que tengamos definido en el fichero /etc/asterisk/rtp.conf
que típicamente tendrá este aspecto:

;
; Configuracion RTP
;

[general]
;
; Configuramos el inicio y fin del rango de puertos RTP usados
;

rtpstart=10000
rtpend=20000
;

Asimismo, si vamos a aceptar llamadas via protocolo IAX, es necesario tener en los puertos mapeados por
NAT:

4569 UDP (IAX Session)

Adicionalmente en algún entorno (pero no es lo habitual) es preciso redirigir asimismo los puertos que
indicamos a continuación:

2727 UDP (MultiMedia Gateway Control Protocol)
5036 UDP (IAX1 Session Obsolete)

Por último lugar, aunque no el menos importante, es vital indicar a Asterisk cuál es su IP de red interna y
cual es la IP pública donde somos alcanzables desde Internet. Para ello, en el fichero sip.conf le
indicaremos ambos parámetros:

;contexto general
[general]
port =  5060                            ; puerto donde escucha asterisk
bindaddr = 192.168.0.xxx                ; en que ip escucha (privada)
externip = xxx.xxx.xxx.xxx              ; ip publica
localnet = 192.168.0.0/255.255.255.0; no imprescindible pero en alguna configura
cion es interesante de poner

Siguiendo las redirecciones previas ya se solucionan muchas de las incidencias conectando Asterisk a su
proveedor de Voz sobre IP.

Anexo: Algunas cosas interesantes....


Como grabar todas las llamadas entrantes

Crear un script que llamaremos GRABAR en /usr/local/bin que contenga:

#! /bin/bash
outputfile=`echo $3 | sed s/\.wav$/\.wav/`
/usr/bin/soxmix $1 $2 $outputfile &> log.err
rm $1 $2

En extensions.conf hacer esta entrada justo antes del Dial:

; pruebas para grabar las llamadas
exten => 500,7,SetVar(MONITOR_EXEC=/usr/local/bin/grabar)
exten => 500,8,SetVar(CALLFILENAME=/musica/asterisk/${TIMESTAMP})
exten => 500,9,Monitor(wav|${CALLFILENAME}|m)
;
Cuando la llamada termine se grabara en la ruta indicada la llamada recibida.

Grabar a demanda

En features.conf añadir la opcion

[featuremap]
blindxfer => #1                ; Blind transfer
 ;disconnect => *0               ; Disconnect
automon => *1                  ; One Touch Record <­­ esta es
atxfer => *2                   ; Attended transfer

Y en extensions.conf, en las extensiones que deban grabar, añadir “wW” la primera para que las llamadas
recibidas puedan grabarse y la segunda para que las llemadas originadas puedan grabarse.

exten => 504,1,Dial(IAX2/504,30,wWtr)

Y asi al pulsar *1 en una conversacion se graba en /var/spool/asterisk/monitor con el siguiente formato:

auto1127918417504502.wav

donde la primera de las dos extensiones es la que origina la grabacion.

Transferencia con supervision

En features.conf ha de estar dentro de featuremap

blindxfer => #1                ; Blind transfer
atxfer => *2                   ; Attended transfer

Y en la extension ha de estar el “tT” para poder hacer transferencia de llamadas,

Mientras se esta hablando al pulsar *2 se inicia la transferencia, y al colgar se recibe la llamada


transferida en el telefono llamado.

You might also like