Sie sind auf Seite 1von 10

ASTERISK

Archivos
de
configuración
y
uso del CLI.
Introducción

Las llamadas en asterisk pueden ser cursadas por medio de diferentes protocolos.
Algunos de los protocolos mas conocidos son:

• H323
• SIP
• IAX
• Zap

Dependiendo el tipo de canal que se use, es el software cliente que se necesita.

Si nos registramos a Asterisk como un usuario SIP, necesitaremos un telefono cliene que sepa
manejar dicho canal, asimismo para con IAX.

Vamos a ver un ejemplo de configucion de un cliente SIP o IAX

Los archivos de configuracion estan en /etc/asterisk.

extensions.conf es donde esta nuestro Dialplan.

Este archivo contiene


• El 'dial plan' de Asterisk.
• El control maestro del flujo de ejecucion.
• Controla como las llamadas entrantes y salientes son manejadas y ruteadas.
• Es donde configuramos la conducta de todas las conecciones que pasan por
nuestra PBX.

El conenido de "extensions.conf" esta organizado en secciones, las cuales se usan para ajustes y
definiciones estaticas, asi como tambien para los componentes ejecutables del dial plan a los cuales nos
referiremos como contextos.

Las secciones de configuracion son:


• General.
• Globals
• Nombres de los contextos, definidos por el administrados.

[general]
Siempre debe estar al principo de archivo, en esta secciones se configuran unos pocos
parametros generales

[globals]
Aca se pueden definir variables globales o constantes, asi como sus valores iniciales.

Contextos y Extensiones
Despues de general y globals, el resto del archivos se usa para definir el dialplan.
El dialplan consiste en una colección de contextos, y cada contexto consiste en una colección de
extensiones.

Patrones de Extensiones - Extension Patterns


Cuando definimos las extensiones dentro de un contexto, podemos no solo utilizar números o
caracteres, sino que tambien podemos hacer coincidir los numeros marcados completos, usando
padrones de extension.
Inclusion de contextos
Un contexto o extension puede incluir el contenido de otro contexto.
Por ejemplo

Contexto 'default'
Extension 101 – Pepe
Extension 102 – Juan

Contexto 'local'
Extension _NXXXXXX - Llamadas locales
include => 'default'

Contexto 'largadistancia
Extension _00NXX, - Llamadas de larga distancia
include => 'local'

Aca definimos 3 extensiones


El contexto default permite discar las extensiones internas.
El contexto local tiene un dial pattern para llamadas locales y ademas incluye los internos de
default
El contexto largadistancia tiene un dial pattern para llamadas internacionales, incluye tambien el
contexto local y a su vez por transitiva tambien incliuye el contexto default
Si mas de un dial pattern coincide con un numero marcado, asterisk puede no hacer lo que uno
pretende.
No se desde que version es que si a una seccion le agregamos el simbolo de +, esta se toma
como una agregacion de la primera, en caso de no agregar este simbolo, la carga de la configuracion
pueda fallar.
Cuando Asterisk recibe una coneccion entrante en un canal, este se fija en el contexto definido
por este canal en busqueda de comandos.
Este contexto define diferentes configuraciones y comandos, dependiendo de la extension que se
halla discado.
Por ejemplo, un contexto provee un set de comandos para cuando el usuario disca 123, otro set
de coamndos cuando el usuario disca 9, y otro set de comandos para cuando el usuario digita un numero
que comienza con 555.
Para algunos tipos de conexiones, como las llamadas entrantes, en donde el usuario no digita
ningun numero en especial , el asterisk se comporta como si se hubiera digitado un numero especial 's'
que indica el comienzo de una llamada (s de Start).
En ese momento asterisk busca una extension s en la definicion del contexto del canal de
entrada, para luego seguir los comandos definidos.

