pbx

Upload: comas-olivos

Post on 05-Nov-2015

7 views

Category:

Documents


0 download

DESCRIPTION

pbx comandos

TRANSCRIPT

Qu es un PBX?

Es la sigla para Private Branch eXchange. Es el sistema que conecta llamadas dentro de la misma compaa. Comnmente puede tener desde dos a diez mil extensiones y una conexin al

sistema telefnico tradicional (PSTN) para llamadas hacia y desde el exterior de la compaa.

Canal: Es una conexion que conduce una llamada entrante o saliente en el sistema asterisk. La conexion puede venir o salir hacia telefonia tradicional analogica o digital, o VoIP.

Dialplan: Se trata de la configuracion de la central de asterisk que indica el itinerario que sigue una llamada desde que entra o sale del sistema hasta que llega a su punto final. Se trata en lineas generales del comportamiento logico de la central.

Extension: En telefonia tradicional, las extensiones se asocian con telefonos, interfaces o menues. En asterisk, una extension es una lista de comandos a ejecutar. Las extensiones se acceden cuando:

Se recibe una llamada entrante por un canal dado. El usuario que ha llamado marca la extension Se ejecuta un salto de extensiones desde el dialplan de asterisk.

Contexto: El dialplan o logica de comportamiento de asterisk se divide en uno o varios contextos. Un contexto es una coleccion de extensiones. Los contextos existen para poder diferenciar el lugar donde se encuentra una llamada.

Aplicacion: Asterisk ejecuta secuencialmente los comandos asociados a cada extension. Esos comandos son realmente aplicaciones que controlan el comportamiento de la llamada y del sistema en si. Ejemplos:

Hangup: Colgar la llamada Dial: Realiza una llamada saliente Playback: Reproduce un archivo de sonido Mas adelante hablaremos mas a fondo de aplicaciones.

VoicemailEs la capacidad de dejar mensajes de voz para ser recogidos mas tarde en caso de que el usuario a quien se llama no este disponible.

voicemail.conf

[buzon]

101 => 1234,Cristhian,[email protected] => 5678,Elvyn,[email protected]

Asterisk CommandLine InterfacePara acceder a asterisk commandline interface(CLI) desde al shell ejecute el comando asterisk pasandole las siguiente opciones r que provee una conexin a la consola de asterisk si el proseso de asterisk ya esta corriendo te provee una interface para controlar la consola de asterisk.

[root@srvasterisk ~]# asterisk rvv srvasterisk*CLI>

la opcion v proporciona mas informacion de asterisk entre mas v agregamos mas informacion nos mostrara.

! Es para poder ejecutar comandos de el shell sobre el CLI de asterisk.srvasterisk*CLI> !ifconfig eth0

dialplan add extension contiene unos cuantos subcomandos que le permite agregar algunas funcionalidades a tu PBX sin editar directamente los archivos de configuracion.

srvasterisk*CLI> dialplan add extension 112,1,Dial,SIP/112/|20|Tt into phone

dialplan show muestra el dialplan para un contexto en especifico. srvasterisk*CLI> dialplan show phone

dialplan add include incluye un contexto en otro contexto. srvasterisk*CLI> dialplan add include salida into entrada

dialplan reload recarga solo el archivo extensions.conf. srvasterisk*CLI> dialplan reloaddialplan remove extension remueve una extension.srvasterisk*CLI> dialplan remove extension 101@phone Whole extension 101@phone removedabort shutdown Cancela un shutdown corriendosrvasterisk*CLI> abort shutdownagent logoff configura una agente offline srvasterisk*CLI> agent logoff sip/112agent show muestra los agentes configurados. srvasterisk*CLI> agent showagent show online muestra los agentes online srvasterisk*CLI> agent show onlinecdr mysql status muestra el status de la conexion de cdr_mysql srvasterisk*CLI> cdr mysql statuscdr status muestra el status de los CDR. srvasterisk*CLI> cdr statusconsole active configura el display en la console activa srvasterisk*CLI> console activeconsole answer responde a una entrada de una llama en la console. srvasterisk*CLI> console answercore show applications muestra las aplicaciones registradas para el dialplan. srvasterisk*CLI> core show applications

core show application muestra una descripcion de la aplicacion. srvasterisk*CLI> core show application dial

core show channels muestra la informacion en los canales. srvasterisk*CLI> core show channelscore show channeltypes muestra la informacion de tipo de canal. srvasterisk*CLI> core show channeltypescore show codecs muestra las lista de todos los codecs. srvasterisk*CLI> core show codecscore show codec muestra un codec en especifico. srvasterisk*CLI> core show codec 2features show muestra los features configurados. srvasterisk*CLI> features showhttp show status muestra el status del server HTTP srvasterisk*CLI> http show status

