1/23/2014

Ejercicio I: Configurando una PBX en Asterisk

Shop Small & Midsize Business solutions at the Microsoft Store. Click Here


En este ejercicio vamos a intentar llevar a cabo la configuración de una PBX bajo Asterisk. Es una configuración básica, la idea es poner en practica los conocimientos adquiridos y demostrar que este es un proceso bien sencillo.


El escenario es el siguiente:

Servidor Asterisk 1: Estamos Usando un PC AMD 1.8 GHZ con un 1GB de RAM.
Servidor 2: Maquina Virtual (Con VirtualBox) simula un servidor en otra sucursal
Conexión con el exterior: Tarjeta T1 24 canales, puedes usar la que guste (solo asegurarte de revisar la configuración recomendada por el fabricante)
Troncales SIP: estamos usando 2 Troncales SIP uno de NET2PHONE y el otro ATPTELECOM para gestionar las llamadas a celulares, larga distancia e internacionales. si necesita un troncal SIP o DID, clic aqui.
Extensiones Análoga: 4 Extensiones con una Tarjeta FXO/FXS de 4 Puertos (puede usar la que guste)
Teléfonos: 2 Cisco 7912 y 1 Teléfono Análogo
Sofphone: 3CX, X-LITE y Zoiper

Nota: todo lo que esta después del punto y coma es un comentario.

; Esta configuración va en el archivo sip.conf la ruta en mi caso es /etc/asterisk

[general]

; para registrar nuestros troncales SIP con el proveedor de servicios VoIP.
register => 87552986558:2378@66.33.146.52/87552986558      ; Net2phone
register => 18299472310:DweTddfd8OPPODFD@66.165.164.54/18299472310     ; Atptelecom
register => serverB:A2ER1df@10.0.0.100     ; esta conexión se registra con el segundo servidor asterisk
                                                                      ; debe poner la IP de tu servidor.

context=public
allowguest=no
udpbindaddr=0.0.0.0
tcpenable=no
transport=udp
srvlookup=yes
language=es

; De aquí para arriba va en la seccion [general] del archivo sip.conf

; Declaración de nuestros canales SIP.

[300]                ; No se recomienda usar nombre de canales como esto debe usar algo mas complejo.
type=friend
host=dynamic
secret=A2ER1df
context=from-internal
dtmfmode=auto
disallow=all
allow=ulaw
allow=alaw
nat=auto

[301]     ; para los nombre de canales puedes usar algo como la dirección MAC de tu aparatos o algo
              ; similar

type=friend
host=dynamic
secret=A2ER1df
context=from-internal                           
dtmfmode=auto
disallow=all
allow=ulaw
allow=alaw
nat=auto

[302]
type=friend
host=dynamic
secret=A2ER1df
context=from-internal
dtmfmode=auto
disallow=all
allow=ulaw
nat=auto





; Configuración en el servidor A, debe haber una entrada similar en el servidor B con el nombre de serverA y la IP del servidorA. Esto permite conectar dos servidores y hacer llamadas entre ambos.

[serverB]
type=friend
host=10.0.0.100          ; IP del servidor B
username=serverA
secret=A2ER1df
context=external
disallow=all
allow=ulaw

; Creando nuestros troncales SIP para las llamadas de larga distancia.
[net2phone]
username=87552986558
type=peer
secret=2378
ignoresdpversion=yes
host=66.33.146.52
dtmfmode=rfc2833
context=external
canreinvite=no
allow=g729

[atptelecom]
username=18299472310
secret=DweTddfd8OPPODFD
port=5060
nat=auto
insecure=invite
ignoresdpversion=yes
host=66.165.164.54
dtmfmode=rfc2833
context=atptelecom
canreinvite=no
allow=g729

; Configuración de un DID SIP para recibir llamadas desde la PSTN
[from-pstn]
username=18299472310
type=user
port=5060
nat=auto
insecure=invite
context=incoming
canreinvite=no
allow=ulaw
allow=alaw
allow=g729
;allow=g723

;Configurando nuestro dialplan lo hacemos en el archivo extensions.conf. la ruta es /etc/asterisk en mi caso.

[globals]
; Variables globales para asignarles la configuración de los Troncales SIP.
NET2PHONE=87552986558:2378@ippbx.net2phone.com/87552986558
ATPTELECOM=18299472310:DweTddfd8OPPODFD@sip.atpcentral.com/18299472310

; Contexto que maneja nuestra extensiones Interna.
[from-internal]
exten => 300,1,Dial(SIP/300)
exten => 301,1,Dial(SIP/301)
exten => 302,1,Dial(SIP/302)
exten => 303,1,Dial(SIP/303)
exten => 304,1,Dial(IAX2/0000ffff0004)

; la directiva include permite incluir un contexto en otros contexto. en este caso incluimos external y atptelecom en from-internal para poder llamar al exterior.

include => external
include => atptelecom
;
;Esto permite que usted marque a cada unos de los teléfonos análogos
;configurados en el chan_dahdi.conf
;
exten => 305,1,Dial(DAHDI/1)
exten => 306,1,Dial(DAHDI/2)
exten => 307,1,Dial(DAHDI/3)
exten => 308,1,Dial(DAHDI/4)