Extensiones
Estas pueden ser de dos tipos, literales o patrones.
Una extension literal puede ser un numero y/o simbolos estandar como * y #. Algunos telefonos
especiales tambien definen otros caracteres como A B C D que tambien se pueden incluir en este tipo de
extensiones.
Los nombres de las extensiones son case sensitive... bueno en realidad no... o si ?
En realida es case sensitive en el sentido de que si no corresponde exactamente con la
extension, esta no sera encontrada, pero no es case sensitve en el sentido de que no puede haber dos
extensiones con el mismo nombre (Pepe - PEPE).

Nombres de extensiones reservados


• i : Invalid
• s : Start
• h : Hangup
• t : Timeout
• T : AbsoluteTimeout
• o : Operator

Definicion de Extensiones

En las PBX tradicionales, las extensiones son asociadas con telefonos fisicos, en asterisk una
extension es una lista de comandos.
Los comandos son generalmente ejecutados en el order definido en el parametro de prioridad.
Algunos comandos como Dial y Gotoif tienen la habilidad de redireccional el flujo de ejecuion
basado en las condiciones que se establescan.
Cuando una extension es discada, la ejecucion de los comandos comienzan con el parametro de
prioridad 1, luego con el 2 y asi sucesivamente.
Este flujo se corta cuando:
• La llamda es cortada.
• Un comando retorna como parametro -1
• El proximo parametro de priioridad es menor al actual.
• La llamda es ruteada a otra extension.

Sintaxis:
exten = extension,prioridad,Comando(parametros)

extension – es la etiqueta de la extension y puede ser un literal o un pattern, todas las lineas
relacionadas con esta extension debe de mantener la etiqueta extension igual.
prioridad – es un numero entero que determina la secuencia numerica ordenada de cada
comando dentro de la ejecucion de una extension.
Comando – es tambien conocido como la aplicación a ejecutar.
parametros – depende de la implementacion de cada comando.

Ejemplo:

exten=>123,1,Answer
exten=>123,2,Playback(Abierto)
exten=>123,3,Voicemail(44)
exten=>123,4,Hangup

Otro tipo de opcion para defeinir en una extension, es lo que normalmente llamamos la logica de
la ex-novia, Esta logica ara coincidir la extencion destino o marcada con la extension que origino la
llamada como si fuera una sola extension.
Ejemplo

exten => 123/100,1,Answer()


exten => 123/100,2,Playback(hastalavistababy)
exten => 123/100,3,Hangup()

Si discan mi extension 123 y ademas el que disco mi extension es el 100 ejecuto los comandos
anteriirmente ejemplificados.

Otros ejemplos.
exten => 1234/_256NXXXXXX,1,Answer()
Este ejemplo hace que se conteste la llamada si discan el interno 1234 desde el telefono que
coincida con el dial pattern 256NXXXXXX

exten => s,1,Answer


exten => s/9184238080,2,Set(CALLERID(name)=Mala Persona)
exten => s,2,Set(CALLERID(name)=Buena Persona)
exten => s,3,Dial(SIP/goodperson)

Este ejemplo basicamente filtra la llamada de entrada con el nro 9184238080 cortando la
ejecucion, al no encontrar un priority 3,.
En caso que no se necesite una conducta como la del ejemplo anterior, se pude substituir el
parametro de prioridad numerico por una 'n'.
'n' hace que no sea necesario numerar los comandos de las extensiones, ya que internamente se
numeran automaticamente según esten ingresadas las lineas.

Variables y expresiones
Podemos usar el constructor de variables ${VARIABLENAME} o el contructos de expresiones
$[EXPRESSION] .

Usar un gran archivo de configuracion o varios peque;os.


Con el comando #include nombredearchivo en extensions.conf se pueden incluir otros archivos
de nuestro dial plan. De esta manera podemos configurar un sitema donde extensions.conf sea nuestro
archivo principal, user.conf contenga nuestros usuarios locales y services.conf contenga la configuracon
de los servicios.
Esto hara que nuestro dial plan pueda ser interpretado y mantenido mas facilmente.
Tener en cuenta que #include nombredearchivo NO es lo mismo que es comando include
contexto.

Reenviando a otro Asterisk

Syntaxis

[iaxprovider]
switch => IAX2/usuario:clave@servidor/contexto

El ejemplo anterior especifica el reenivio de la llamada a otro servidor


