Está en la página 1de 27

Qu es un

PBX?

EslasiglaparaPrivateBrancheXchange.Eselsistemaqueconectallamadasdentrodelamisma
compaa.Comnmentepuedetenerdesdedosadiezmilextensionesyunaconexinal
sistematelefnicotradicional(PSTN)parallamadashaciaydesdeelexteriordelacompaa.
Canal:Esunaconexionqueconduceunallamadaentranteosalienteenelsistemaasterisk.La
conexionpuedevenirosalirhaciatelefoniatradicionalanalogicaodigital,oVoIP.
Dialplan:Setratadelaconfiguraciondelacentraldeasteriskqueindicaelitinerarioquesigueuna
llamadadesdequeentraosaledelsistemahastaquellegaasupuntofinal.Setrataenlineasgenerales
delcomportamientologicodelacentral.
Extension:Entelefoniatradicional,lasextensionesseasociancontelefonos,interfacesomenues.En
asterisk,unaextensionesunalistadecomandosaejecutar.Lasextensionesseaccedencuando:
Serecibeunallamadaentranteporuncanaldado.
Elusuarioquehallamadomarcalaextension
Seejecutaunsaltodeextensionesdesdeeldialplandeasterisk.
Contexto:Eldialplanologicadecomportamientodeasterisksedivideenunoovarioscontextos.Un
contextoesunacolecciondeextensiones.Loscontextosexistenparapoderdiferenciarellugardonde
seencuentraunallamada.
Aplicacion:Asteriskejecutasecuencialmenteloscomandosasociadosacadaextension.Esos
comandossonrealmenteaplicacionesquecontrolanelcomportamientodelallamadaydelsistemaen
si.Ejemplos:
Hangup:Colgarlallamada
Dial:Realizaunallamadasaliente
Playback:ReproduceunarchivodesonidoMasadelantehablaremosmasafondodeaplicaciones.
Voicemail
Eslacapacidaddedejarmensajesdevozparaserrecogidosmastardeencasodequeelusuarioaquien
sellamanoestedisponible.
voicemail.conf
[buzon]
101=>1234,Cristhian,cristhian@codigolibre.org
102=>5678,Elvyn,elvyn@codigolibre.org
AsteriskCommandLineInterface
Paraaccederaasteriskcommandlineinterface(CLI)desdealshellejecuteelcomandoasterisk

pasandolelassiguienteopcionesrqueproveeunaconexinalaconsoladeasterisksielprosesode
asteriskyaestacorriendoteproveeunainterfaceparacontrolarlaconsoladeasterisk.
[root@srvasterisk~]#asteriskrvvsrvasterisk*CLI>
laopcionvproporcionamasinformaciondeasteriskentremasvagregamosmasinformacionnos
mostrara.
!EsparapoderejecutarcomandosdeelshellsobreelCLIdeasterisk.
srvasterisk*CLI>!ifconfigeth0
dialplanaddextensioncontieneunoscuantossubcomandosquelepermiteagregaralgunas
funcionalidadesatuPBXsineditardirectamentelosarchivosdeconfiguracion.
srvasterisk*CLI>dialplanaddextension112,1,Dial,SIP/112/|20|Ttintophone
dialplanshowmuestraeldialplanparauncontextoenespecifico.srvasterisk*CLI>dialplanshow
phone
dialplanaddincludeincluyeuncontextoenotrocontexto.srvasterisk*CLI>dialplanaddincludesalida
intoentrada
dialplanreloadrecargasoloelarchivoextensions.conf.srvasterisk*CLI>dialplanreload
dialplanremoveextensionremueveunaextension.
srvasterisk*CLI>dialplanremoveextension101@phoneWholeextension101@phoneremoved
abortshutdownCancelaunshutdowncorriendo
srvasterisk*CLI>abortshutdown
agentlogoffconfiguraunaagenteofflinesrvasterisk*CLI>agentlogoffsip/112
agentshowmuestralosagentesconfigurados.srvasterisk*CLI>agentshow
agentshowonlinemuestralosagentesonlinesrvasterisk*CLI>agentshowonline
cdrmysqlstatusmuestraelstatusdelaconexiondecdr_mysqlsrvasterisk*CLI>cdrmysqlstatus
cdrstatusmuestraelstatusdelosCDR.srvasterisk*CLI>cdrstatus
consoleactiveconfiguraeldisplayenlaconsoleactivasrvasterisk*CLI>consoleactive
consoleanswerrespondeaunaentradadeunallamaenlaconsole.srvasterisk*CLI>consoleanswer
coreshowapplicationsmuestralasaplicacionesregistradasparaeldialplan.srvasterisk*CLI>core
showapplications
coreshowapplicationmuestraunadescripciondelaaplicacion.srvasterisk*CLI>coreshow
applicationdial
coreshowchannelsmuestralainformacionenloscanales.srvasterisk*CLI>coreshowchannels
coreshowchanneltypesmuestralainformaciondetipodecanal.srvasterisk*CLI>coreshow
channeltypes
coreshowcodecsmuestralaslistadetodosloscodecs.srvasterisk*CLI>coreshowcodecs
coreshowcodecmuestrauncodecenespecifico.srvasterisk*CLI>coreshowcodec2
featuresshowmuestralosfeaturesconfigurados.srvasterisk*CLI>featuresshow

