0% encontró este documento útil (0 votos)
226 vistas59 páginas

Guía Completa de Asterisk IP PBX

Asterisk es un software de código abierto que permite convertir un servidor en una centralita IP. Ofrece funcionalidades como buzón de voz, conferencias, colas de llamadas y más. El dialplan define el comportamiento de las llamadas mediante extensiones y contextos, asociando aplicaciones a cada extensión.

Cargado por

C
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
226 vistas59 páginas

Guía Completa de Asterisk IP PBX

Asterisk es un software de código abierto que permite convertir un servidor en una centralita IP. Ofrece funcionalidades como buzón de voz, conferencias, colas de llamadas y más. El dialplan define el comportamiento de las llamadas mediante extensiones y contextos, asociando aplicaciones a cada extensión.

Cargado por

C
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Asterisk

Redes Multimedia

Sergio Herrería Alonso


Curso 2019/2020
Departamento de Enxeñaría Telemática
Universidade de Vigo
Contenido

1. Asterisk

2. Configuración básica

3. Configuración de canales

4. Dialplan

5. Funcionalidades avanzadas

1
Asterisk
¿Qué es Asterisk?

Asterisk
Open Source IP PBX (Private Branch Exchange)
• So tware que permite convertir un servidor en una centralita
telefónica
• Solución escalable para el despliegue de sistemas de VoIP (y
videoconferencia) de mediana y gran escala
• So tware multiplataforma
• Linux, FreeBSD, OpenBSD, macOS, Solaris
• Licencia de producto GNU GPLv2
• Permiso para ejecutar, modificar, redistribuir y publicar
mejoras del código fuente
• Base para el desarrollo de productos comerciales

Asterisk 2
IP PBX

Asterisk 3
Un poco de historia…

• Creado originalmente por Mark Spencer en 1999


• Necesitaba una PBX para su empresa pero no disponía del
dinero suficiente…
• En 2002 Mark Spencer funda Digium, empresa encargada
de administrar y mantener el código fuente de Asterisk
• Soporte técnico, certificaciones dCAA y dCAP…
• Digium también vende hardware compatible con Asterisk
• Tarjetas PCI para conectar líneas telefónicas analógicas y
digitales a Asterisk
• Hardphones, VoIP gateways, servicios cloud…
• En la actualidad Asterisk es una solución VoIP robusta,
tanto para empresas como para proveedores

Asterisk 4
Versiones

• 1.0 (Septiembre 2004)


• 1.4 (Diciembre 2006)
• 1.6 (Octubre 2008)
• 1.8 (Octubre 2010)
• …
• 13.0 LTS (Octubre 2014)
• 16.0 LTS (Octubre 2018)
• Última versión: 16.8.0 (Febrero 2020)
• 17.0 Standard (Septiembre 2019)
• Última versión: 17.2.0 (Febrero 2020)

Asterisk 5
Funcionalidades básicas

1. Soporte de protocolos VoIP


• SIP, IAX, SCCP, H.323, Google Talk, MGCP…
2. Soporte de telefonía tradicional
• Líneas analógicas y digitales (acceso BRI y PRI E1/T1)
3. Funciones de centralita
• Buzón de voz
• Desvío de llamadas
• Conferencias
• Colas de llamadas
• Transferencia de llamadas
• Música en espera
• Registro de llamadas
• Envío y recepción de faxes
• …

Asterisk 6
Funcionalidades avanzadas

• IVR (Interactive Voice Response)


• Gestión de llamadas a través de un menú interactivo
• AstDB (Asterisk Database)
• Registro y consulta de datos en tiempo de ejecución
• AGI (Asterisk Gateway Interface)
• Invocación de aplicaciones externas (Python, Ruby, PHP…)
desde Asterisk
• AMI (Asterisk Management Interface)
• Administración y control remoto de un servidor Asterisk
• ARI (Asterisk REST Interface)
• API REST para construir aplicaciones basadas en Asterisk

Asterisk 7
Software relacionado