Usuario y clave deben estar definido en el archivo iax.conf del servidor destino y contexto debe
exister en extension.conf del servidor destino.

Ejemplo de uso del comando #include

#include "miarchivo"

[globals]
ALL=Zap/1&SIP/1000&SIP/1001

[default]
exten => s,1,Answer
exten => s,2,Playback(Bienvenido)
exten => s,3,Goto(contextoenmiarchivo,s,1) ; va al contextoenmiarchivo del include.

Ejemplos de Macro
Este ejemplo usa una macro para crear extensiones
[globals]
PHONE1=Zap/1
PHONE2=SIP/6002

[macro-oneline]
exten => s,1,Dial(${ARG1},20,t)
exten => s,2,Voicemail(u${MACRO_EXTEN})
exten => s,3,Hangup
exten => s,102,Voicemail(b${MACRO_EXTEN})
exten => s,103,Hangup

[local]
exten => 6601,1,Macro(oneline,${PHONE1})
exten => 6602,1,Macro(oneline,${PHONE2})
Canales de asterisk

Un canal es la conexión que transporta las llamadas en asterisk. cada llamada se recibe y envia
por medio de los canales.

Tipos de canales - Channel Types


Estos son algunos de los tipos de canales que provee Asterisk.
• Agent: Canal de agentes ACD.
• H.323: Viejo protocolo de Voip
• IAX and IAX2: Inter-Asterisk Exchange protocol.
• Local: Loopback dentro dentro de otro contexto.
• MGCP: Media Gateway Control Protocol, otro protocolo de VOIP.
• SIP: Session Initiation Protocol, el mas comun de los protocolos VOIP
• Skinny: Un driver pare el Cisco Skinny Client Control Protocol (SCCP)
otro protocolo VOIP
• Gtalk: Un driver para el Google Talk.
• Zap: Para conectar telefonos y lineas analogicas usando una tarjeta TDM.
Configuracion de usuarios

Toda la informacion aceerca de usuarios es guardada en el archivo sip.conf para SIP y en


iax.conf para IAX. Las extensiones son leidas desde el archivo extensions.conf. y el Voicemail es
guardado en voicemail.conf etc.

Para hacer una llamada a travez de Asterisk, no es necesario estar registrado, pero es necesario
tener un usuario y contrase;a para hacer una llamada a alguen que este registrado.
Para recibir una llamada, ademas de tener que estar regitrado, tenemos que tener asociada una
extenacion.

Registrar usuarios SIP

Todos los usuarios deben estar registrados en sip.conf y tener una extension valida en
extension.conf.
Vamos a registrar un usuario en sip.conf y luego registrar un numero en extension.conf

Editamos sip.conf y configuramos un usuario sip

[edu]
Esto hace que configure el usuario EDU

type=friend
Esto hace que el usuario pueda hacer o recibir llamdas. Solo use peer como type en caso de
llamadas entrantes. Para llamadas salientes use user como type.

username=edu
Esto declara que llamaremos al usuario EDU

secret=clavedeedu
Esto crea la contrase;a clavedeedu para la autenticadion del usuario.

host=dynamic
Este parametro puede ser dynamic o static.

context=ejemplo
Esto define el contexto de discado para el usuario.

Editamos extensions.conf y configuramos una extension.

[ejemplo]
Esto registra el contexto ejemplo

exten => 1234,1,Dial(SIP/edu)


cuando discan el numero 1234 asterisk enviara esa llamada al telefono del usuario registrado
SIP/edu

Registrar usuarios IAX

Editar el archivo iax.conf y agregar un usuario IAX

Cree un usuario llamado eduiax, con un usuario y clave de la misma menrea que lo hizo en
sip.conf

Editar extensiions.conf y agrege una extension 1111 y cambie le comado de dial de la siguiente
manera Dial(IAX2/username@username)
Comandos del CLI

Asterisk CLI soporta una gran variedad de comandos que pueden ser usados como herramientas
de testing y debug.

Veamos algunos de los comandos mas usados en Asterisk.

Comandos de control.

