Sie sind auf Seite 1von 38

P RO G R A M A D E S O F T WA R E L I B R E Q U E P RO P O R C I O N A

F U NC I ONA L I DA D ES D E U NA C ENT R A L T EL EF ÓNI C A .


¿QUE ES UNA PBX?
PBX son las siglas en inglés de “Private Branch Exchange”(Central Privada Automata ), la cual es
una red telefónica privada utilizada dentro de una empresa.
Una PBX IP abre las posibilidades, permitiendo en su mayoría un crecimiento ilimitado en
términos de extensiones y troncales, e introduciendo funciones más complejas que son más
costosas y difíciles de implementar que con un PBX tradicional, tales como:
 Grupos de marcación
 Colas
 Recepcionista Digital
 Buzón de voz
 Reportes
DIGIUM WILDCARD TE110P

• El Wildcard TE110P trae una interfaz E1 / PRI de alto


desempeño, rentable y flexible de un solo tramo a la línea
Digium de los dispositivos de interfaz de telefonía.

• El TE110P es un tramo único, seleccionable T1 (24 canales) o


E1 (32 canales)
DEVIAN LINUX 9 (STRETCH)

• Debian o Proyecto Debian es una comunidad conformada por desarrolladores y usuarios, que
mantiene un sistema operativo GNU basado en software libre. El sistema se encuentra
recompilado, empaquetado y en formato deb para múltiples arquitecturas de computador y
para varios núcleos.
• La comunidad de desarrolladores del proyecto cuenta con la representación de Software in
the Public Interest (del inglés, "software de interés público"),6 una organización sin ánimo de
lucro que da cobertura legal a varios proyectos de software libre, con el objetivo inicial de dar
cobertura legal al proyecto Debian.
• Kernel de 4.9
¿ QUE ES ASTERISK ?
• Proporciona funcionalidades de una central telefónica (PBX). Como cualquier PBX, se puede
conectar un número determinado de teléfonos para hacer llamadas entre sí dentro de una
misma organización e incluso acceder a comunicaciones fuera de la misma a la PSTN o
conectando a un proveedor de VoIP o bien a una RDSI tanto básicos como primarios.

Escenario del proyecto


• Para la PBX a implementar se ha previsto que estén conectada detrás de un Gateway parte de
una red interna con usuarios. A su vez el Gateway estará conectado a Internet permitiendo
que un usuario externo conectado a un Modem pueda ser parte de los usuarios de la PBX.
Añadiendo que se podrá interactuar con otra PBX con sus propios usuarios.
PROCESO DE INSTALACIÓN
DAHDI LINUX Y DAHDI TOOL

LIBPRI

LIBSS7

ASTERISK
INSTALACION DE DAHDI
# apt-get update

# apt-get upgrade

# apt-get install linux-headers-$(uname -r)

# apt-get install build-essential pkg-config libtool autoconf git mc sox wget

# apt-get install ncurses-dev libxml2-dev libsqlite3-dev libssl-dev uuid-dev libjansson4 libjansson-dev


libbsd-dev libbsd-dev libedit-dev libusb-dev libnewt-dev ncaptool libncap-dev libncap44 libasound2-dev
libnewt-dev doxygen mysql-server perl-modules perl-depends gmime-bin libgmime-2.6.0 libgmime-2.6-
dev libasound2-dev libnewt-dev doxygen mysql-server perl-modules perl-depends gmime-bin libgmime-
2.6.0 libgmime-2.6-dev libjudydebian1 libnet1 libnet1-dev pcaputils
INSTALACIÓN DE LIBPRI:
Librería libPRI es la encargada de gestionar lo relacionado a la telefonía digital, es decir los
Primarios, (PRI), las RDSI (BRI) y a su vez el protocolo QSIG, estandarizado para la señalización
entre PBX que utilicen estos sistemas de telefonía.
Instalaremos usando siempre los archivos de código fuente descargándolos y luego
compilándolos, recordando estar ubicados en el directorio /usr/src en todo el proceso:

# wget https://downloads.asterisk.org/pub/telephony/libpri/libpri-current.tar.gz
# tar zxvf libpri-current.tar.gz
#cd libpri-1.6.0
#make
#make install
INSTALACIÓN DE LIBSS7:
LibSS7 para Linux es una biblioteca que se utiliza para proporcionar servicios del protocolo SS7 a
las aplicaciones como Asterisk. Tiene un MTP2, un MTP3 y un ISUP de trabajo para ITU y el
ANSI-estilo SS7. LibSS7 es una dependencia para Asterisk y DAHDI si se utiliza la señalización
SS7.
• Instalaremos usando siempre los archivos de código fuente descargándolos y luego
compilándolos, recordando estar ubicados en el directorio /usr/src en todo el proceso:

