Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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
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:
Dificultar en la integracin con las bases de datos mas comunes del mercado.
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
La carpeta /var/lib/asterisk/agi-bin/
Por defecto si no especificamos la ruta absoluta, asterisk busca los archivo en el directorio agi-bin/
AEL: Es un lenguaje especializado destinado nicamente para la escritura de los dial plan de asterisk. La versin actual fue escrito por Steve Murphy.
la sintaxis de expresin, que normalmente es manejado por el motor de la extensin asterisk, como expresin encerrada entre $[.]
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
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 {
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
context prueba {
context default {
1234 => {
Dial(SIP/1234,45);
1236 => {
switch (${DIALSTATUS}) {
NoOp(one);
case BUSY:
NoOp(two);
Voicemail(b200);
NoOp(three);
break;
};
case NOANSWER:
Voicemail(u200);
break;
default:
Hangup;
context default {
context default {
includes {
includes {
local;
local;
longdistance;
longdistance|16:00-23:59|mon-fri|*|*;
international;
international;
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.
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.
Usted puede cambiar el formato de lo CDR, editando el archivo cdr_custom.conf. Mappings for custom config file
[mappings]
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
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
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 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.