Administracion centralita Asterisk

Directorios y ficheros

Directorios

Sistema basado en paquetes debian usados en Debian y Ubuntu Versión de asterisk ⇒1.4 y <1.6

  • /etc/asterisk configuracion
  • /usr/share/asterisk/sounds/[es] locuciones
  • /usr/share/asterisk/moh musica en espera
  • /usr/share/asterisk/agi-bin scripts

Ficheros

Cuando cambiamos algo en algun fichero de configuracion es necesario hacer un reload desde la consola de asterisk Los mas importantes o los que manejaremos con mas frecuencia son:

  • /etc/asterisk/extensions.conf dialplan En este fichero es donde esta la configuracion de como se va a comportar asterisk a la hora de manejar las llamadas y dirigirlas por un sitio u otro, es el corazon de la aplicacion
  • /etc/asterisk/sip.conf SIP Aqui se guarda toda la informacion relacionada con el canal SIP, en este caso no se guardan los usuarios ya que los cargaremos mediane el modulo de realtime a traves de LDAP
  • /etc/asterisk/extconfig.conf Configuracion externa Aqui es donde le indicaremos que debe completar la configuracion desde una base de datos externa
  • /etc/asterisk/res_ldap.conf Configuracion LDAP Relacion de atributos LDAP y parametros de asterisk a mapear
  • /etc/asterisk/meetme.conf Salas de conferencia Configuracion de las salas de conferencia
  • /etc/asterisk/voicemail.conf Buzon de voz Configuracion del buzon de voz

Estructura del fichero

Todos los ficheros tienen la misma idea de estructura, es muy parecida a la usada por los archivos .ini de windows.

Se basa en contextos, el titulo de cada contexto estara entre corchetes y un contexto acabara cuando comienze otro, ejemplo

[globals]
TODOS=SIP/1000&SIP/1001&SIP/1002
CASA=9XXXXXXXX

[dundi]
...

En este caso hay dos contextos, globals y dundi, cada uno con sus parametros

extensions.conf

Es el corazon de asterisk y aqui es donde definiremos su comportiento, este fichero siempre empieza por el contexto [general] donde se define la configuracion general, despues viene el contexto [globals] donde se definen las variables globales que luego podremos usar en el resto del fichero, estas siempre suelen ser indicadas en mayusculas.

Existen unos contextos especiales que son los contextos macros, se utilizan para automatizar tareas rutinarias. Para definir una macro el nombre del contexto debe comenzar por macro- seguido del nombre de la macro, por ejemplo [macro-stdexten]

En los contextos definiremos las acciones que asterisk va a realizar en funcion de a la extension que llama un usuario o de donde viene una llamada, las llamadas entraran al contexto que tenga definido el canal por el que entra o el contexto asociado al usuario que realiza la llamada por lo que podremos tener diferentes acciones en funcion del contexto relacionado.

La sintaxis es la siguiente

[prueba]
exten => 100,1,Dial(SIP/100)
exten => 100,2,Hangup
exten = _1XX,1,Playback(invalid)
exten = _1XX,n,Playback(vm-goodbye)
include = gratis

⇒ y = es lo mismo se puede usar uno u otro en funcion de lo que se haga para clarificar la vista

include, incluye otro contexto en este como si estubiera escrito a continuacion, o se inserta donde pongamos el include

exten, indica que es una extension y se compone de lo siguiente:

exten ⇒ extension,prioridad,aplicacion

  • extension: Es la extension con la que se comparara la marcada con el usuario si coincide se ejecutaran las acciones indicadas, si va precedida de _ quiere decir que es un patron, en e caso de _1XX coincide con todas las extensiones que empiezen por 1 y vayan seguidas de dos numeros. Tambien existen extensiones especiales s (llamadas sin destino, extension por defecto), t extension de timeout, i opcion invalida
    • X : un numero de 0-9
    • Z : un numero de 1-9
    • N : un numero de 2-9
    • . : unos mas caracteres alfanumericos ( hay que tener precaucion con este wildcard y poner al menos siempre una X delante o un numero)
    • [5-7] : 5 6 o 7
    • [348] : 3 4 o 8
  • prioridad: es el orden en el que se iran ejecutando las acciones empezando por la 1, hay una prioridad n que significa la siguiente a la anterior ejecutandose en el orden en que estan escritas
  • aplicacion: la aplicacion que se va a ejecutar con los parametros entre ()