# wget https://downloads.asterisk.org/pub/telephony/libss7/libss7-2.0-
current.tar.gz
# tar zxvf libss7-2.0-current.tar.gz
#cd libss7-2.0.0
#make
#make install
INSTALACIÓN DE ASTERISK
Para la instalación se prefirió compilar la ultima versión de Asterisk a partir de su código fuente.
Se recomienda instalar la ultima versión disponible, normalmente con más funcionalidades y
menos bug, a partir del código fuente. Así mismo si queremos hacerlo funcionar en plataforma
ARM. La versión estable más reciente en este momento es Asterisk 15.3
Bajamos y descomprimimos el código fuente de Asterisk 15, ubicados en el
directorio /usr/src:

# wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-15-current.tar.gz
# tar zxvf asterisk-15-current.tar.gz
# cd asterisk-15.x.x
Se configura y se revisa todos los módulos necesarios para sip estén preparados:
# ./configure
# make menuselect
• Estando en el menú de configuración debemos comprobar que los siguientes módulos
aparezcan seleccionados.

Channel Drivers / chan_sip


Resource Modules / res_crypto
Resource Modules / res_rtp_asterisk
Applications / app_meetme
Cada uno tiene que aparecer marcados con un [*]

Si alguno de los módulos no aparece seleccionado es debido a que no ha cumplido con los
requisitos necesarios. Para poder solventar este problema en la parte inferior se indica cual es el
componente que se requiere y se instala mediante apt.
Una vez hecho lo anterior se selecciona también la colección de sonido en español España.

 Core Sound Packages / CORE-SOUNDS-EN-GSM (Desmarcar quitando el asterisco)


 Core Sound Packages / CORE-SOUNDS-ES-GSM (Marcar con el asterisco)
 Core Sound Packages / CORE-SOUNDS-ES-WAV (Marcar con el asterisco)
INSTALACIÓN DE SCRIPTS DE ARRANQUE
Una vez que todo esté bien, compilamos, instalamos, añadimos los scripts de arranque para
/etc/init.d, si deseamos que Asterisk inicie junto con el sistema sino basta con la instalacion y la
configuración normal:
# make
# make install
# make config

Podemos instalar una configuración completa de Asterisk que nos servirá como ejemplo para ir
viendo la sintaxis:

# make samples

La configuración de Asterisk se instala en /etc/asterisk/


ARRANQUE Y EJECUCIÓN DE ASTERISK
Podemos arrancar Asterisk:
# /etc/init.d/asterisk start
O también podemos teclear para iniciar el servicio:

# service asterisk start

Finalmente ejecutamos y se verifica todo el proceso:

#asterisk -cvvvvvv
DAHDI - DIGIUM/ASTERISK
HARDWARE DEVICE INTERFACE (E1)
• 1. Bajar y descomprimir código fuente:

# wget https://downloads.asterisk.org/pub/telephony/dahdi-linux-
complete/dahdi-linux-complete-current.tar.gz
# tar zxvf dahdi-linux-complete-current.tar.gz
# cd dahdi-linux-complete-2.11.1+2.11.1
#make
#make install

2. Determinar si el sistema Linux detecta el hardware de la tarjeta:


# Ispci
Se puede notar en la imagen anterior que el driver que el sistema estima compatible es para un
Modem Tiger Jet sin embargo este driver no es útil para el uso de Asterisk.
3. Verificar si Dahdi detecta el hardware:

# lsdahdi
4. Luego vamos a ver el driver que usa Dahdi de su repertorio, que es compatible
con nuestra tarjeta:
De acuerdo a las configuración pre-establecidas y una vez comprobado que Dahdi reconoce el
hardware y le ha asignado un driver compatible:
5. Pasamos a generar los archivos de configuración necesarios:

# dahdi_hardware

Una vez comprobado que Dahdi reconoce el hardware y le ha asignado un driver compatible
pasamos a generar los archivos de configuración necesarios:

# dahdi_genconf modules
# dahdi_genconf system
# dahdi_cfg
De acuerdo a los comandos anteriores se han creado 2 archivos de configuración para Dahdi
almacenados en /etc/dahdi con el siguiente contenido:

• a) /etc/dahdi/modules

• }

• b) /etc/dahdi/system
• stem
• De ambos archivos se puede resaltar:
 Wcte11xp: El driver asignado
 bcan=1-15,17-31: Los canales de transmisión
 dchan=16: El canal de señalización