iax2 reload recarga la configuracion del iax2 file. srvasterisk*CLI> iax2 reloadiax2 set debug habilita el debug para iax2. srvasterisk*CLI> iax2 set debugiax2 set debug off deshabilita el debug para iax2. srvasterisk*CLI> iax2 set debug offiax set debug jb habilita el debug para el jitterbuffer srvasterisk*CLI> iax2 set debug jbiax2 set debug jb off deshabilita el debug para el jitterbuffer. srvasterisk*CLI> iax2 set debug jb offiax2 set debug trunk habilita el debug para el troncal. srvasterisk*CLI> iax2 set debug trunkiax2 set debug trunk off deshabilita el debug para el troncal. srvasterisk*CLI> iax2 set debug trunk off

iax2 show cache muestra el cache del dialplan. srvasterisk*CLI> iax2 show cacheiax2 show channels muestra todos los canales activos. srvasterisk*CLI> iax2 show channelsiax2 show firmware muestra el firmware disponible. srvasterisk*CLI> iax2 show firmwareiax2 show netstats muestra los canales activos de iax2 netstats. srvasterisk*CLI> iax2 show netstatsiax2 show peers muestra todos los peers definidos en iax2.conf. srvasterisk*CLI> iax2 show peersiax2 show peer muestra un peer en especifico. srvasterisk*CLI> iax2 show peer srvasteriskiax2 show provisioning muestra iax provisioning srvasterisk*CLI> iax2 show provisioningiax2 show registry muestra el status de los registros. srvasterisk*CLI> iax2 show registryiax2 show stats muestra las estadisticas. srvasterisk*CLI> iax2 show statsiax2 show users muestra informacion sobre los usuarios. srvasterisk*CLI> iax2 show users

module load carga un modulo para asterisk. srvasterisk*CLI> module load cdr_addon_mysql.somodule unload descarga un modulo para asterisk. srvasterisk*CLI> module unload cdr_addon_mysql.somodule reload recarga un modulo para asterisk. srvasterisk*CLI> module reload cdr_csv.somodule show muestra todos lo modulos que contiene asterisk. srvasterisk*CLI> show modules

sip reload recarga la configuracion del archivo sip.conf srvasterisk*CLI> sip reload

sip set debug ajusta el debug para el canal sip. srvasterisk*CLI> sip set debugsip set debug off dehsabilita el debug para el canal sip. srvasterisk*CLI> sip set debug offsip set debug peer configura el debug para un peer. srvasterisk*CLI> sip set debug peer 101sip show channels muestra todo los canales activos. srvasterisk*CLI> sip show channelssip show peers muestra todo los peers agregados en el sip.conf. srvasterisk*CLI> sip show peerssip show registry muestra el status de los registros.

srvasterisk*CLI> sip show registry

sip show settings muestra la configuracion global de sip. srvasterisk*CLI> sip show settingssip show subscriptions muestra la cantidad de subscriptions. srvasterisk*CLI> sip show subscriptionssip show users muestra todo los usuarios de sip srvasterisk*CLI> sip show users

voicemail show users muestra la cantidad de usuarios con voicemail srvasterisk*CLI> voicemail show users

voicemail show zone muestra la zona para el formato del mensaje. srvasterisk*CLI> voicemail show zones

dahdi destroy channel destruye un canal. srvasterisk*CLI> dahdi destroy channel 1dahdi restart completamente reinicia el todos los canales. srvasterisk*CLI> dahdi restartdahdi show cadences muestra los cadences. srvasterisk*CLI> dahdi show cadencesdahdi show channels muestra todos los canales activos. srvasterisk*CLI> dahdi show channelsdahdi show status muestra el status de la tarjeta. srvasterisk*CLI> dahdi show statusrestart gracefully reinicia asterisk con cortesia. srvasterisk*CLI> restart gracefully srvasterisk*CLI>

restart now reinicia inmediatamente a asterisk. ackangel*CLI> restart now

restart when convenient reinicia asterisk cuando se limpien el volumen de llamadas. srvasterisk*CLI> restart when convenient

parkedcalls show muestra todas las llamdas parqueadas. srvasterisk*CLI> parkedcalls show

moh reload reinicia music hold. srvasterisk*CLI> moh reloadmoh show classes muestra el listado de MOH Classes. srvasterisk*CLI> moh show classesmoh show files muestra el listado de los archivos de music hold. srvasterisk*CLI> moh show files.

1.Repaso asterisk IIa.extensions.conf Ejemplo de una entradas invalidas y timeoutsb.Algunas variables definidas automticamente por asteriskc.Aplicacin GotoIf()d.Aplicacin GotoifTime()e.Macros y Plantillas Sip (Sip Templates)f.MixMonitor