httpshowstatusmuestraelstatusdelserverHTTPsrvasterisk*CLI>httpshowstatus
iax2reloadrecargalaconfiguraciondeliax2file.srvasterisk*CLI>iax2reload
iax2setdebughabilitaeldebugparaiax2.srvasterisk*CLI>iax2setdebug
iax2setdebugoffdeshabilitaeldebugparaiax2.srvasterisk*CLI>iax2setdebugoff
iaxsetdebugjbhabilitaeldebugparaeljitterbuffersrvasterisk*CLI>iax2setdebugjb
iax2setdebugjboffdeshabilitaeldebugparaeljitterbuffer.srvasterisk*CLI>iax2setdebugjboff
iax2setdebugtrunkhabilitaeldebugparaeltroncal.srvasterisk*CLI>iax2setdebugtrunk
iax2setdebugtrunkoffdeshabilitaeldebugparaeltroncal.srvasterisk*CLI>iax2setdebugtrunkoff
iax2showcachemuestraelcachedeldialplan.srvasterisk*CLI>iax2showcache
iax2showchannelsmuestratodosloscanalesactivos.srvasterisk*CLI>iax2showchannels
iax2showfirmwaremuestraelfirmwaredisponible.srvasterisk*CLI>iax2showfirmware
iax2shownetstatsmuestraloscanalesactivosdeiax2netstats.srvasterisk*CLI>iax2shownetstats
iax2showpeersmuestratodoslospeersdefinidoseniax2.conf.srvasterisk*CLI>iax2showpeers
iax2showpeermuestraunpeerenespecifico.srvasterisk*CLI>iax2showpeersrvasterisk
iax2showprovisioningmuestraiaxprovisioningsrvasterisk*CLI>iax2showprovisioning
iax2showregistrymuestraelstatusdelosregistros.srvasterisk*CLI>iax2showregistry
iax2showstatsmuestralasestadisticas.srvasterisk*CLI>iax2showstats
iax2showusersmuestrainformacionsobrelosusuarios.srvasterisk*CLI>iax2showusers
moduleloadcargaunmoduloparaasterisk.srvasterisk*CLI>moduleloadcdr_addon_mysql.so
moduleunloaddescargaunmoduloparaasterisk.srvasterisk*CLI>moduleunload
cdr_addon_mysql.so
modulereloadrecargaunmoduloparaasterisk.srvasterisk*CLI>modulereloadcdr_csv.so
moduleshowmuestratodoslomodulosquecontieneasterisk.srvasterisk*CLI>showmodules
sipreloadrecargalaconfiguraciondelarchivosip.conf

srvasterisk*CLI>sipreload
sipsetdebugajustaeldebugparaelcanalsip.srvasterisk*CLI>sipsetdebug
sipsetdebugoffdehsabilitaeldebugparaelcanalsip.srvasterisk*CLI>sipsetdebugoff
sipsetdebugpeerconfiguraeldebugparaunpeer.srvasterisk*CLI>sipsetdebugpeer101
sipshowchannelsmuestratodoloscanalesactivos.srvasterisk*CLI>sipshowchannels
sipshowpeersmuestratodolospeersagregadosenelsip.conf.srvasterisk*CLI>sipshowpeers
sipshowregistrymuestraelstatusdelosregistros.
srvasterisk*CLI>sipshowregistry
sipshowsettingsmuestralaconfiguracionglobaldesip.srvasterisk*CLI>sipshowsettings
sipshowsubscriptionsmuestralacantidaddesubscriptions.srvasterisk*CLI>sipshowsubscriptions
sipshowusersmuestratodolosusuariosdesipsrvasterisk*CLI>sipshowusers
voicemailshowusersmuestralacantidaddeusuariosconvoicemailsrvasterisk*CLI>voicemailshow
users