Finalmente al observar físicamente la tarjeta veremos que el led parpadea en color Rojo para
indicar falla de conexión pero indicando que están funcionando si se ejecuta:
# dahdi_tool
Veremos que la alarma de Led Rojo esta activa reconocida por Dahdi
• Nota Importante: En las distribuciones como Ubuntu Linux, a la tarjeta Digium se le asigna
un driver de sistema llamada netjet que aunque se instale y configure Dahdi sigue activo
impidiendo que Dahdi tenga acceso a la tarjeta como se muestra a continuación:

DAHDI has been configured.


List of detected DAHDI devices:

driver should be 'wcte11xp' but is actually 'netjet'


pci:0000:02:03.0 wcte11xp+ e159:0001 Wildcard TE110P REV I

Por ello se de debe enviar a lista negra este driver con el siguiente comando:
• # echo "blacklist netjet" >> /etc/modprobe.d/blacklist.conf
• # reboot
CONFIGURACIÓN DE ASTERISK
Primero configuraremos los parámetros básicos para establecer la central telefónica como una
troncal en una conexión directa entre dos centrales usando la E1. Para eso modificamos el
archivo /etc/chan_dahdi.conf de Asterisk dejando los campos de la siguiente manera:
[channels] Columna1
context=public ;puede ser default o el que se quiera
;switchtype=euroisdn ;Usado solo para PRI
signalling=ss7 ;Tipo de señalización entre Troncales
usecallerid=yes ;Permitir ver los ID de llamadas
callwaiting=yes ;Para oír tono de línea ocupada
usecallingpres=yes ;Presentar el caller ID
;Soporte de identificación de llamadas en
callwaitingcallerid=yes
llamada en espera
threewaycalling=yes ;
transfer=yes ;Para transferencia de llamadas
campark=yes ;Permite llamadas estacionarias
cancallforward=yes ;Soporte de llamada hacia adelante
callreturn=yes ;Para retorno de llamadas
echocancel=yes ;
echocancelwhenbridged=yes ;Activado las cancelaciones en TDM
;Establece grupo que será usado en el Dial
group=1
plan para la ;salida de llamadas
;------------------------------------------------------------------------------------
; SEÑALIZACION SS7
;------------------------------------------------------------------------------------

pointcode = 1 ;Point code del linkset


;Point code del nodo adyacente a este
adjpointcode = 2
enlace de señalización
;(Posiblemente el STP entre usted y tu
destino)
;Default point code que le gustaría asignar
defaultdpc = 2
a los mensajes
;salientes (en caso de enrutamiento a
través de STP o usando
;enlaces A).
networkindicator=national ;Indicador de tipo de bits de red para MTP3

;El numero donde inicia el conteo de


cicbeginswith = 1
CIC(códigos de
;indicación de circuito) que serian desde
DAHDI/1
;hasta DAHDI/15
channel = 1-15 ;Se declaran los canales Dahdi del CIC #1
;El numero donde inicia el conteo de
cicbeginswith = 17
CIC(códigos de
;indicación de circuito) que serian desde
DAHDI/17
;hasta DAHDI/31
channel = 17-31 ;Se declaran los canales Dahdi del CIC #1
sigchan = 16 ;Primer canal de señalización
¿QUÉ ES SIP?
• Protocolo de Inicio de Sesión. Es un protocolo desarrollador por el grupo MMUSIC del IETF
con el fin de ser el estandar para la iniciación, modificación y finalización de sesiones
interactivas de usuario donde interviene audio, video, mensajería instantanea, juegos en linea y
realidad virtual. SIP es uno de los protocolos de señalización para voz sobre IP, junto con otros
como H.323 e IAX2.
• Para poder utilizar el canal SIP lo primero que tenemos que hacer es configurar las cuentas SIP,
utilizadas por nuestros dispositivos VoIP(softphones, tfnos digital y analógico y gateway) para
registrarse en nuestra centralita Asterisk.
• El archivo sip.conf sirve para configurar todo lo relacionado con el protocolo SIP y
añadir nuevos usuarios o conectar con proveedores SIP.
El fichero de configuración del canal sip se encuentra en/etc/asterisk/sip.conf y por tanto
será donde configuremos las cuentas SIP.

• En el fichero sip.conf hay un contexto predefinido, se llama [general]:


• En el contexto [general] definiremos parámetros que se aplicarán en todos los contextos
posteriores. Algunos de los parámetros generales del canal SIP son:
port: es el puerto que utilizará Asterisk para escuchar conexiones SIP entrantes. El puerto SIP por
defecto es el 5060.
binaddr: interfaz de red que utilizará Asterisk para atender las conexiones SIP entrantes. El valor por
defecto es 0.0.0.0, es decir, escucha en todas las interfaces de red disponibles.
context: contexto que se aplica a las llamadas entrantes. Se aplica cuando una cuenta SIP no tiene
definido un contexto.
videosupport: soporte de video en SIP. Permite los valores 'yes' o 'no’ .
language: lenguaje utilizado por defecto para todos los clientes SIP.
• allow: especificamos los códecs de sonido que vamos a utilizar. Permite valores como 'all', 'alaw',
'ulaw', 'gsm', etc.
• disallow: códecs de audio que no vamos a permitir. Cuando vamos a restringir los códecs de audio,
lo mejor es siempre prohibirlos todos (disallow=all) y luego permitir aquellos que queramos.
• nat: habilitamos o deshabilitamos el soporte de nat para la extensión.
DEFINIENDO LOS CLIENTES SIP
• Como he comentado anteriormente, antes de que un cliente SIP pueda enviar o recibir
llamadas a través de Asterisk, debe ser declarado y configurado en el
fichero /etc/asterisk/sip.conf. Cada cliente SIP se configurará como si de otro contexto /
sección se tratase, y podemos especificar varios parámetros. Hasta ahora los que he utilizado
han sido los siguientes:
• type: define la clase de conexión que tendrá el cliente. Hay tres tipos de clientes SIP:
– peer: solo puede recibir llamadas.
– user: solo puede realizar llamadas.
– friend: puede recibir y realizar llamadas.
• callerid: es el identificador del cliente, es decir, el nombre que aparecerá cuando se realice una
llamada.
• username: usuario con el que nos conectaremos al servidor Asterisk.
• secret: contraseña con la que se realizará la autenticación en Asterisk junto con el username.
• context: contexto asociado al cliente en el dialplan de Asterisk, es decir, contexto que se
aplicará en el fichero extensions.conf del cual hablaremos más adelante.
PARAMETROS DE LAS TRONCALES
PARAMETROS DE LOS USUARIOS
SALA DE CONFERENCIAS
Quizás una de las características más interesantes de Asterisk es la posibilidad de crear
conferencias audio.

• Permite crear conferencias protegidas por clave.


• Administrar conferencias.
• Callar o expulsar a un miembro de la conferencia.
• Crear conferencias estática (en el meetme.conf).
• Crear conferencias dinámicas (utilizando el plan de marcación).
NANO /ETC/ASTERISK/MEETME.CONF
• [general]
audiobuffers=32 ; Numero de paquetes audio de 20ms que serán guardados en un buffer de
memoria cuando pertenecen a canales que no son DADHI. Esto permite sincronizar el audio de los
distintos participantes y evitar retrasos. Puede ser un valor entre 2 y 32
schedule=yes ; con este parámetro le decimos a asterisk que las conferencias pueden ser
programadas (solamente en realtime)
• logmembercount=yes ; este parámetro sirve para actualizar el realtime cada vez que un usuario
entra/sale de una conferencia
fuzzystart=300 ; Tenemos una conferencia programada a las 8 de la mañana. Este parámetro sirve
para definir si un usuario puede o no entrar a la conferencia si esta no ha empezado. 300 es el
numero de segundos. Ejemplo. Si el usuario entra a la 7:55 será aceptado porque puede entrar hasta
5 minutos (300 segundos) antes del comienzo de la conferencia. Si entra a las 7:50 será rechazado.
earlyalert=3600 ; Este valor (siempre en segundos) define si al usuario que intenta entrar en una
conferencia programada le será anunciado o no que la conferencia todavía no ha empezado. Si entra
cuando falta menos de una hora recibirá este aviso. Si entra más de una hora antes se le anunciará
que la conferencia no existe.
endalert=120 ; cuando faltarán 120 segundo para terminar la conferencia programada, se le
anunciará a todos los participantes.
SALA DE CONFERENCIAS (MEETME.CONF)
• El meetme es usado para llamadas en conferencia . En este archivo de configuración un room tiene
que ser declarado.
[rooms]
;contexto donde el cuarto de conferencia debe ser declarado.
Sintaxis
conf => confno[,pin][,adminpin]
Donde:
conf: Es la declaracion de la sala de conferencia

Confno: Es el numero para de la sala de conferencia. marca este numero para ingresar a la sala de
conferencia.

Pin: Es un numero pin para autenticar el ingreso a la sala de conferencia.


Adminpin: Es un pin opcional para administrar la conferencia.