2.Asterisk manager interface (AMI)3.Asterisk gateway interface (AGI)4.Asterisk extension language (AEL)5.Integracion con festival6.Seguridad en asterisk7.Asterisk real time (estatico)8.Call detail record (CDR) en mysql9.Asterisk disa10.Asterisk IVR en AEL

Asterisk Realtime Architecture (ARA)

En captulos anteriores observamos que asterisk carga la configuracin desde varios archivos de el directorio /etc/asterisk/. A pesar de la facilidad que nos proporciona por la simplicidad de los archivos en texto simple, esto presenta muchas desventajas:

Cuando creamos grande volmenes de usuarios

Tener que recargar el sistema cada vez que realizamos cambios

Dificultad al momento de integrar interfaces de aprovisionamiento

Dificultar en la integracin con las bases de datos mas comunes del mercado.

Asterisk Gateway Interfaces (AGI)

AGI (Asterisk Gateway Interface) Es una interfaz que permite extender la funcionalidad de asterisk mediante el uso de lenguajes de programacin tales como PHP o PERL, Bash, Java, C, C++, entre otros. El AGI sirve de enlace entre las aplicaciones externas y el ncleo de Asterisk. cuando ejecutamos una aplicacin, escrita en PHP por ejemplo, el resultado de la misma tiene como destino la salida estndar (stdout) y/o la salida de error estndar (stderr), el AGI toma ese resultado y lo pasa a Asterisk para que este acte en consecuencia.

El diagrama seria: Servidor PBX Asterisk AGI Aplicacin o Script en Bash, PHP, ETC

La carpeta /var/lib/asterisk/agi-bin/

Por defecto si no especificamos la ruta absoluta, asterisk busca los archivo en el directorio agi-bin/

Asterisk Extension Language (AEL)

AEL: Es un lenguaje especializado destinado nicamente para la escritura de los dial plan de asterisk. La versin actual fue escrito por Steve Murphy.

AEL es en realidad la fusin de cuatro sintaxis:

1. Es la mas obvia es la misma sintaxis AEL

2. la sintaxis de expresin, que normalmente es manejado por el motor de la extensin asterisk, como expresin encerrada entre $[.]

3. la sintaxis de referencia variable, ${..}

4. la sintaxis del lenguaje de extensin, es lo que vemos en el archivo extensions.conf

Los Macros

Son un tipo de contexto especial identificado por un nombre definido por nosotros el cual tiene como prefijo la palabra macro, esto son patrones reutilizables de ejecucin, podemos comprarlo con procedimientos en un lenguaje de programacin. Un ej. de macro es std-exten