• Proxy SIP
• Kamailio
• OpenSIPS
• Brekeke SIP Server
• So tswitch
• 3CX Phone System
• Brekeke PBX
• FreeSWITCH
• MediaCore SBC
• Yate
• Distribuciones Linux
• FreePBX Distro
• CentOS + Asterisk + FreePBX (GUI)
• Elastix

Asterisk 8
Requisitos del sistema

• Asterisk es intensivo en CPU


• Instalación sobre plataformas BSD y GNU/Linux
• Configuración server (servidor dedicado o alta prioridad)
• Asterisk en la “nube”
• Factores que afectan al rendimiento
• Número de llamadas simultáneas
• Códecs utilizados (G.711, G.729, GSM…)
• Compromiso entre ancho de banda y uso del procesador
• Provisión de conferencias
• Transcodificación y mezcla de flujos de audio
• Cancelación de eco (PSTN)
• Llamadas a programas externos
• Interrupciones IRQ

Asterisk 9
Referencias

• Libros
• R. Bryant, L. Madsen, J. Van Meggelen. “Asterisk: The
Definitive Guide”, 5/e. O’Reilly, 2019
• F. Goncalves. “Complete Asterisk Training”. 2019
• L. Madsen, R. Bryant. “Asterisk Cookbook”. O’Reilly, 2011

• Recursos electrónicos
• [Link]
• [Link]
• [Link]
• [Link]

Asterisk 10
Instalación

• A partir de paquetes
• Disponibles para Debian, Ubuntu, Fedora, CentOS…
• Ubuntu: > apt-get install asterisk
• A partir del código fuente
• Asterisk
• DAHDI: drivers de control de las tarjetas telefónicas
• libpri: conexión de Asterisk con líneas digitales RDSI
• Instalación previa de varias librerías dependientes
• gcc, ncurses, OpenSSL, newt, libxml2, Kernel headers…
• Conjuntamente con una distribución Linux preparada
• FreePBX Distro, Elastix

Asterisk 11
Arranque y detención

CLI (Command Line Interface)


Consola desde la que controlar y monitorizar la centralita
• Arranque
• > asterisk: ejecución en segundo plano
• > asterisk -c: ejecución en primer plano (inicia la CLI)
• > asterisk -r: conexión a la CLI cuando Asterisk ya se esté
ejecutando en segundo plano
• Detención
• CLI> core stop now: detención inmediata
• CLI> core stop when convenient: detención cuando no
haya llamadas en curso
• CLI> core stop gracefully: detención cuando no haya
llamadas en curso (y no se aceptan nuevas llamadas)
• CLI> Ctrl+C : solo desconexión de la CLI

Asterisk 12
Niveles de verbosidad

• Nivel de verbosidad
• Cuanto mayor sea, más mensajes se mostrarán en la CLI
sobre lo que sucede en la centralita
• > asterisk -vvvc
• CLI> core set verbose 3
• Nivel de depuración
• Cuanto mayor sea, más mensajes de depuración se
mostrarán en la CLI (para desarrolladores)
• > asterisk -dddc
• CLI> core set debug 3
• Trucos CLI
• Tecla <Tab>: completar/mostrar comandos disponibles
• Tecla <Up>: mostrar comandos introducidos anteriormente
• Ejecución de comandos de consola Linux: CLI> !ls

Asterisk 13
Configuración básica
Arquitectura modular

Configuración básica 14
Canales

Una llamada es una concatenación de canales punto a punto


Canal
Toda conexión entre Asterisk y cualquier otro dispositivo
(terminal, centralita, otro servidor)

• Canales VoIP: SIP, IAX, H.323, MGCP…


• Canales hardware: DAHDI (analógicos/digitales)
• Canales de consola: dispositivos OSS/ALSA como so tphones

Asterisk Asterisk

Canal SIP Canal IAX Canal DAHDI

Configuración básica 15
Dialplan

Dialplan
Plan de marcación que define el comportamiento lógico de la
centralita
• Define el itinerario que han de seguir las llamadas desde que
llegan a la centralita hasta que finalizan
• Se compone de varios contextos y extensiones
• Una extensión es la lista de acciones (un programa) que hay
que ejecutar para cada llamada entrante o saliente
• Identificadas mediante cadenas alfanuméricas: 101, luis…
• Un contexto es una colección de extensiones bajo un mismo
identificador
• Aplicación de distintas políticas de seguridad
• Diferenciación de servicios por extensiones