Ejemplo: Conf => 3000 ; esto creara una sala de conferencia 9000 abierta para todo el mundo.
SALA DE CONFERENCIAS (EXTENSION.CONF)
En el dial plan (plan de marcacion) la aplicacion meetme tiene la forma;
MeetMe(confno, [options])
Donde las opciones disponibles son:
m = el usuario solo puede escuchar (no puede participar)
p= permite al usuario dejar la conferencia presionando #
M= coloca musica en espera mientras exista un solo participante.
Ejemplo:
exten => 4000,n,MeetMe(3000,M)
exten => 997,1,Answer()
exten => 997,n,MeetMe(9000,M)
exten => 997,n,Hangup()
DIAL PLAN PAR USUARIOS
ALARMA

 Para el uso de alarma se implementa el interprete PHP, a traves del modulo interno
de Asterisk llamado AGI.

 Se agrega el archivo en lenguaje PHP del despertador en el directorio


/var/lib/asterisk/agi-bin/wakeup.php

 En archivo extensions.conf se configura el dial plan par el despertador.


CORREO DE VOZ
• [general]
Determina el formato de audio a utilizar.
• format=wav49|gsm|wav
Cambia la lista de formatos en los que graba el correo de voz
• attach=yes
Número máximo de mensajes por carpeta, el valor máximo para esta opción es 9999. Pero si no
se especifica será de 100.
• maxmsg=100
Es el máximo numero de mensajes que el servidor asterisk puede almacenar.
• maxlogins=3
Es la cantidad de usuarios que pueden acceder al correo de voz simultáneamente.
• userscontext=public
Es el contexto general del diaplant que este se encuentra en el extensions.
¿QUÉ ES IVR /RESPUESTA DE VOZ
INTERACTIVA?
• La Respuesta de Voz Interactiva o IVR es una tecnología de telefonía que le permite a los
clientes interactuar con el sistema de atención de la compañía a través de menúes de voz
configurables, en tiempo real, utilizando tonos DTMF.
¿CÓMO FUNCIONA UN SISTEMA IVR?
En un sistema IVR, las personas que llaman se les da la posibilidad de seleccionar las opciones
pulsando las teclas. Al presionar un dígito en el teclado del teléfono se envía un tono DTMF al
sistema de atención de la central el cual selecciona a continuación la acción / respuesta apropiada
de acuerdo con el dígito pulsado.

¿DÓNDE SON USADOS LOS SISTEMAS IVR?


Los Sistemas IVR normalmente pueden manejar y dar servicio a altos volúmenes de llamadas
telefónicas . Con un sistema de respuesta de voz interactiva las empresas pueden reducir los
costos y mejorar la experiencia de los clientes, debido a que las personas que llaman obtienen la
información que necesitan las 24 horas del día sin la necesidad de personal humano costoso
CONFIGURACION
• ;Mini IVR
• ;========
• exten=> 6000,1,Wait(1) ;espera un segundo
• exten=> 6000,2,Set(TIMEOUT(response)=10);10 segundos es el tiempo que espera para que el llamante presione
una tecla
• exten=> 6000,3,Set(TIMEOUT(digit)=7);7 segundos es el tiempo que espera entre el primer digito y los sucesivos
• exten=> 6000,4,BackGround(ext-or-zero) ; presenta el menu vocal y al mismo tiempo escucha si el llamante
presiona alguna tecla
• exten=> 6000,5,WaitExten(); espera que el llamante presione alguna tecla
• exten=> 6XXX,6,Dial(SIP/${EXTEN},15,Tt)
• exten=> 0,1,goto(public,6001,1)
• exten=> i,1,Playback(invalid); si el numero digitado no es valido comunica el error
• exten=> i,2,Playback(goodbye) ; se despide
• exten=> i,3,Hangup();cuelga la llamada
• exten=> t,1,goto(public,6000,2) ; si dentro de 10 segundo el llamante no presiona ninguna tecla vuelve a presentar
el menu vocal
• exten=> h,1,Hangup()

DESVÍO DE LLAMADAS
• Todos los planes de centralita virtual, telefonía IP y SIP trunk incluyen desvíos de llamadas por
extensión.
• Cuando se activa un desvío para una extensión, cada vez que alguien llame a esa extensión la
llamada se enviará al número de teléfono o extensión indicada en el desvío.

CONFIGURACION
• featuremap]
• blindxfer => # ;Transferencia a ciegas (por defecto es #) - ¡Asegúrese de configurar la
opción T y / o t en la llamada a la aplicación Dial () o Queue ()!
• disconnect => *0 ; Desconectar (el valor predeterminado es *)
• atxfer => *;Transferencia asistida

Das könnte Ihnen auch gefallen