macro std-exten( ext , dev ) {

Dial(${dev}/${ext},20);

switch(${DIALSTATUS) {

case BUSY:

Voicemail(${ext},b);

break;

default:

Voicemail(${ext},u);

}

catch a {

VoiceMailMain(${ext});

return;

}

Para crear las extensiones 6001,6002,6003 utilizando el macro std-exten dentro del contexto ejemplo, no te el signo de &

context ejemplo {

6001 => &std-exten(6001, "Sip");

6002 => &std-exten(6002, "IAX2");

6003 => &std-exten(${EXTEN}, "Sip");

}

Sintaxis general

if(${x}=1) {if(${x}=1)

NoOp(hello!);{

goto s,3;NoOp(hello!);

} else {goto s,3;

NoOp(Goodbye!);}

goto s,12;else

Obtenemos el mismo}{NoOp(Goodbye!);

resultado con:

goto s,12;

}

if (${x}=1) {if(${x}=1) { NoOp(hello!); goto s,3; } else { NoOp(Goodbye!); goto s,12; }

NoOp(hello!); goto

s,3;

} else {

NoOp(Goodbye!); goto

s,12;

}

Ejemplo en AEL

Usuarios 1234 en el contexto estudiantes

context prueba {context default {

1234 => {1235 => Playback(tt-monkeys);

Dial(SIP/1234,45);1236 => {

switch (${DIALSTATUS}) {NoOp(one);

case BUSY:NoOp(two);

Voicemail(b200);NoOp(three);

break;};

case NOANSWER:_124X => NoOp(it's a pattern!);

Voicemail(u200);}

break;

default:

Noop(Esto no tenia que pasar corgamos);

Hangup;

}

}

}

context default {context default {

includes {includes {

local;local;

longdistance;longdistance|16:00-23:59|mon-fri|*|*;

international;international;

}}

}}

Configurando Call Detail Records (CDR)

Call Detail Records

El Asterisk como en otras plataformas de telefona, permite la contabilidad de las llamadas telefnicas. Existen diversos programas en el mercado que importan la contabilidad de llamadas generados por las centrales telefnicas y tratan estos con fines de correlacionarlos con la cuenta telefnica, controles internos y estadsticas entre otros cosas.

Estructura del CDR

El Asterisk genera los informes de contabilidad de llamadas, tambin conocidos como CDR (Call Detail Records, o, registro detallado de llamadas), para cada llamada. Los registros son almacenados en un archivo de texto separado por comas, tambin conocido como CSV (comma separated value), en el directorio /var/log/asterisk/cdr-csv.

departamento por ejemplo: ventas, produccin, asistencia tcnica.Ejemplo: (sip.conf) [8576] amaflags=default accountcode=Soporte type=friend username=8576

13.5 Cambiando el formato del CDR

Usted puede cambiar el formato de lo CDR, editando el archivo cdr_custom.conf. Mappings for custom config file[mappings]

Master.csv => "${CDR(clid)}","${CDR(src)}","${CDR(dst)}","${CDR(dcontext)}","${CDR(channel)}","${CDR(dstchannel)}","${CDR(lastapp)}","${CDR(lastdata)}","${CDR(start)}","$ {CDR(answer)}","${CDR(end)}","${CDR(duration)}","${CDR(billsec)}","${CDR(disposition)}","${CDR(amaflags)}","${CDR(accountcode)}","${CDR(uniqueid)}","${CDR(userfield)}"

Los principales campos CDR son:

CDRDescripcinTipo de campoLongitud del campo

accountcodeNmero de la cuenta usadoVarchar20

srcIdentificador de origen (Quien realiza la llamada)varchar80

dstIdentificador de destino (Destino de la llamada)varchar80

dcontextContexto de destinovarchar80

clidTexto de identificador de llamadavarchar80

channelCanal usadovarchar80

dstchannelCanal de destinovarchar80

lastappltima aplicacinvarchar80

lastdataltimos parmetros de la aplicacinvarchar80

startTiempo total desde que marcado la llamada, en segundosdate/time0000-00-00 00:00:00

answerFecha y hora del momento que la llamada fue respondida date/timeDate/time0000-00-00 00:00:00

endFecha y hora en que finaliza la llamada date/timeDate/tiime0000-00-00 00:00:00

billsecTiempo total desde que la llamada fue respondida y finaliza (Tiempo contabilizado)Int20

dispositionLo que sucedi con la llamada: ANSWERED (atendida), NO ANSWER (no atendida), BUSY (ocupada), FAILED (fall)Int20

amaflagsIndicador, DOCUMENTATION (documentar), BILLING (Contabilizar), OMMIT (omitir), IGNORE (ignorar).Int11

userfieldCampo definido por el usuariovarchar255

Asterisk manager interface (AMI)

AMI (Asterisk Manager Interface o Interfase de Administracin Asterisk) es una interfaz que permite que una aplicacin externa tome el control del PBX Asterisk y ejecute ciertas tareas. Esta caracterstica es la que emplean paquetes como Trixbox o Elastix para desarrollar susplataformas basadas en una Web/GUI que facilita todas las operaciones de configuracin, operacin y monitoreo de nuestro PBX.

Qu es AMI

La Interfase de Administracin de Asterisk, cuando se encuentra habilitada, abre un socket TCP/IP (utiliza como puerto por defecto el 5038), AMI o Asterisk Manager Interface permite la conexin de un cliente a una instancia de Asterisk para ejecutar comandos o leer eventos sobre TCP/IP . Para poder utilizar esta caracterstica es necesario establecer una sesin de administrador (Manager Session) y autenticarse como tal.

El archivo manager.conf: Creamos los usuarios que tendrn permiso para acceder mediantes una sesin AMI a la consola del asterisk

Los Eventos y Acciones (facilidades) en AMIAsterisk Manager Interface provee dos facilidades principales de comunicacin, Eventos y Acciones.

Los Eventos son invocados por varias partes de Asterisk, pueden ser drivers de canal, aplicaciones, recursos o cualquier otro componente conectado directamente al core de Asterisk. El propsito de un evento es permitir a un sistema externo, obtener informacin de Asterisk a partir de la recoleccin, anlisis y correlacin de dichos eventos, y la inicializacin de acciones de acuerdo con la informacin obtenida.

Las Acciones proveen un mtodo que permite a un sistema externo, enviar comandos operacionales a Asterisk pidindole que desempee una tarea especfica. Mientras una accin puede resultar en efectos operacionales verdaderos, tales como originar una llamada, tambin sucede que nuevos eventos empiezan a ser enviados por Asterisk Manager con nueva informacin.