Configuración básica 16
Dialplan

Aplicación
Cada una de las posibles acciones individuales asociadas a
una extensión

• Asterisk ejecuta secuencialmente (dependiendo de su


prioridad) las aplicaciones asociadas a cada extensión
• Ejemplos:
• Dial(): realizar una llamada
• Hangup(): colgar una llamada
• Answer(): contestar a una llamada
• Playback(): reproducir un fichero de audio
• …

Configuración básica 17
Estructura del dialplan

DIALPLAN

Context A Context B
Extension 100 Extension 100
Priority 1: Application 1 Priority 1: Application 1
Priority 2: Application 2 Priority 2: Application 2
Priority 3: Application 3 Priority 3: Application 3

Extension 101 Extension 101


Priority 1: Application 1 Priority 1: Application 1
Priority 2: Application 2 Priority 2: Application 2

Extension 200
Priority 1: Application 1
Priority 2: Application 2
Priority 3: Application 3

Configuración básica 18
Ficheros de configuración

Habitualmente residen en /etc/asterisk


• Configuración general
• [Link]
• [Link]
• Configuración de canales
• [Link]
• [Link]
• chan_dahdi.conf
• Configuración del dialplan
• [Link]
• Configuración de funcionalidades adicionales
• [Link]
• [Link]
• …

Configuración básica 19
[Link]

[transport-udp] [100]
type = transport type = auth
protocol = udp auth_type = userpass
bind = [Link]:5020 username = 100
password = querty
[acl-subnet]
type = acl [100]
deny = [Link]/[Link] type = aor
permit = [Link]/23 max_contacts = 1
qualify_frequency = 30
[100]
type = endpoint
context = phones
acl = acl-subnet
language = es
disallow = all
allow = alaw,gsm
auth = 100
aors = 100

Configuración básica 20
[Link]

El fichero [Link] contiene el dialplan

[general]

[phones]

exten => _10X,1,Dial(PJSIP/${EXTEN})


exten => _10X,2,Hangup

exten => 600,1,Answer


exten => 600,2,Playback(demo-echotest)
exten => 600,3,Echo
exten => 600,4,Playback(demo-echodone)
exten => 600,5,Hangup

Configuración básica 21
Rangos de extensiones

Asterisk permite especificar rangos de extensiones mediante


los patrones de coincidencia
• Los patrones comienzan por el carácter _
• X representa cualquier dígito entre 0 y 9
• Z representa cualquier dígito entre 1 y 9
• N representa cualquier dígito entre 2 y 9
• [ij] representa el dígito i o el dígito j
• [i-j] representa cualquier dígito entre el i y el j
• . representa cualquier cadena no nula de caracteres
• ! representa cualquier cadena de caracteres
• Ejemplos:
• Teléfonos fijos de Galicia: _[89]8[1268]XXXXXX
• Teléfonos móviles: _[67]XXXXXXXX
• Cualquier número: _.!

Configuración básica 22
Control del flujo

Asterisk ejecuta en orden estricto de prioridad las aplicaciones


asociadas a cada extensión

• La prioridad n (next) es equivalente a sumar uno a la


prioridad anterior
• Facilita la escritura e interpretación del dialplan
• Con el prefijo same evitamos repetir la extensión
• Ejemplo:
exten => 600,1,Answer
same => n,Playback(demo-echotest)
same => n,Echo
same => n,Playback(demo-echodone)
same => n,Hangup

Configuración básica 23
Comandos CLI

• CLI> module reload res_pjsip.so


• CLI> pjsip list endpoints|auths|aors|channels
• CLI> pjsip show endpoints|auths|aors|channels
• CLI> pjsip show endpoint|auth|aor name
• CLI> dialplan reload
• CLI> dialplan show context
• CLI> core reload

Configuración básica 24
Configuración de canales
SIP

