====== 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 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.