voicemailshowzonemuestralazonaparaelformatodelmensaje.srvasterisk*CLI>voicemailshow
zones
dahdidestroychanneldestruyeuncanal.srvasterisk*CLI>dahdidestroychannel1
dahdirestartcompletamentereiniciaeltodosloscanales.srvasterisk*CLI>dahdirestart
dahdishowcadencesmuestraloscadences.srvasterisk*CLI>dahdishowcadences
dahdishowchannelsmuestratodosloscanalesactivos.srvasterisk*CLI>dahdishowchannels
dahdishowstatusmuestraelstatusdelatarjeta.srvasterisk*CLI>dahdishowstatus
restartgracefullyreiniciaasteriskconcortesia.srvasterisk*CLI>restartgracefullysrvasterisk*CLI>
restartnowreiniciainmediatamenteaasterisk.ackangel*CLI>restartnow
restartwhenconvenientreiniciaasteriskcuandoselimpienelvolumendellamadas.srvasterisk*CLI>
restartwhenconvenient
parkedcallsshowmuestratodaslasllamdasparqueadas.srvasterisk*CLI>parkedcallsshow
mohreloadreiniciamusichold.srvasterisk*CLI>mohreload
mohshowclassesmuestraellistadodeMOHClasses.srvasterisk*CLI>mohshowclasses
mohshowfilesmuestraellistadodelosarchivosdemusichold.srvasterisk*CLI>mohshowfiles.
1.
a.
b.
c.
d.
e.
f.

RepasoasteriskII
extensions.confEjemplodeunaentradasinvalidasytimeouts
Algunasvariablesdefinidasautomticamenteporasterisk
AplicacinGotoIf()
AplicacinGotoifTime()
MacrosyPlantillasSip(SipTemplates)
MixMonitor

2.
3.
4.
5.
6.
7.
8.
9.
10.

Asteriskmanagerinterface(AMI)
Asteriskgatewayinterface(AGI)
Asteriskextensionlanguage(AEL)
Integracionconfestival
Seguridadenasterisk
Asteriskrealtime(estatico)
Calldetailrecord(CDR)enmysql
Asteriskdisa
AsteriskIVRenAEL

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 <------- ejecuta la aplicacin -------> AGI <------- salida o entrada estndar

-------> 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:

Es la mas obvia es la misma sintaxis AEL

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

la sintaxis de referencia variable, ${..}

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:

CDR
Descripcin
Tipo de campo
Longitud del campo

accountcode
Nmero de la cuenta usado
Varchar
20

src
Identificador de origen (Quien realiza la llamada)
varchar
80

dst
Identificador de destino (Destino de la llamada)
varchar
80

dcontext
Contexto de destino
varchar
80

clid

Texto de identificador de llamada


varchar
80

channel
Canal usado
varchar
80

dstchannel
Canal de destino
varchar
80

lastapp
ltima aplicacin
varchar
80

lastdata
ltimos parmetros de la aplicacin

varchar
80

start
Tiempo total desde que marcado la llamada, en segundos
date/time
0000-00-00 00:00:00

answer
Fecha y hora del momento que la llamada fue respondida date/time
Date/time
0000-00-00 00:00:00

end
Fecha y hora en que finaliza la llamada date/time
Date/tiime
0000-00-00 00:00:00

billsec
Tiempo total desde que la llamada fue respondida y finaliza (Tiempo contabilizado)
Int

20

disposition
Lo que sucedi con la llamada: ANSWERED (atendida), NO ANSWER (no atendida), BUSY (ocupada), FAILED (fall)
Int
20

amaflags
Indicador, DOCUMENTATION (documentar), BILLING (Contabilizar), OMMIT (omitir), IGNORE (ignorar).
Int
11

userfield
Campo definido por el usuario
varchar
255

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 sus
plataformas 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 AMI


Acciones.

Asterisk Manager Interface provee dos facilidades principales de comunicacin, Eventos y

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.

También podría gustarte