SIP (Session Initiation Protocol)


Protocolo de señalización genérico diseñado específicamente
para Internet (RFC 3261)

• Gestión de llamadas: inicio, finalización, transferencia…


• Localización y disponibilidad de usuarios
• Protocolo “fuera de banda”
• Señalización: udp/5060 ([Link])
• Audio: udp/10000–20000 ([Link])
• Protocolo textual
• Problemas con NAT
• Cambios en las direcciones IP y/o números de puerto

Configuración de canales 25
Plantillas

Las plantillas permiten definir opciones comunes para varios canales

[codecs](!) [100](softphones)
disallow = all auth = 100
allow = alaw,gsm aors = 100

[softphones](!,codecs) [100](auth-userpass)
type = endpoint username = 100
context = phones password = qwerty
acl = acl-subnet
language = es [100](aor-single-reg)

[auth-userpass](!) [101](softphones)
type = auth auth = 101
auth_type = userpass aors = 101

[aor-single-reg](!) [101](auth-userpass)
type = aor username = 101
max_contacts = 1 password = asdfg
qualify_frequency = 30
[101](aor-single-reg)

Configuración de canales 26
Autenticación MD5

Es más seguro guardar las contraseñas cifradas (hash MD5)

[auth100]
type = auth
auth_type = md5
realm = [Link] ; asterisk by default
username = 100
; echo -n "100:[Link]:qwerty" | md5sum
md5_cred = 90f00e866b7cf724b2be465c63a5ab84

Configuración de canales 27
Conexión a un proveedor SIP

1. Configurar el canal SIP con el proveedor ([Link])


[mytrunk] [mytrunk]
type = registration type = aor
outbound_auth = mytrunk contact = sip:[Link]
server_uri = sip:account@[Link]
client_uri = sip:account@[Link] [mytrunk]
type = endpoint
[mytrunk] context = from-external
type = auth outbound_auth = mytrunk
auth_type = userpass aors = mytrunk
username = account
password = 1234567890 [mytrunk]
type = identify
endpoint = mytrunk
match = [Link]

2. Configurar las extensiones ([Link])


[phones]
exten => _[67]XXXXXXXX,1,Dial(PJSIP/${EXTEN}@mytrunk)

[from-external]
exten => _.!,1,Dial(PJSIP/100)

Configuración de canales 28
IAX

IAX (Inter Asterisk eXchange)


Protocolo de señalización propio de Asterisk utilizado en la
interconexión de centralitas Asterisk
• Protocolo “dentro de banda”
• Audio y señalización a través de un único canal (udp/4569)
• Protocolo binario (no textual)
• Soporta trunking: múltiples llamadas por el mismo flujo
• Ahorro de ancho de banda (sobrecarga de cabeceras)
• Soporta cifrado (AES128) y autenticación (MD5, RSA)
• Transparente a NAT
• So tphones detrás de NAT: Zoiper, KIAX

Configuración de canales 29
IAX

El fichero [Link] contiene una lista con los canales IAX


configurados y una serie de opciones generales

[general]
autokill=yes
jitterbuffer=yes

[centralita]
type=friend
host=[Link]
auth=plaintext
secret=querty
context=entrantes
encryption=yes

Configuración de canales 30
IAX

• Trunking
• trunk=yes
• Requiere temporizador (módulo dahdi_dummy)
• Autenticación
• auth=md5,rsa
• Las claves RSA se generan con el comando astgenkey y
se almacenan en /usr/share/asterisk/keys
• Dialplan
• Dial(IAX2/[user:pass@host]/exten[@context])
• Comandos CLI
• CLI> iax2 reload
• CLI> iax2 show peers
• CLI> iax2 show peer name
• CLI> iax2 show channels

Configuración de canales 31
Dialplan
Elementos

El dialplan está compuesto por:


• Contextos: grupo de extensiones bajo un mismo identificador
• Extensiones: lista de acciones a ejecutar para cada llamada
entrante o saliente
• Identificadas mediante cadena alfanumérica: 101, ana…
• s: para las llamadas sin extensión o para subrutinas
• i: extensión inválida, no definida o desconocida
• t: extensión de temporización en IVRs
• h: extensión de finalización de llamada
• fax: detección de fax en canales DAHDI
• Aplicaciones: cada una de las acciones individuales que es
posible asociar a una extensión
• CLI> core show application appname

