A diferencia de las redes
telefónicas tradicionales, Asterisk no transmite la voz en tiempo real, lo que
sucede es una transmisión de paquetes entre dos direcciones IP a través de un
canal de comunicación. Cuando se habla a través de un teléfono IP, por ejemplo,
es necesario un protocolo que convierta la voz en paquetes de datos que puedan
ser transportadas por la red de datos.
Es por esto que se utiliza el protocolo de señalización SIP, el cual permite
establecer sesiones multimedia entre cliente y servidor para transmitir voz o
vídeo, intercambiando peticiones o respuestas entre agentes a través de un
servidor proxy por ejemplo.
Configuración
extensiones archivo sip.conf
En Asterisk, el archivo sip.conf
es donde se definen las extensiones SIP, los proveedores SIP y, en general,
todo lo relacionado con el protocolo SIP. Con las extensiones configuradas se
podrán llamar una con otra, se podrán enrutar las llamadas a teléfonos fijos
y/o celulares, utilizar proveedores SIP, Gateway PSTN, y aprovechar los típicos
servicios de una PBX como llamada en espera, desvío de llamadas, llamada a
tres, contestador automático, buzón de voz, etc.
[supervisor](!)
type=friend
context=supervisor
language=es
host=dynamic
nat=yes
secret=1a2b3c
dtmfmode=auto
disallow=all
allow=alaw
[4001](supervisor)
[agentes](!)
type=friend
context=agentes
language=es
host=dynamic
nat=yes
secret=a1b2c3
dtmfmode=auto
disallow=all
allow=alaw
[4002](agentes)
mailbox=4002@agentes
callerid= Dexter Morgan
[4003](agentes)
mailbox=4003@agentes
callerid= Walter White
Configuración Dial
Plan archivo extensions.conf
El archivo de configuración de
Asterisk extensions.conf es donde se define el dialplan de Asterisk. Todas las
llamadas entrantes y salientes se procesan en este archivo. Cabe señalar que las
extensiónes en Asterisk son una serie de números o letras que definen bloques
en el dialplan dentro del cual se ejecutan aplicaciones o funciones como ya se
había mencionado.
; Numero para simular una llamada desde el exterior
exten => 01800123,1,Goto(entrante,s,1)
[agentes]
exten => _40XX,1,Macro(llamadas,SIP/${EXTEN},agentes)
exten => 150,1,VoiceMailMain(${CALLERID(num)@agentes})
[supervisor]
include => agentes
[entrante]
exten => s,1,Answer()
same => n,Playback(welcome)
same => n,Background(main-menu)
same => n,WaitExten(5)
exten => i,1,Playback(pbx-invalid)
same => n,Goto(entrante,s,1)
exten => t,1,Playback(thank-you-for-calling)
same => n,Dial(SIP/4003)
same => n,Voicemail(4003@agentes)
#include macros.conf
macros.conf
[macro-llamadas]
exten => s,1,Dial(${ARG1},7)
same => n,Voicemail(${MACRO_EXTEN}@${ARG2})
Inclusión de archivos
y contextos
Hacen referencia a la acción de
incluir algo dentro de un contexto o apartado del Dial Plan, sin tener que
reescribirlo todo para evitar la redundancia. Son muy parecidos a los Include
de la mayoría de los lenguajes de programación existentes.
Existen dos opciones:
Incluir un contexto: Mecanismo principal para establecer una
jerarquía, o un mecanismo de "herencia" para distintos contextos a
los que están asociados varios dispositivos.
Incluir un archivo: Sirven principalmente, para poder
"modularizar" el Dial Plan evitando miles de líneas que hacen difícil
la interpretación.
La sintaxis es, "#include archivo.conf".
Por ejemplo, al hacer un IVR se creara
un contexto dentro de un archivo llamando por ejemplo ivr-extensions.conf y
dentro de este exclusivamente el contexto [ivr] con todo el proceso que
deseemos aportar. Es una buena práctica trabajar siguiendo este concepto.
Aplicaciones
Acciones aplicables al manejo de
las llamadas dentro del Dial Plan. Por ejemplo, la más popular sería la
aplicación Dial, la cual simplemente tiene como propósito hacer que los
teléfonos se llamen entre ellos. Existen
otras aplicaciones comunes, como:
Dial
Voicemail
Answer
Playback
Backgraund
WaitExten
Goto
Macro
Background() y Playback(),
reproducen archivos de audio, ubicados en /var/lib/asterisk/sounds/es, la
diferencia radica en que al momento de presionar una tecla, Background() hace
que se interrumpa la grabación inmediatamente se presione una tecla del
teléfono.
WaitExten() Esta aplicación
espera un tiempo para que sea oprimida una tecla por y es usada directamente
con la aplicación Background().
Cuando un contexto recibe una
solicitud de una extensión no valida, la llamada es enviada a la extensión i.
Cuando al estar llamando no se oprime la tecla dentro del tiempo valido (10
segundos por defecto) la llamada será enviada a la extensión t.
Cuando en el DialPlan algunas
acciones son repetitivas, los Macros permiten simplificar este tipo de
operaciones.
Macro(nombre macro, argumento1,argumento2,argumentoN)
ArgumentoN es un valor o una
variable que se pasa a la macro al momento de llamarla desde el plan de
marcado.
La aplicación macro crea las
siguientes variables de canal:
• ${MACRO_EXTEN} contendrá el
numero marcado
• ${MACRO_CONTEXT} contendrá el
contexto de donde se ha llamado la Macro
• ${MACRO_PRIORITY} contendrá la
prioridad de la línea de donde se ha llamado la Macro
• ${ARG1}, ${ARG2}, ${ARGN) son las variables
que contienen los argumentos que se han enviado a la Macro.Configuración Buzón de Voz archivo voicemail.conf
En el archivo voicemail.conf es
donde se configura todo lo relacionado con el buzón de voz. Si se recibe una
llamada y no se contesta o la línea está ocupada, entrará en función el buzón
de voz, y se podrá grabar un mensaje. Es posible crear distintos grupos de
buzones de voz, en el caso del proyecto se creara uno para los agentes.
En el archivo sip.conf, Se
configura el parámetro mailbox, cuando las extensiones se conecten al servidor
Asterisk, éste controlará si hay mensajes de voz pendientes y en caso positivo
se lo comunicará usando MWI = Message Waiting Indicator, que puede ser recibida por la mayoría de los
teléfonos IP o Softphone.
La opción callerid es el nombre y
el número que identifica la extensión cuando llama.
[agentes]
; Numero extensión => contraseña, nombre apellido,
4002=> 4321, Dexter Morgan
4003=> 4321, Walter White
Hola, Te agradezco por compartir tus conocimientos de Asterisk con todos.
ResponderEliminarEstoy tomando un curso de Asterisk y justamente la comentaba al profesor que no había encontrado en la web algún sitio que tenga dialplans ya configurados, para que estudiándolos, podamos aprender a configurar nuestros propios dialplans.
Tu blog es muy útil en ese sentido.
Muchas gracias.
Edwin Velasco
Gracias Edwin, si la idea es poner en el blog como implementar un proyecto con Asterisk, ya que cuando comenzaba con este tema no encontraba casi información de como configurar el DialPlan, espero te sirva.
Eliminar