; exten => 310,1,Goto(TestMenu,start,1)  ; si marca esta extensión pasa la llamada al contexto
                                                              ; TestMenu, esto es opcional solo es para probar

; Patrón para sacar llamadas a través de un Troncal SIP, en este caso Internacionales y locales, puede ser con el 1 o Celulares también, como se muestra en la segunda línea.

[external]
exten => _NXXNXXXXXX,1,Dial(SIP/${EXTEN}@net2phone)
;exten => _1NXXNXXXXXX,1,Dial(SIP/${EXTEN:1}@net2phone)
exten => _011.,1,Dial(SIP/${EXTEN}@net2phone)

; Patrón para sacar llamadas a un segundo servidor Asterisk en otra sucursal, con el rango de extensiones desde el 100-199. Debe haber una entrada similar en segundo servidor.
 
exten => _1XX,1,Dial(SIP/${EXTEN}@serverB)

; Patrón para sacar llamadas a través de un Troncal SIP, en este caso larga distancia con el 1 o Celulares
[atptelecom]
exten => _1NXXNXXXXXX,1,Dial(SIP/${EXTEN}@atptelecom)

; este contexto recibe las llamadas desde la PSTN y la pasa a TestMenu
[incoming]           
exten => s,1,Answer()
     same => n,Goto(TestMenu,1,start)     ; pasa la llamada a la operadora automática
     ; same => n,Dial(SIP/300)                  ; podría pasarse a una extensión
  

[from-pstn]
exten => _X.,1,Verbose(2,llamadas entrantes para ${EXTEN})
    same => n,Goto(number-mapping,${EXTEN},1)

; este es un contexto opcional nos permite agrupar todos nuestros DID en un solo lugar.

[number-mapping]
exten => 18299465913,1,Dial(SIP/300)

exten => i,1,Verbose(2, Llamadas entrantes desde números inválidos)
    same => n,Goto(TestMenu,1,start)

; Definimos el contexto TestMenu que funcionara como una operadora automática, esto es básico, solo para demostrar la funcionalidad. 

[TestMenu]
exten => start,1,Answer()
   same => n,Background(main-menu)
   same => n,WaitExten(10)

exten => 1,1,Dial(SIP/300,10)      ; extensiones del menú.
   same => n,PLayback(vm-nobodyavail)
   same => n,Hangup()

exten => 2,1,Dial(SIP/302,10)
   same => n,Playback(vm-nobodyavail)
   same => n,Hangup()

exten => i,1,Playback(pbx-invalid)       ; maneja los números invalido.
   same => n,Goto(TestMenu,start,1)

exten => t,1,Playback(vm-goodbye)   ; si no presionamos ningún numero en el teléfono en 10 segundo
   same => n,Hangup()

; Configuración de los canales o extensiones IAX.
; Esto lo hacemos en el archivos iax.conf en mi caso la ruta del archivo es /etc/asterisk

; lo podemos hacer de esta forma:
[general]
srvlookup=yes
language=es
bandwidth=low
disallow=lpc10
jitterbuffer=no
forcejitterbuffer=no
autokill=yes

; O usando una plantilla como sigue:
[office-phone](!)
type=friend
host=dynamic
secret=s1e2g3
context=from-internal
disallow=all
allow=ulaw
allow=ulaw
nat=auto


; Luego definimos el nombre del canal agregando el nombre de la plantilla entre paréntesis, así:
[0000ffff0004](office-phone)


; Configurando la T1, esta es una configuración básica (genérica), mas orientada a los Estados Unidos, pero igual nos simple de ejemplo, para ir aprendiendo.

; vamos a crear el archivo chan_dahdi.conf en /etc/asterisk como sigue:


[trunkgroups]


[channels]
language=es
context=public
usecallerid=yes
hidecallerid=no
callwaiting=yes
usecallingpres=yes
callwaitingcallerid=yes
threewaycalling=yes
transfer=yes
canpark=yes
cancallforward=yes
callreturn=yes
echocancel=yes
echocancelwhenbridged=yes
relaxdtmf=yes
rxgain=0.0
txgain=0.0
group=1
callgroup=1
pickupgroup=1
inmediate=no

switchtype=national
signalling=pri_cpe
group=0
context=from-pstn
channel=1-23
                          




[phone](!)        ; declaramos una plantillas para las opciones comunes de las extensiones FXS
                        ; en este caso estamos usando una tarjeta de 4 puertos
;
usecallerid = yes
hidecallerid = no
callwaiting = no
threewaycalling = yes
transfer = yes
echocancel = yes
echotraining = yes
immediate = no
context = Local
signalling = fxo_ks ; Use señalización FXO para los canales FXS.

; Definiendo nuestros canales análoga usando la plantilla phone. 4 extensiones nombrada phone1, phone2, phone, phone4.

[phone1](phone)
callerid="Bernardo Pérez"<(809)482-4950>
dahdichan=1

[phone2](phone)
callerid="Lian Massiel"<(809)482-4911>
dahdichan=2

[phone3](phone)
callerid="Bernardo Pe"<(809)482-4912>
dahdichan=3

[phone4](phone)
callerid="Bernardo Per"<(809)482-4913>
dahdichan=4
     
  

Aprende a Implementar Asterisk paso a paso y en español
Libro: Asterisk PBX: Instalación, implementación y puesta en marcha.
DESCARGAR AHORA