Dialplan 32
Aplicaciones: Gestión de llamadas

• Answer([delay])
• Responde a la llamada tras esperar delay milisegundos
• Busy([timeout])
• Envía al llamante la señal de ocupado durante timeout
segundos y finaliza la llamada
• Dial(tech/resource[&...][,timeout[,opt]])
• Realiza una llamada
• Dial(PJSIP/juan)
• Dial(IAX2/luis:qwerty@proveedor/juan,10)
• Dial(PJSIP/juan&PJSIP/pedro&PJSIP/luis)
• Hangup([cause])
• Finaliza la llamada

Dialplan 33
Aplicación Dial()

• Si la llamada se realiza con éxito, finaliza la ejecución del


dialplan (o se salta a la extensión h)
• Si no, se continúa con el dialplan en la siguiente prioridad
• Opciones:
• A(file): reproduce el fichero de audio al llamado antes
de establecer la comunicación
• L(t): limita la duración de la llamada a t milisegundos
• m: reproduce música al llamante mientras no se responde
a la llamada
• t: la llamada puede ser transferida por el llamado
• T: la llamada puede ser transferida por el llamante
• w: el llamado puede grabar la llamada
• W: el llamante puede grabar la llamada
• …

Dialplan 34
Aplicaciones: Reproducción de audio

• PlayBack(filename)
• Reproduce el fichero de audio
• Background(filename)
• Reproduce el fichero de audio mientras espera a que se
intoduzca una extensión
• SayDigits(digits)
• Reproduce los dígitos de uno en uno
• SayNumber(number)
• Reproduce el número
• SayAlpha(string)
• Reproduce los caracteres de la cadena

Dialplan 35
Aplicaciones: Grabación de audio

• Monitor(format,filename)
• Graba la llamada: [Link] (audio de
entrada), [Link] (audio de salida)
• MixMonitor([Link])
• Graba la llamada completa en un único fichero
• StopMonitor(), StopMixMonitor()
• Detiene la grabación iniciada con Monitor, MixMonitor
• Record([Link][,silence[,maxdur]])
• Graba mensajes de voz
• Permite especificar los segundos en silencio antes de que
se detenga la grabación o la duración máxima del mensaje

Dialplan 36
Más aplicaciones…

• Verbose([level,]message)
• Muestra el mensaje en la CLI si el nivel de verbosidad es
igual o superior al indicado (herramienta de depuración)
• Wait(t)
• Espera t segundos
• WaitExten(t)
• Espera t segundos a que se introduzca una extensión
• Authenticate(password)
• Espera a que el usuario introduzca una contraseña para
continuar la ejecución
• System(command)
• Ejecuta un comando del sistema

Dialplan 37
Variables

Asterisk permite el empleo de variables

• Inicialización: Set(VARNAME=value)
• Uso: ${VARNAME}
• Manipulación: ${VARNAME[:skip[:length]]}
• Ejemplo:
exten => 700,1,Set(NUMBER=98765)
same => n,Verbose(${NUMBER:2}) ; 765
same => n,Verbose(${NUMBER:-2}) ; 65
same => n,Verbose(${NUMBER:1:3}) ; 876

Dialplan 38
Variables

• Variables globales
• Válidas en todos los contextos y extensiones
• Se declaran en el [globals] del [Link]
• Set(GLOBAL(VARNAME)=value)
• Variables de canal
• Válidas únicamente durante la llamada
• Variables predefinidas:
• ${CONTEXT}, ${EXTEN}, ${PRIORITY}
• ${UNIQUEID}, ${CHANNEL}
• ${CALLERID(name)}, ${CALLERID(num)}
• ${DIALSTATUS}: CHANUNAVAIL, CONGESTION, BUSY,
NOANSWER, ANSWER, CANCEL
• ${DIALEDTIME}, ${ANSWEREDTIME}
• ${SYSTEMSTATUS}: FAILURE, SUCCESS, APPERROR
• ${EPOCH}