ejemplos en nuestra configuracion:

 
[macro-stdexten];
;
; Macro estandar de extension:
;   ${ARG1} - Extension como argumento 1
;   ${ARG2} - Dispositivo a sonar como argumenton 2
;
exten => s,1,Dial(${ARG2},35)                   ; Llamar durante 35 segundos
exten => s,2,Goto(s-${DIALSTATUS},1)            ; Saltar segun status (NOANSWER,BUSY,CHANUNAVAIL,CONGESTION,ANSWER)
exten => s-NOANSWER,1,Voicemail(${ARG1},u)      ; Si no esta disponible saltar al buzon con mensaje de no disponible
exten => s-BUSY,1,Voicemail(${ARG1},b)          ; If busy, send to voicemail w/ busy announce
exten => _s-.,1,Goto(s-NOANSWER,1)              ; Treat anything else as no answer
exten => a,1,VoicemailMain(${ARG1})        

[default]
exten => s,1,Playback(vm-goodbye)  ;Nos despedimos de las llmadas sin destino
exten => s,2,Hangup
switch => Realtime/default@extensions ; Cargamos la configuracion de LDAP aqui

[casa]
include = echo
include = nacionales
include = internacionales
include = salas
include = buzon
include = app-speakingclock
inlcude = calltrace
include = default

[salas]
exten => 59,1,Meetme(59,cpv) ; betatesting
exten => 51,1,Meetme(51,cp) ; sala 51
exten => 52,1,Meetme(52,cp) ; sala 52
exten => 53,1,Meetme(53,cp) ; sala 53

[buzon]
exten = *99,1,VoicemailMain(${CALLERID(num)}) 
exten = *99,n,Hangup()

[nacionales]
exten = _9XXXXXXXX,1,Macro(trunkdial,${proveedor},${EXTEN:0},)

[internacionales]
exten = _0X.,1,Macro(trunkdial,${proveedor},00${EXTEN:1})  ; 0X. cualquier cosa que empize por 0 seguido de un numero o mas

mas info http://www.voip-info.org/wiki/index.php?page=Asterisk+config+extensions.conf

Consola de asterisk

Asterisk CLI es la consola de asterisk desde donde podemos debugear y comprobar el funcionamiento de asterisk, para acceder a ella debemos ejecutar asterisk -r podemos usar la funcion de autcompletado con la tecla tabulador

sballesteros@extranet:~$ sudo asterisk -r
Asterisk 1.4.1, Copyright (C) 1999 - 2006 Digium, Inc. and others.
Created by Mark Spencer <markster@digium.com>
Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under
certain conditions. Type 'core show license' for details.
=========================================================================
Connected to Asterisk 1.4.1 currently running on extranet (pid = 12312)
Verbosity is at least 3
extranet*CLI> 

Para debugear podemos ajustar el nivel de verbose y debug de la consola con los siguientes comandos

extranet*CLI> core set debug 3
Core debug was 0 and is now 3
extranet*CLI> core set verbose 3
Verbosity is at least 3
extranet*CLI> core set debug 0
Core debug is now OFF

Para un debug mas preciso podemos debugear directamente en el canal, por ejemplo con SIP podemos hacer lo siguiente

extranet*CLI> sip set debug ip 80.58.3.33
SIP Debugging Enabled for IP: 80.58.3.33
extranet*CLI> sip set debug off
SIP Debugging Disabled

Podemos ver los usuarios registrados en el momento con sip show peers, los usuarios que aparecen con Host (Unspecified) estan cacheados pero ya no estan registrados.

extranet*CLI> sip show peers
Name/username              Host            Dyn Nat ACL Port     Status     Realtime  
xxxxxxxxx/xxxxxxxxx        (Unspecified)    D   N      0        Unmonitored           
xxxxxxx/xxxxxxx            (Unspecified)    D   N      0        Unmonitored           
xxxxxxx/xxxxxxxx           xx.xxx.xx.118    D   N      62331    Unmonitored           
xxxxxxx/xxxxxxx            xx.xx.x.82       D   N      52106    Unmonitored           
xxxxxxxxxxxxxxx            (Unspecified)    D   N      0        Unmonitored           
xxxxxxxx/xxxxxxxx          xxx.xx.xxx.232   D   N      5060     Unmonitored           
xxxxxxxxxxx/xxxxxxxxxxxxx  (Unspecified)    D   N      0        Unmonitored           
7 sip peers [Monitored: 0 online, 0 offline Unmonitored: 3 online, 4 offline]

Tambien podemos administrar las salas de conferencia con el comando meetme, ver quienes estan conectados a una sala o expulsar a alguien

extranet*CLI> meetme list 52 
User #: 01         1188 xxxxxx              Channel: SIP/xxxxxx-083a7ef0    (unmonitored) 00:00:04
1 users in that conference.
 
Subir
manuales/asterisk.txt · Última modificación: 02/10/2007 03:10 por snaker