! - Ejecuta un comando de shell.


abort halt - Cancela la ejecución del comando halt.
feature show - Lista de features habilitados
help - Muestra la ayuda de los comandos,
local show channels - Muestra el detalle de los canales del tipo local.
meetme - Ejecuta un comando dentro de una sala de conferencias.
moh reload - Recarga la configuración de la música en espera.
restart gracefully - Reiniciar Asterisk amistosamente.
restart now - Reiniciar Asterisk inmediatamente.
restart when convenient - Reiniciar Asterisk cuando no se estén cursando llamadas.
soft hangup - Colgar un canal determinado.
stop gracefully - Parar el Asterisk amistosa mente
stop now - Parar Asterisk inmediatamente.
stop when convenient - Parar Asterisk cuando no se estén cursando llamadas.

Comandos de agentes.

agent logoff - Poner un agente fuera de linea.


agent show - Mostrar el status de los agentes.
agent show online - Mostrar todos los agentes en linea.

Comandos del core.

set debug channel - Habilitar/Des habilitar el debug en el canal.


set debug - Configurar el nivel de debug.
set verbose - Configurar el nivel de verbose.
show applications - Mostrar las aplicaciones registradas en el dialplan.
show application - Mostrar en detalle una aplicación del dialplan.
show audio codecs - Muestra la lista de codec soportados.
show channels - Muestra información de todos los canales.
show channel - Muestra información de un canal especifico.
show channeltypes - Lista de todos los tipos de canales del sistema.
show channeltype - Muestra información especifica de un tipo de canal.
show functions - Muestra información de todas las funciones.
show function - Muestra información especifica de una función
show translation - Muestra la matriz de traducción entre codecs.
show uptime - Muestra el tiempo de actividad.
show version - Muestra información de la versión.
show video codecs - Muestra la lista de codecs de vídeo soportados.

Comandos del dialplan.

add extension - Agrega extensiones al contexto.


add include - Agrega un include de un contexto en otro.
reload - Recarga SOLO la configuración de las extensiones.
remove extension - Elimina extensiones.
remove include - Elimina un include del contexto especifico.
show dialplan - Muestra el dialplan.

Comandos de IAX.

iax2 reload - Recargar la configuración IAX.


iax2 debug - Habilitar el debug de IAX.
iax2 show cache - Muestra el cache del dialplan IAX.
iax2 show channels - Muestra la lista de canales IAX activos.
iax2 show netstats - Muestra la lista netstat de los canales IAX.
iax2 show peers - Muestra la lista de peers IAX configurados.
iax2 show peer - Muestra en detalle un determinado peer IAX.
iax2 show registry - Muestra el estado de registro de los peer IAX.
iax2 show stats - Muestra estadísticas de IAX.
iax2 show users - Muestra la lista de usuarios IAX definidos.
iax2 test losspct - Configura el % de perdida de paquetes de entrada (para debug).

Comandos de colas.

show queue - Muestra información sobre determinada cola.


show queues - Muestra todas las colas configuradas.
show parkedcalls - Muestra la lista de llamadas en espera.

Comandos de RTP.

rtp debug ip - Habilita el debug para RTP para una dirección ip especifica..
rtp debug - Habilita el debug para RTP.
rtp no debug - Des habilita el debug para RTP.

Comandos de SIP.

sip reload - Recargar la configuración SIP.


sip debug - Habilita el debug de SIP.
sip debug ip - Habilita el debug de SIP. en una ip especifica.
sip no debug - Des habilita el debug de SIP.
sip debug peer - Habilita el debug de SIP en una peername especifico..
sip show channels - Muestra la lista de canales SIP activos.
sip show channel - Muestra información detallada de un canal SIP.
sip show peers - Muestra la lista de peers SIP definidos.
sip show peer - Muestra detalles de un peer SIP especifico.
sip show registry - Muestra el estado de registro de los peers SIP.
sip show users - Muestra la lista de usuarios SIP definidos.
sip show user - Muestra detalles de un usuario SIP especifico.

Das könnte Ihnen auch gefallen