Dialplan 39
Expresiones

Las variables se pueden combinar en expresiones aritméticas


y lógicas

• Operadores lógicos: |, &, =, >, <, >=, <=, !=


• Comparación entre enteros o cadenas de caracteres
• Operadores matemáticos: +, -, *, /, %
• Ejemplo:
exten => 700,1,Set(NUM=10)
same => n,Set(NUM=$[${NUM}*2])
same => n,Set(COND1=$[${NUM}>10])
same => n,Set(COND2=$[${COND1} & (${NUM}<30)])

Dialplan 40
Funciones

Asterisk puede invocar funciones predefinidas sobre las


variables para realizar algunos cálculos útiles

• ${FUNCTION(parameters)}
• Algunas funciones típicas: ISNULL, EXISTS, LEN, CUT,
RAND, INC, MATH, MD5, SHA1…
• Ejemplo:
exten => 700,1,Set(TEXT=Hola mundo)
same => n,Set(L=${LEN(${TEXT})})
same => n,Set(COND=${ISNULL(${TEXT})})
same => n,Set(TEXT=${CUT(TEXT, ,1)})

Dialplan 41
Control del flujo

• Saltos incondicionales
• Goto([[context,]extension,]priority)
• Se pueden asignar etiquetas a las prioridades para facilitar
la programación del dialplan
• Goto(label)

• Ejemplo:
exten => 700,1,Answer(1000)
same => n,Set(COUNT=1)
same => n(repeat),SayNumber(${COUNT})
same => n,Verbose(${INC(COUNT)})
same => n,Goto(repeat)

Dialplan 42
Control del flujo

• Saltos condicionales
• GotoIf(condition?label1:label2)
• Si la condición se cumple, se salta a label1
• Si no se cumple, se salta a label2
• Si se omite alguna de las etiquetas, se continúa con la
ejecución secuencial de prioridades

• Ejemplo:
exten => 700,1,Answer(1000)
same => n,Set(COUNT=1)
same => n(repeat),GotoIf($[${COUNT}<=5]?:bye)
same => n,SayNumber(${COUNT})
same => n,Verbose(${INC(COUNT)})
same => n,Goto(repeat)
same => n(bye),Hangup

Dialplan 43
Control del flujo

• Bucles
• While(condition)
• EndWhile
• ExitWhile, ContinueWhile

• Ejemplo:
exten => 700,1,Answer(1000)
same => n,Set(COUNT=1)
same => n,While($[${COUNT}<=5])
same => n,SayNumber(${COUNT})
same => n,Verbose(${INC(COUNT)})
same => n,EndWhile
same => n,Hangup

Dialplan 44
Control del flujo

GoSub
Asterisk permite definir subrutinas para evitar la repetición
innecesaria de código en el dialplan

• Pueden recibir parámetros: ${ARG1}, ${ARG2}…


• Con la aplicación Return se vuelve al flujo principal
[gosub-test]
exten => s,1,Verbose(Llamada desde ${ARG1})
same => n,Playback(tt-weasels)
same => n,Return(123)
[phones]
exten => 700,1,Gosub(gosub-test,s,1(${EXTEN}))
same => n,Verbose(Devuelve ${GOSUB_RETVAL})
same => n,Hangup

Dialplan 45
AstDB

AstDB
Asterisk incluye una base de datos interna donde se puede
almacenar datos de manera persistente

• Los datos se agrupan formando familias


• Dentro de una familia, a los datos se accede por su clave o
identificador
• Gestión desde la CLI:
• CLI> database put family key value
• CLI> database show [family [key]]
• CLI> database get family key
• CLI> database del family key
• CLI> database deltree family

Dialplan 46
AstDB

Gestión de la AstDB desde el dialplan:


• Guardar: Set(DB(family/key)=value)
• Recuperar: ${DB(family/key)}
• Eliminar: ${DB_DELETE(family/key)}
• Eliminar familia: DBdeltree(family)
• Comprobar existencia: ${DB_EXISTS(family/key)}
• Ejemplo:
exten => 700,1,Answer(1000)
same => n,GotoIf($[${DB_EXISTS(test/num)}]?cont)
same => n,Set(DB(test/num)=1)
same => n(cont),SayNumber(${DB(test/num)})
same => n,Set(DB(test/num)=$[${DB(test/num)}+1])
same => n,Hangup

Dialplan 47
Funcionalidades avanzadas
IVR (Interactive Voice Response)

exten => 800,1,Goto(menu,s,1)

[menu]
exten => s,1,Answer(1000)
same => n(loop),Background(press-1&or&press-2)
same => n,WaitExten(5)

exten => 1,1,SayNumber(${EXTEN})


same => n,Goto(s,loop)

exten => 2,1,SayNumber(${EXTEN})


same => n,Goto(s,loop)

exten => i,1,Playback(invalid)


same => n,Goto(s,loop)

exten => t,1,Playback(vm-goodbye)


same => n,Hangup

Funcionalidades avanzadas 48
Buzón de voz

Voicemail
Asterisk permite la creación de buzones de voz como simples
extensiones individuales

• Asociación de varios buzones a un único teléfono


• Asociación de un único buzón a varios teléfonos
• Acceso a los buzones protegido mediante contraseña
• Alocuciones personalizadas dependiendo del estado
• Notificación a través del correo electrónico
• Posibilidad de enviar el mensaje de voz como adjunto
• Requiere configurar un servidor de correo (postfix…)
• Notificación mediante indicador luminoso o tono especial

Funcionalidades avanzadas 49
Buzón de voz

El fichero [Link] contiene la lista con los buzones


de voz configurados y una serie de opciones generales

[general]
format = alaw ; Formats for writing Voicemail
maxmsg = 100 ; Max number of messages per folder
maxsecs = 180 ; Max length of a voicemail message in seconds
maxsilence = 10 ; Seconds of silence before ending recording
maxlogins = 3 ; Max number of failed login attempts

[zonemessages]
european = Europe/Copenhagen|'vm-received' a d b 'digits/at' HM

[vmphones]
;mailbox => pin,name[,email[,short email[,options]]]
100 => 1234,Aitor Menta,aitor@[Link]
101 => 5678,Elena Nito,nito@[Link],nito@[Link],tz=european

Funcionalidades avanzadas 50
Buzón de voz

• Comandos CLI:
• CLI> voicemail reload
• CLI> voicemail show users
• CLI> voicemail show zones

• Asociación de los buzones de voz a las extensiones


correspondientes en el fichero [Link]
[100]
type = endpoint
context = phones
aors = 100
auth = auth100
mailboxes = 100@vmphones

Funcionalidades avanzadas 51
Buzón de voz

• VoiceMail(mailbox[@context][&...][,opt])
• Reenvía la llamada al buzón de voz
• VoiceMailMain(mailbox[@context][,opt])
• Acceso y configuración del buzón de voz

exten => _1XX,1,Dial(PJSIP/${EXTEN},20)


same => n,GotoIf($[${DIALSTATUS}=BUSY]?busy)
same => n,VoiceMail(${EXTEN}@vmphones,u)
same => n,Hangup
same => n(busy),VoiceMail(${EXTEN}@vmphones,b)
same => n,Hangup

exten => 800,1,Answer(1000)


same => n,VoiceMailMain(${CALLERID(num)}@vmphones)
same => n,Hangup

Funcionalidades avanzadas 52
Música en espera

Asterisk puede amenizar (o torturar) la espera del llamante


con una agradable música de fondo
• Conviene evitar códecs complejos para no sobrecargar el
procesador (MP3, Opus…)
• Se recomienda utilizar formatos nativos de Asterisk para evitar
transcodificaciones durante la reproducción
• SoX (Sound eXchange)
> sox file.mp3 -r 8000 -c 1 -e a-law [Link]
• Fichero de configuración: [Link]
[default]
mode = files
directory = moh
sort = random
• CLI> moh reload

Funcionalidades avanzadas 53

También podría gustarte