You are on page 1of 58

CAPITULO1

Introduccin

Asterisk
Que es Asterisk? Asteriskesunaaplicacindesoftwarelibre(bajolicenciaGPL)deunacentraltelefnica(PBX). ComocualquierPBX,sepuedeconectarunnmerodeterminadodetelfonosparahacerllamadas entreseinclusoconectaraunproveedordeVoIPobienaunaRDSItantobsicoscomoprimarios. MarkSpencer,deDigium,inicialmentecreAsteriskyactualmenteessuprincipaldesarrollador, junto con otros programadores que han contribuido a corregir errores y aadir novedades y funcionalidades. Originalmente desarrollado para el sistema operativo GNU/Linux, Asterisk actualmentetambinsedistribuyeenversionesparalossistemasoperativosBSD,MacOSXyotros, aunquelaplataformanativa(GNU/Linux)eslamejorsoportadadetodas. Asterisk incluye muchas caractersticas anteriormente slo disponibles en sistemas costosos propietariosPBXcomobuznde oz,conferencias,IVR,distribucinautomticadellamadas,yotras v muchasms.Losusuariospuedencrearnuevasfuncionalidadesescribiendoundialplanenellenguaje descriptdeAsteriskoaadiendomdulosescritosenlenguajeCoencualquierotrolenguajede programacinsoportadoporLinux. ParaconectartelfonosestndaranalgicossonnecesariastarjetaselectrnicastelefnicasFXSo FXOfabricadasporDigiumuotrosproveedores,yaqueparaconectarelservidoraunalneaexterna nobastaconunsimplemdem. QuizlomsinteresantedeAsteriskesquesoportamuchosprotocolosVoIPcomopuedenserSIP, H.323,IAXyMGCP.AsteriskpuedeinteroperarconterminalesIPactuandocomounregistradory comogatewayentreambos. LejosdepodercompetirconlascompaasquecomercializansolucionesdeVoIPHw/Swdealta calidad como AlcatelLucent, Cisco,Avaya Nortel, Asteriskse empiezaa adoptaren algunos entornoscorporativoscomoso lucindebajocostejuntoconSER(SipExpressRouter).

Algunas caractersticas de asterisk


CreacindeanexosIP(SIP). Control,Monitoreoentiemporeal,CDR. Accesoabasededatos(AstDB,MySQLparaalmacenarelCDR) InterfazGrafica. RespuestaInteractivadeVoz(IVR) Grabacindeconversaciones. Correodevozemail.

Diagramas (topologa A rquitectura)

FiguraN1

FiguraN2

FiguraN3

FiguraN4

FiguraN5

Protocolos y Codecs usados Telefona IP


Protocolos (SIP, IAX) SIP(SessionInitiationProtocol) SessionInitiationProtocol(SIPoProtocolodeIniciodeSesiones)esunprotocolodesarrolladoporel IETFMMUSICWorkingGroupconlaintencindeserelestndarparalainiciacin,modificaciny finalizacindesesionesinteractivasdeusuariodondeintervienenelementosmultimediacomoel video,voz,mensajerainstantnea,juegosonlineyrealidadvirtual.EnNoviembredelao2000,SIP fueaceptadocomoelprotocolodesealizacinde3GPPyelementopermanentedelaarquitectura IMS(IPMultimediaSubsystem).SIPesunodelosprotocolosdesealizacinparavozsobreIP,otro esH.323.(VaseCapitulo4)

IAX2(InterAsteriskeXchangeprotocol) IAX(InterAsteriskeXchangeprotocol)esunodelosprotocolosutilizadoporAsterisk,unservidor PBX(centralitatelefnica)decdigoabiertopatrocinadoporDigium.Esutilizadoparamanejar conexiones VoIP entre servidores Asterisk, y entre servidores y clientes que tambin utilizan protocoloIAX. ElprotocoloIAXahoraserefieregeneralmentealIAX2,lasegundaversindelprotocoloIAX.El protocolooriginalhaquedadoobsoletoenfavordeIAX2.(VaseCapitulo5)

Codecs (G711, G729, GSM, IBLC)

Dispositivos VoIP
Telfonos IP

Softphone

Adaptadores (ATA)

Gateways (E1-SIP, GSM-SIP)

Hadware Digium

CAPITULO2

Seleccin Hardware Servidor e Instalacin S.O

EstecaptulonosayudaraaprepararelsistemaparalainstalacindeAsterisk.Estefuncionaen muchas plataformasysistemasoperativos, masnosotros elegimosmantenerlascosas simples y permanecerenunanicaplataformaydistribucindeLinux.VamosusarladistribucinCentOSen estecurso.Lasinstruccionesrealizadasenestecursopuedenfuncionarconotrasdistribuciones,pero estasnohansidotesteadaspornosotros.

Hardware Mnimo
Asteriskpuedeserintensivoenelusodeprocesador,puesusaelpropioprocesadordelservidor(PC) donde fue instalado para realizar el procesamiento de los canales de voz. Si usted estuviese construyendounsistemacomplejoconcargaelevadaesimportanteentenderesteconcepto. ParaconstruirsuprimerPBXAsteriskunprocesadorcompatibleconInteligualosuperioraun PentiumIII600Mhzcon128MBRAMessuficienteparaunsistemadepruebasquesoportehasta5 llamadassimultaneasydondepodamosexplorartodaslasfuncionalidadesdeAsterisk,respectoal sistemaoperativopodramosoptarporunadistribucindeLinuxcomoCentos4.6,conelobjetivode ntercomunicarnosconlaredpublicadetelefonia(PSTN)necesitaremosdeunatarjetatelefnicade hasta4canalesZAP,preferentementeunaTDM400Pcon4mdulosFXOcorrespondientesa4 lineasanalogas. Asterisknorequieremuchoespacioendisco,cercade100MBsecalculaparaelsistemacalculado, dondeSIrequerimosespacioesparaelalmacenamientodemensajesdevoz,llamadasgrabadas,CDR (Basesdedatos). SiustedusanicamenteVOIP,ningnotrohardwareesnecesario.Sepuedeusarsoftfonescomolos deCounterpath(XLite)yrealizarentroncamientohaciaproveedoresdetelefonaIP. AlgunasaplicacionesdeAsteriskcomoelMeetmerequierenunafuentedeclockparaproveerla temporizacin.NormalmentelafuentedeclockdeAsteriskesunaplacaTDM.Sisusistemanotiene unaplacaTDM,ustedpuedeusarundriverztdummyqueusaelUSBcomofuentedetemporizacin. Una pista: Ustedpuedeusarunaplaca defax/modemconchipsetIntel537oMD3200,ella se comportacomounaDigiu mX100P.

Hardware Minimo-Mediano
UnservidorconunprocesadorSempronoCeleronde1Ghzcon256MBdeRAMseriasuficiente paraunsistemaasteriskquepodrasoportarde5a10llamadassimultaneasconmximodostarjetas detelefonade4canalesanalgicoscadaunoyunS.OLinuxkernelversin2.6(CentOS4.6).

Hardware Mediano-Grande
Paraunsistemamayorquelogresoportarde10a24llamadassimultaneasloidealesunservidorcon procesadorPentium4oAthlonde3Ghzcon512MBRAMyeneseunatarjetadehasta24canales comolaDigiumTDM2406Bqueposee24mdulosFXOpara24lineasanlogas.

Hardware Mediano-Grande
Paraunsistemaquerealice30llamadassimultaneasamaslomasrecomendableessoportarsesobre sistemasXeonconopcindesegundaCPUademsdetarjetasDigiumTE120PyhastalaTE410Po similares(Tarjetasdigitalescapacesdesoportade30a120canalesdigitalesdecomunicacin).Para arquitecturassuperioresesnecesarioelusodemltiplesservidoresyunaarquitecturadistribuida. Endefinitivalamedicindelhardwareautilizartienedirectarelacinconlacantidaddellamadas simultaneasarealizarylacantidaddecanalesyaseaanlogosodigitalesausarennuestroservidor.

Montando su sistema
ElegirhardwarenecesarioparaAsterisknoesmuycomplicado.Ustednoprecisadeunatarjetade vdeo sofisticada o perifricos adicionales. Puertos seriales, paralelos y USB pueden ser completamentedeshabilitadosdesde la BIOS. Una buena tarjeta de redesesencial para nuestro sistema.SiustedestuvieseusandounadelastarjetasdetelefonadeDigium,seriabuenoverificarlas instruccionesdesutarjetamadreparadeterminarsilosSlotsPCIsoportanestastarjetasdetelefona. Muchas tarjetas madres compartirn interrupciones (IRQ's) en slots PCI. Los conflictos de interrupciones(IRQ's)sonunafuentepotencialdeproblemasdecalidaddeaudioenAsterisk.Una maneradeliberarIRQsesdeshabilitardesdeelBIOStodoloquenofueranecesario.

IRQ compartidas Muchas tarjetasdetelefonacomolaX100Pporejemplopuedengenerargrandescantidades de interrupciones,atenderlastomatiempo.Losdriverspuedennoconseguirhacerloatiemposiotro dispositivoestuvieseprocesandolamismaIRQcompartidaylalineadeIRQnopodrrecibirotra interrupcin. Esta problemtica tiende a funcionar mejor y ser resuelta en parte en sistemas multiprocesador.Ensistemasmonoprocesadorsepuedetenermuchasperdidasdeinterrupciny clockdesfasado.CualquieradelastarjetasdetelefonadeDigiumyotrastarjetasdetelefonapueden estarsujetasalmismoproblema.ComolaentregaprecisadeIRQsesunanecesidadprimariaen telefona,ustednodebecompartirIRQsconnada.Nosiempreocurreesto,perosedebeprestar atencinalproblema.SiseestusandouncomputadordedicadoparaAsterisk,deshabiliteelmayor nmerodedispositivosqueustednovaausar. LamayoradelasBIOSpermitequeustedmanualmentedesignelasIRQs.VallasehastalaBIOSy observe en la seccin de IRQs. Es posible que usted consiga configurar las interrupciones manualmenteporslot.

Escogiendo una distribucion de Linux. Asterisk fue originalmente desarrollado para ejecutarse bajo plataformas con sistema operativo Linux,AhorapuedeserusadoenBSDyOSX.Noobstanteesto,lastarjetastelefonicasDigium fuerondiseadasparatrabajarconLinuxi386.SiustedfuesenuevoconAsteriskprocureusarLinux.

Requisitos de Linux VriasdistribucionescomoRedHat,Mandrake,Fedora,Debian,SlackwareyGentoofueronusadas conAsterisk. DiseotabladeparticionamientotentativaparainstalacindeAsterisk Asteriskcomosistemanorequieremuchoespacioendisco,cercade100MBsecalculaparael sistemacompiladoeinstalado,dondeSIrequerimosespacioesparaelalmacenamientodemensajes devoz,llamadasgrabadas,CDR (Basesdedatos).Porlotantonuestratabladeparticionamiento deberacontarcomomnimocon4particiones(Tomandocomoejemploundiscode80GB):
[root@asterisk ~]$ df -h S.ficheros Tamao Usado /dev/sda1 100M 15M /dev/sda2 20G 5G /dev/sda3 55G 10G tmpfs 248M 0

Disp Uso% Montado en 85M 15% /boot 15G 25% / 45M 70% /var 248M 0% /dev/shm

En el proceso de instalacin se debe considerar una particin ms asignada para memoria de intercambioSWAP,eltamaodeestadebersereldobledelamemoriaRAMexistente.

Eleccinpaquetesydependenciasnecesariasparacompilacindeasterisk. AntiguamenteexistanalgunospaquetesqueerannecesariosparainstalarAsteriskcomoelreadliney readlinedevelquenosonnecesarioshoy.Noexistehardwareespecialtalcomounaplacadesonido yelnicopaquetenecesarioeselpropioAsterisk.SiustedestuvierausandohardwaredeDigiumo ztdummy,ustedva aprecisardelpaquetezaptel.Elpaquetezaptelesnecesarioparaquealgunas aplicacionesseanincludasentiempodecompilacin.SiustedescogecompilarAsteriskynoel zaptel, pero descubre que esta faltando una aplicacin relacionada al paquete zaptel (Como el Meetme()),ustedtendraquecompilarelzaptelyentoncesseranecesariorecompilarAsteriskpara quelaaplicacinseaincluda. ParainterfacesT1yE1elpaquetelibpriesnecesario.Bisones necesarioparacompilarelAsterisk.Lospaquetesdedesarrolloncursesyncursesdevelopmentson necesariossiustedquisieraconstruirnuevasherramientas(Comoelastman).Lasbibliotecaszliby zlibdevelsonnecesariasahoraparacompilar.EstosedebealaadhesindelprotocoloDUNDi (DistributedUniversalNumberDiscovery). Lospaquetesnecesitadospara elsistemaoperativoLinuxCentOSsern: Kernelsourcesyheaders gccysusdependencias bison(necesarioparalosarchivosdeconfiguracion. ncurses(necesarioparalaconsolaCLI) opensslyopenssldevolibssldev libnewt(paraaplicacionestalcomozttool) libyzlibdevel La recomendacin es que durante el proceso de instalacin del sistema operativo se debern seleccionarlossiguientespaquetes: SeccinDesarrollo: *HerramientasdeDesarrollo(TODO) *DesarrollodeSoftwareAnticuado(TODO) Comoherramientasadicionalestambinsepodrinstalar: SeccinServidores: *ServidorWeb *ServidordeCorreo *ServidordeBasesdeDatos(MySQLy/oPostgres)

CAPITULO3

Descarga, Compilacin Instalacin de Asterisk


Anteriormenteenelcapitulo2vimosdetallesrespectoalapreparacindeunsistemaparainstalar Asteriskenel,ademsdeobservacionesyconsideracionesimportantesalahoradeelegirhardware, enelpresentecapituloveremoscomoobtenereinstalarAsteriskenelsistemaelegidoyutilizando unadistribucindeLinuxbasadaenRedHat(CentOS)yaqueeslamascomnytambinutilizada porelequipodedesarrolladoresdeDigium.

Paquetes requeridos relacionados con Asterisk


LainstalacindeAsteriskestacompuestaporcomomnimo4paquetesbsicosquesenecesitarano noensutotalidadsegnlanecesidadespecificadenuestroproyecto,estosson:asterisk,zaptel,libpri yasteriskaddons. Cadaunodelospaquetestienenlossiguientescontenidos: Asterisk: Incluyeelprogramaprincipaldeasterisk. Zaptel: IncluyelosdriversparalastarjetastelefnicasZaptel. LibPri: IncluyelaslibrerasPRInecesariasparaconectarsealRTPC. Asteriskaddons: Incluyemdulosadicionalesaasterisk,comoporejemploelmodulo MySQLparaconexinabasesdedatosdeestetipo. Elnicopaqueteestrictamentenecesarioesasterisk,yaquelibprisolosenecesitaraencasodeque vallamosautilizarinterfacesPRIyzaptelencasodeutilizartarjetasZAPTEL,encasoderequerir utilidades que necesiten fuente de temporizacin y no tengamos hardware Zaptel instalado, es requeridoinstalarelpaquetezaptelactivandopordefectoelmoduloztdummy.

Descarga paquetes de Asterisk


Ladescargadeasteriskysuslibreriaspuedenrealizarseenformadearchivostar.gz,paradescargar estosarchivoslospodemosencontraren: http://ftp.digium.com/pub/ Lanomenclaturadeestospaquetesseraasteriskversion.tar.gzporejemplo: Asterisk > asterisk1.4.x.tar.gz Zaptel > zaptel1.4.x.tar.gz Libpri > libpri1.4.x.tar.gz Asteriskaddons > asteriskaddons1.4.x.tar.gz

Esta descarga se puede realizar atraves de un navegador web como cambien desde la linea de comandosejecutandoelcomando'wget': wgethttp://downloads.digium.com/pub/zaptel/releases/zaptel1.4.x.tar.gz wgethttp://downloads.digium.com/pub/asterisk/releases/asterisk1.4.x.tar.gz wgethttp://downloads.digium.com/pub/libpri/libpri1.4.x.tar.gz wgethttp://downloads.digium.com/pub/asterisk/releases/asteriskaddons1.4.x.tar.gz Sifuerondescargadoslospaquetes.tar.gz,estossedescomprimenejecutandoelcomando'tar'desde lalineadecomandos: tarxvzfarchivocomprimido.tar.gz Estocrearaundirectorioconelnombreyversindelpaquetedescomprimidoydentroestarel contenidodelpaquete.

Instalacin Asterisk 1.4


Lainstalacindelospaquetesdeasterisksedeberealizarenelsiguienteorden: 1ero. 2do. 3ero. 4to. zaptel libpri asterisk asteriskaddons

Compilacin e Instalacin Zaptel ParacompilareinstalareldriverZaptelsedebenseguirlossiguientespasoscomousuario'root'.


# # # # # # # cd /usr/src/ wget http://downloads.digium.com/pub/zaptel/releases/zaptel-1.4.x.tar.gz cd /usr/src/zaptel-1.4.x ./configure make make install make config

Compilacin e Instalacin Libpri ParacompilareinstalarLibprisedebenseguirlossiguientespasoscomousuario'root'.


# # # # # cd /usr/src/ wget http://downloads.digium.com/pub/libpri/libpri-1.4.x.tar.gz cd /usr/src/libpri-1.4.x make make install

Compilacin e Instalacin Asterisk ParacompilareinstalarAsterisksedebenseguirlossiguientespasoscomousuario'root'.


# cd /usr/src/ # wget http://downloads.digium.com/pub/asterisk/releases/asterisk1.4.x.tar.gz # cd /usr/src/asterisk-1.4.x # ./configure # make # make install # make samples # make config

Compilacin e Instalacin Asterisk-Adoons ParacompilareinstalarAsteriskAdoonssedebenseguirlossiguientespasoscomousuario'root'.


# cd /usr/src/ # wget http://downloads.digium.com/pub/asterisk/releases/asterisk-addons1.4.x.tar.gz # cd /usr/src/asterisk-addons-1.4.x # ./configure # make # make install # make samples

Directorios Usados
Acontinuacinlosarchivosydirectoriosmasimportantescreadosenelprocesodeinstalacin. /etc/asterisk Enestedirectorioseencuentrantodoslosarchivosnecesariosparaconfigurarlagrancantidadde serviciosqueAsteriskprovee.Revisaremoslosmasimportantes. asterisk.conf Configuraciones generales de la ubicacin de directorios de archivos de configuracion,

mdulos compilados, voicemails etc. En general es buena idea no modificar estas configuraciones,salvocasosespeciales. cdr.conf Configuracionesreferentesal"CallDetailRecord".LosCDRsonsumamenteimportantes para las compaas telefnicas. Modificar datos en este archivo puede repercutir en la integridaddelosCDRsinoseestasegurodeloquesehace.Silainstalacinesnicamente deprueba,olosCDRnosonmateriaimportante,nohayproblema. codecs.conf AmenosqueutilicesSPEEX,oquierashacercosasespecialesconlaformaenlaquelos codecssecomportan,esmejornomodificarestearchivo. extensions.conf TalvezelarchivomasimportantedeAsterisk.Enestearchivosetomanlasdecisionesde ruteodelasllamadas.Masadelanteveremoslasintaxisdeestearchivo. features.conf Estearchivoestambinmuyimportante.Permitehabilitaryconfigurarserviciosgenricos deunPBXcomolatransferenciaasistidaymonitoreodellamadas. iax.conf Importantearchivoparaelfuncionamientodelcanalchan_iaxquelepermiteaAsterisk interactuarconotrosdispositivosIAX,incluyendootrosPBXAsterisk. logger.conf Queniveldeverbosidaddebentenerlosmensajesdelogyadondedebenserenviados. manager.conf Configuracin del importante servicio AMI (Asterisk Manager Interface) que permite conectarnosaunsocketTCPymanejarelPBX.Deciertaformaseencuentrarelacionadocon elarchivohttp.conf,queproveedeunainterfacesparaprogramaraplicacionesconAJAXque secomuniquendirectamenteconAMI. modules.conf Archivo sumamente importante. Determina que mdulos sern cargados por Asterisk al iniciar.Esfrecuentequecuandoseinstalaasteriskporprimeravez,noarranquedebidoaque nopuedecargarunmduloparaelquenotenemossoporte.Estosesolucionacomentandola lneadelmduloenestearchivo. sip.conf Anlogodelarchivoiax.confparaelprotocoloSIP

zapata.conf ConfiguracindeloscanalesZap.Lasconfiguracionesdeestearchivodebencoincidirconel hardwareinstaladoylaconfiguracindeldriver zaptel. voicemail.conf Configuracindelascasillasdevozcreadasparalosrespectivosanexos. meetme.conf Configuracindelassalasdeconferencias.

/var/log/asterisk EnestedirectorioseencuentranlosarchivosderegistrodelasoperacionesdeAsterisk.Definamos cadaunodelosarchivosencontradosdentrodeestedirectorio. cdr.db EstearchivoseencuentradisponiblesisecuentaconelCDRhandlerparalabasededatos SQLite.Elarchivocontienelabasededatosdelosregistrosdelasllamadas. event_log RegistrodeeventossucedidosenelPBX. full Creadoconlaintencindecontenertodoslosmensajesdedebugdelsistema. messages Contieneunlistadodelosmensajesdewarning,debugydemsnivelesdelogeo. queue_log Archivoutilizadoprincipalmenteporlaaplicacinapp_queue.

/var/lib/asterisk Directorioconarchivosdeaudio,llavesRSA,scriptsAGI(AsteriskGatewayInterface),basede datosastdbyarchivosparaelpequeoservidorHTTPparaAJAM(AsynchronusJavascriptAsterisk Manager).Aquiveremosunadescripcindecadaunodelosdirectorios,yaquelosarchivospueden serirrelevantes. agibin/ AquisecontienenprogramasenC,PHP,Pythonocualquierotrolenguajeconelquese pretendainteractuardesdeAsterisk.

keys/ DirectorioquecontienellavesRSAparalaautenticacindellamadasconelprotocoloIAX2 sounds/ DirectoriocontodoslossonidosquesernutilizadosporaplicacionescomoPlayback()y Background()

Paraasegurarnosqueelprocesodeasteriskyzapteliniciandeformaautomticaconelarranquedel servidoryencasodereiniciodelS.Ocompletoyparaelprocesodeinicioodetencindeforma manualdelserviciodebemosejecutarlossiguientescomandosenlainterfazdelineadecomandos:


# # # # service zaptel start service asterisk start chkconfig zaptel on chkconfig asterisk on

Para acceder al monitor del sistema o tambien conosido como 'CLI>' ejecutamos el siguiente comando:
# asterisk -r

CAPITULO4

Protocolo SIP
SIP (Session Initiation Protocol)
SessionInitiationProtocol(SIPoProtocolodeIniciodeSesiones)esunprotocolodesarrolladoporel IETFMMUSICWorkingGroupconlaintencindeserelestndarparalainiciacin,modificaciny finalizacindesesionesinteractivasdeusuariodondeintervienenelementosmultimediacomoel video,voz,mensajerainstantnea,juegosonlineyrealidadvirtual.EnNoviembredelao2000,SIP fueaceptadocomoelprotocolodesealizacinde3GPPyelementopermanentedelaarquitectura IMS(IPMultimediaSubsystem).SIPesunodelosprotocolosdesealizacinparavozsobreIP,otro esH.323.

Funcionamiento del protocolo


ElprotocoloSIPpermiteelestablecimientodesesionesmultimediaentredosomsusuarios.Para hacerlosevaledelintercambiodemensajesentrelaspartesquequierencomunicarse. Agentes de Usuario Losusuarios,quepuedensersereshumanosoaplicacionesdesoftware,utilizanparaestablecer sesionesloqueelprotocoloSIPdenomina"Agentesdeusuario".Estosnosonmsquelospuntos extremosdelprotocolo,esdecirsonlosqueemitenyconsumenlosmensajesdelprotocoloSIP.Un videotelfono,untelfono,unclientedesoftware(softphone)ycualquierotrodispositivosimilares paraelprotocoloSIPunagentedeusuario.ElprotocoloSIPnoseocupadelainterfazdeestos dispositivos conelusuariofinal,sloseinteresaenlosmensajesqueestosgeneranycmo se comportanalrecibirdeterminadosmensajes. Losagentesdeusuariosecomportancomoclientes(UAC:UserAgentClients)ycomoservidores (UAS:UserAgentServers).SonUACcuandorealizanunapeticinysonUAScuandolareciben. PorestolosagentesdeusuariodebenimplementarunUACyunUAS. Ademsdelosagentesdeusuarioexistenotrasentidadesqueintervienenenelprotocolo,estosson losServidoresdeRegistrooRegistrar,losProxyylosRedirectores.Acontinuacinsedescribesu finalidad. Servidores de Registro o Registrar ElprotocoloSIPpermiteestablecerlaubicacinfsicadeunusuariodeterminado,estoesenqu puntodelaredestconectado.Paraellosevaledelmecanismoderegistracin.Estemecanismo funcionacomosigue:

Cadausuariotieneunadireccinlgicaqueesinvariablerespectodelaubicacinfsicadelusuario. UnadireccinlgicadelprotocoloSIPesdelaformausuario@dominioesdecirtienelamisma forma que una direccin de correo electrnico. La direccin fsica (denominada "direccin de contacto")esdependientedellugarendondeelusuarioestconectado(desudireccinIP).Cuando unusuarioinicializasuterminal(porejemploconectandosutelfonooabriendosusoftwarede telefonaSIP)elagentedeusuarioSIPqueresideendichoterminalenvaunapeticinconelmtodo REGISTERaunServidordeRegistro(Registrareningls),informandoaqudireccinfsicadebe asociarseladireccinlgicadelusuario.Elservidorderegistrorealizaentoncesdichaasociacin (denominadabinding).Estaasociacintieneunperododevigenciaysinoesrenovada,caduca. Tambin puede terminarse mediante una derregistracin. La forma en que dicha asociacin es almacenadaenlarednoesdeterminadaporelprotocoloSIP,peroesvitalqueloselementosdelared SIPaccedanadichainformacin. Servidores Proxy y de Redireccin Unconjuntodeusuariosquepertenecenaunacompaaoproveedordeserviciosdecomunicaciones, conformanundominio.Estedominio,queseindicaenunadireccinSIPdespusdelcaracter"@"es normalmenteatendidoporunservidor(omsdeuno).Esteservidorrecibelaspeticioneshaciasus usuarios.Esteservidorserelencargadodedeterminarladireccinfsicadelusuariollamadoy puedeactuardedosmaneras: ComoProxy,o ComoRedirector(Redirect). AlactuarcomoProxyelservidordeterminalaubicacindelusuariollamadoyenvalapeticin original a la direccinfsicadel usuario llamado.Las respuestas delagente deusuariollamado tambinsonenviadasalproxyquelasremitehaciaeloriginante. AlactuarcomoRedirectorelservidorgeneraunarespuestaqueindicaaloriginanteladireccinfsica delusuarioquebuscaparaqueestepuedarealizarunapeticinyenviarlaaladireccinfsicadel usuariodeseado. UnmismoservidorpuedeactuarcomoRedirectorocomoProxydependiendodelasituacin. Unservidorquerecibelaspeticionesdestinadasaundominioespecficoesdenominadoservidor entrante(InboundServer). Eshabitualtambin,queexistaunservidorquerecibalaspeticionesoriginadasporlosusuariosdeun dominiohaciaotrosdominios.EsterecibeelnombredeServidorSaliente(OutboundServer). Un agente de usuarionormalmente encamina todos sus pedidos hacia un servidor de su propio dominio. Es estequiendetermina(porsuspropiosmediosovalindosedeotrosservidores) las ubicacionesdelosusuariosquesonllamadosporelagentedeusuarioencuestin.

Canales SIP
LoscanalesSIP(SessionInitiationProtocol) sonloscanalesutilizadosporlosdispositivosIPque usanesteprotocolo,aadirnuevosusuariosoconectarconproveedoresSIP.Laconfiguracinpara estoscanalesseencuentraenelelarchivo'sip.conf'ubicadoeneldirectorio'/etc/aserisk/'elcual debersereditadocomousuario'root'. Elarchivodeconfiguracin'sip.conf'seleedeformasecuencialdesdearribahaciaabajo.Laseccin [general]contienetodoslosparmetrosdeconfiguracingeneralylaseccin[4000]contienelos parmetrosdeconfiguracinparaelanexoodispositivoSIP4000enparticular.Acontinuacinun ejemplopracticoparaconfiguracindeestearchivo:
; sip.conf [general] context=default port=5060 bindaddr=0.0.0.0 un servidor tiene srvlookup=yes [4000] type=friend secret=password qualify=yes nat=yes host=dynamic canreinvite=no context=internal

; ; 3 ;

Puerto UDP en el que responder el Asterisk Si queremos especificar que Asterisk est en una IP (si IPs por ej.) 0.0.0.0 vale para cualquiera Habilita servidor DNS SRV

; ; ; ; ;

Tiempo de latencia no superior a 2000 ms. El telefono usa NAT El dispositivo se registra con una IP dinamica Asterisk por defecto trata de redirigir El contexto asignado para el anexo

EngenerallosservidoresSIPescuchanenelpuerto5060UDP.Portantoconfiguramosport=5060. Enalgunoscasos,porejemplosiutilizamosSER(SipExpressRouter)conAsteriskdebemoscambiar estepuerto. DNSesunaformadeconfigurarunadireccinlgicaparaquepuedaserresuelta.Estopermiteque lasllamadasseanenviadasadiferenteslugaressinnecesidaddecambiarladireccinlgica.Usando elDNSSRVsegananlasventajasdelDNSmientrasquedeshabilitandolonoesposibleenrutar llamadasenbaseanombrededominios.Convienetenerloactivado,portantoseponeladirectiva srvlookup=yes Cadaextensinestdefinidaporunuserousuario,unpeeroproveedorounfriendoamigoyviene definidaconunnombreentrecorchetes[]. Eltipo(type)"user"seusaparaautenticarllamadasentrantes,"peer"parallamadassalientesy "friend" para ambas.Ennuestrocasohemosdefinidounaextensin4000como"friend".Puede realizaryrecibirllamadas. Secreteslacontraseausadaparalaautenticacin.Enestecasoser"password". Se puede monitorizarlalatenciaentreel servidorAsteriskyeltelefonoconqualify=yes para

determinarcuandoeldispositivopuedeseralcanzado.EnestecasoAsteriskconsiderapordefecto quequeundispositivoestpresentesisulatenciaesmenorde2000ms(2segundos).Sepuede cambiarestevalorponiendoelnumerodemilisegundosenvezdeyes. SiunaextensinestdetrsdeundispositivoquerealizaNAT(NetworkAddressTranslatio n)como un router o firewall se puede configurar nat=yes para forzar a Asterisk a ignorar el campo informacindecontactoy sarladireccindesdelaquevienenlospaquetes. u Siponemoshost=dynamicquieredecirqueeltelefonosepodrconectardesdecualquierdireccin IP.PodemoslimitaraquedichousuariosolopuedaaccederconunaIPoconunnombrededominio. Siponemoshost=staticnoharafaltaqueelusuarioseregistrarconlacontraseaproporcionadaen "secret", Tambinsehapuestocanreinvite=no.EnSIPlosinvitesseutilizanparaestablecerllamadasy redirigirelaudioovdeo.Cualquierinvitedespusdelinviteinicialenlamismaconversacinse consideraunreinvite. Cuandodosusuarioshanestablecidolacomunicacinconcanreinvite=yes(pordefecto)lospaquetes RTP de audiopodranserenviadosextremoaextremosinpasarporelservidorAsterisk. Esto, normalmente,nosueleserconvenienteencasosenlosquehayaNATenalgunodelosclientes. (NAT=yes). Usandocanreinvite=nosefuerzaaAsteriskaestarenmedionopermitiendoquelospuntosfinales intercambienmensajesRTPdirectamente. Detodosmodos,existennumerosascondicionesenqueAsterisknopermiteelreinviteapesardeque nopongamosestacondicinyaquenecesitacontrolarelflujoRTP.Porejemplo:Silosclientesusan codecsdiferentes,sihayopcionesdeMusicOnholdotemporizadoresenlallamada,etc... Porltimocontext=internalindicaelcontextodondeestlasinstruccionesparadichaextensin.Esto estrelacionadoconelcontextodelarchivoextensions.confquemarcaelplandenumeracinpara esecontexto.Portantoelcontextointernaldebeexistirenelficheroextensions.confodelocontrario deberamoscrearlo.Variosextensionespuedentenerelmismocontexto. Opciones avanzadas:

User context permit deny secret md5secret dtmfmode canreinvite nat callgroup pickupgroup language allow allow=all disallow insecure

Peer context permit deny secret md5secret dtmfmode canreinvite nat callgroup pickupgroup language allow

Explicacinyopciones Indicaelcontextoasociadoeneldialplanparaunusuarioopeer PermitirunaIP NopermitirunaIP Contraseaparaelregistro Contraseaencriptadaconmd5 Elmodoenelquesetransmitenlostonos.Puedenser "RFC2833"o"INFO" Con"no"sefuerzaaAsteriskanopermitirquelospuntosfinales intercambienmensajesRTPdirectamente. IndicasieldispositivoestdetrsdeunNATcon"yes" Defineungrupodellamadas Defineelgrupodellamadasvalidasparaunaaplicacionpickup() Definelassealesparaunpais.Debeestarpresenteenelarchi voindications.conf permitehabilitaruncodec.Puedenponersevariosenunmismo usuarioPosiblesValores: permitedeshabilitaruncodec.Puedetomarlosmismosvalores queallow DefinecomomanejarlasconexionesconpeersTienelossiguien tesvaloresvery|yes|no|invite|portPordefectoes"no"quequiere decirquehayqueautenticarsesiempre. SilacabeceraRemotePartyIDesdeconfianza.Pordefecto"no"

disallow insecure

trustpid progressinband promiscredir callerid accountcode amaflags incominglimit restrictcid

trustpid

progressinband Sisedebengenerarsealesenbandasiempre.Pordefectonever promiscredir Permitesoportarredirecciones302.Pordefecto"no" Defineelidentificadorcuandonohayningunaotrainformacion disponible Losusuariospuedenestarasociadosconunaccountcode.Se usaparafacturacion. SeusaparaguardarenlosCDRytemasdefacturacin.Puede ser"default","omit","billing",o"documentation" Limitedellamadassimultaneasparauncliente SeusaparaesconderelIDdelllamante.Anticuadayendesuso mailbox username fromdomain regexten fromuser host Poneelnombredeusuarioenelfromporencimadeloquedigael callerID direccinohostdondeseencuentraeldispositivoremoto.Puede tomarvalores: UnaIPounhostconcreto "dynamic"conloquevaldracualquierIPperonecesitacontra sea "static"valecualquierIPperonoesnecesariocontrasea port qualify defaultip rtptimeout rtpholdtimeout PuertoUDPenelqueresponderelAsterisk Paradeterminarcuandoeldispositivopuedeseralcanzado IPpordefectodelclientehost=cuandoesespecificadocomo "dynamic" Terminalallamadacuandollegaaesetimeoutsinohahabido trficortp Terminalallamadacuandollegaaesetimeoutsinohahabido trficortp"onhold" Extensindelcontestador SiAsteriskactuacomoclienteSIPesteeselnombredeusuario quepresentaenelservidorSIPalquellama PoneelcampoFrom:delosmensajesSIP

EjemplopracticocreacindeunanexoSIP:
; sip.conf [4000] context dtmfmode disallow allow allow allow type host username Secret mailbox callerid qualify nat

= = = = = = = = = = = = = =

anexos rfc2833 all ulaw ilbc gsm friend dynamic 4140 4140 1000 "Anexo 4000" <4000> yes yes

Unavezcreadoelanexoenelarchivo'sip.conf'esnecesariorecargarlaconfiguracinalsistema, paraestoejecutaremosdentrodelainterfazCLIelcomando'sipreload' paraobservarsirealmente y secargolaconfiguracionejecutamoselcomando'sipshowpeers': sipreload sipshowpeers


[root@asterisk ~]# asterisk -r Asterisk 1.4.x, Copyright (C) 1999 - 2007 Digium, Inc. and others. Created by Mark Spencer <markster@digium.com> ========================================================================= Connected to Asterisk 1.4.x currently running on asterisk (pid = 19496) asterisk*CLI> sip reload Reloading SIP == Parsing '/etc/asterisk/sip.conf': Found asterisk*CLI> sip show peers Name/username Host Dyn Nat ACL Port Status 4000/4000 (Unspecified) D N 0 UNKNOWN

PararegistraruntelfonoIPatravessuinterfazwebgenrica,sedebenseguirlossiguientespasos: 1.AsegurarnosqueletelfonotomedireccinIPdeformadinmica(DHCP). 2.AveriguarladireccinIPquetomoeltelfonoyescribirlaenlabarradedireccionesdeun navegadorwebcualquiera(PorEj.Firefox). 3.Ingresarcontraseayaccederalainterfazwebdeconfiguracin. 4.Ubicarlaseccindeconfiguracinparaunanexosipeingresardatoscomo: UsuarioSIP. Contrasea. DireccinIPdelservidorAsterisk. etc. OBS.Paramasdetallesconsultarinstruccionesenmanualdeusuariodeltelfonocorrespondiente.

Unavezcreadoyregistradoelanexo,nosfaltaraunsolopaso.Estepasoeselquenospermitir comunicarnoscondichoanexoenotraspalabrasnosfaltaunarutadediscadohacianuestroanexo, estarutasecreaenelarchivodeconfiguracin'extencions.conf'yformapartedenuestroDialPlan. (DialPlanqueposteriormenteexplicaremosmasadelanteenestedocumento).


; extensions.conf [anexos] exten => 4000,1,Dial(SIP/4000,20) exten => 4000,2,Hangup

Guardamos los cambios y salimos del archivo, ingresamos en la consola CLI y ejecutamos el comandoparareleerloscambiosrealizadosenelarchivo'extensions.conf': asteriskr extensionsreload
[root@asterisk ~]# asterisk -r Asterisk 1.4.x, Copyright (C) 1999 - 2007 Digium, Inc. and others. Created by Mark Spencer <markster@digium.com> ========================================================================= Connected to Asterisk 1.4.x currently running on asterisk (pid = 19496) asterisk*CLI> extensions reload

CAPITULO5

Protocolo IAX
IAX (Inter-Asterisk eXchange protoco)
IAX(InterAsteriskeXchangeprotocol)esunodelosprotocolosutilizadoporAsterisk,unservidor PBX(centralitatelefnica)decdigoabiertopatrocinadoporDigium.Esutilizadoparamanejar conexiones VoIP entre servidores Asterisk, y entre servidores y clientes que tambin utilizan protocoloIAX. ElprotocoloIAXahoraserefieregeneralmentealIAX2,lasegundaversindelprotocoloIAX.El protocolooriginalhaquedadoobsoletoenfavordeIAX2.

Propiedades Bsicas IAX2esrobusto,llenodenovedadesymuysimpleencomparacinconotrosprotocolos.Permite manejarunagrancantidaddecdecsyungrannmerodestreams,loquesignificaquepuedeser utilizadoparatransportarvirtualmentecualquiertipodedato.Estacapacidadlohacemuytilpara realizarvideoconferenciasorealizarpresentacionesremotas. IAX2utilizaunnicopuertoUDP,generalmenteel4569,paracomunicacionesentrepuntosfinales (terminalesVoIP)parasealizacinydatos.Eltrficodevozestransmitidoinband,loquehacea IAX2unprotocolocasitransparentealoscortafuegosyrealmenteeficazparatrabajardentroderedes internas. En estosediferenciadeSIP,queutilizaunacadenaRTPoutofbandparaentregar la informacin. IAX2 soporta Trunking (red), donde un simple enlace permite enviar datos y sealizacin por mltiplescanales.CuandoserealizaTrunking,losdatosdemltiplesllamadassonmanejadosenun nicoconjuntodepaquetes,loquesignificaqueundatagramaIPpuedeentregarinformacinpara msllamadassincrearlatenciaadicional.EstoesunagranventajaparalosusuariosdeVoIP,donde lascabecerasIPsonungranporcentajedelanchodebandautilizado.

El Inicio de IAX El protocolo IAX2 fue creado por Mark Spencer para la sealizacin de VoIP en Asterisk. El protocolo crea sesiones internas y dichas sesiones pueden utilizar cualquier cdec que pueda transmitir voz o vdeo. El IAX esencialmente provee control y transmisin de flujos de datos multimediasobreredesIP.IAXesextremadamenteflexibleypuedeserutilizadoconcualquiertipo dedatoincluidovdeo.

EldiseodeIAXsebasenmuchosestndaresdetransmisindedatos,incluidosSIP(elcualesel mscomnactualmente),MGCPyRealtimeTransportProtocol.

Objetivos de IAX ElprincipalobjetivodeIAXhasidominimizarelanchodebandautilizadoenlatransmisindevozy vdeoatravsdelaredIP,conparticularatencinalcontrolyalasllamadasdevozyproveyendoun soporte nativo para ser transparente a NAT. La estructura bsica de IAX se fundamenta en la multiplexacindelasealizacinydelflujodedatossobreunsimplepuertoUDPentredossistemas. IAXesunprotocolobinarioyestdiseadoyorganizadodemaneraquereducelacargaenflujosde datosdevoz.Elanchodebandaparaalgunasaplicacionessesacrificaenfavordelanchodebanda paraVoIP.

Canales IAX
LoscanalesIAX(InterAsteriskeXchange)oncanalesutilizadospordispositivosIPqueutilizaneste protocolo, aadirnuevosusuariosoconectarconproveedoresIAX.Laconfiguracinparaestos canalesseencuentraenelelarchivo'iax.conf'ubicadoeneldirectorio'/etc/aserisk/'elcualdeberser editadocomousuario'root'. Elarchivodeconfiguracin'iax.conf'seleedeformasecuencialdesdearribahaciaabajo.Laseccin [general]contienetodoslosparmetrosdeconfiguracingeneralylaseccin[servidor_A]contiene losparmetrosdeconfiguracinparaelusuarioodispositivoIAX[servidor_A]enparticular.A continuacinunejemplopracticoparaconfiguracindeestearchivo:
; iax.conf [general] context = inband ; Contexto por defecto bindaddr= 0.0.0.0 ; Direccion IP donde servidor escucha conexionesIAX bindport=4569 ; Puerto donde se escuchan las conexiones entrantes language=es ; Lenguaje espaol tos=0x18 ; Indicamos que marque los paquetes para QoS bandwidth=low ; Preferibles codecs con bajo consumo allow=all ; Usaremos todos los codecs lo mismo que bandwidth=high [servidor_A] type=friend secret=123 host=direccion.IP.de.servidor_X permit=direccion.IP.de.servidor_X auth=md5 disallow=all allow=ilbc context=anexos qualify=yes

EngenerallosservidoresIAXescuchanenelpuerto4569UDP/TCP.Portantoconfiguramos port=4569. Elparmetro'bindaddr=0.0.0.0' nosindicaqueelservidorestaescuchandoporcualquierdireccin IPquetengaasignadaencadaunadesusinterfacesdered. Elparmetro'context=anexos'quieredecirqueelusuario[servidor_A]podrrealizarexclusiva menteloqueseencuentredentrodeanexos. Language=escorrespondeallenguajeasignadoparaesteusuario.

IAX Trunking (Interconexion entre 2 servidores Asterisk)


ParainterconectardosomasservidoresAsteriskservidor_Ayservidor_BusandoelprotocoloIAXy lograrestablecercomunicacindeanexoaanexoentreambosservidores(unanexodelservidor_A logracomunicarseconunanexodelservidor_B)debemosrealizarelsiguienteprocedimientode creacindeusuariosIAXenambosservidores,usuariosquelapostrenosservirnpararealizarel tunkingentreambosservidoresylograrcomunicacinentres. Archivo'iax.conf'servidor_A:
; iax.conf [general] context=inband ; Contexto por defecto bindaddr=0.0.0.0 ; Direccion IP donde servidor escucha conexionesIAX bindport=4569 ; Puerto donde se escuchan las conexiones entrantes language=es ; Lenguaje espaol tos=0x18 ; Indicamos que marque los paquetes para QoS bandwidth=low ; Preferibles codecs con bajo consumo allow=all ; Usaremos todos los codecs lo mismo que bandwidth=high [servidor_A] type=friend secret=123 ; El parmetro secret debe ser igual en ambos servidores esto ; para efectos de autenticacin entre los dos servidores. host=direccion.IP.de.servidor_B permit=direccion.IP.de.servidor_B auth=md5 ; Algoritmo de encriptacin para transmicin de las 'secret' disallow=all allow=ilbc context=anexos qualify=no

Atravesdelosparametros:
'host=direccion.IP.de.servidor_B' y 'permit=direccion.IP.de.servidor_B'

Logramosestablecerunarelacindeconfianzaentreambosautentificandoseentresipermitiendo quesolamenteservidor_Ayservidor_B uedanestablecercomunicacinynadiemas. p

Archivo'iax.conf'servidor_B:
; iax.conf [general] context=inband ; Contexto por defecto bindaddr=0.0.0.0 ; Direccion IP donde servidor escucha conexionesIAX bindport=4569 ; Puerto donde se escuchan las conexiones entrantes language=es ; Lenguaje espaol tos=0x18 ; Indicamos que marque los paquetes para QoS bandwidth=low ; Preferibles codecs con bajo consumo allow=all ; Usaremos todos los codecs lo mismo que bandwidth=high [servidor_B] type=friend secret=123 ; El parmetro secret debe ser igual en ambos servidores esto ; para efectos de autenticacin entre los dos servidores. host=direccion.IP.de.servidor_A permit=direccion.IP.del.servidor_A auth=md5 ; Algoritmo de encriptacin para transmicin de las 'secret' disallow=all allow=ilbc context=anexos qualify=no

Atravesdelosparametros:
'host=direccion.IP.de.servidor_A' y 'permit=direccion.IP.de.servidor_A'

Logramosestablecerunarelacindeconfianzaentreambosautentificandoseentresipermitiendo quesolamenteservidor_Ayservidor_B uedanestablecercomunicacinynadiemas. p UnavezcreadoslosusuariosIAXenelarchivo'iax.conf'esnecesariorecargarlaconfiguracinal sistema,paraestoejecutaremosdentro elainterfazCLIelcomando'iax2reload'yparaobservarsi d realmentesecargolaconfiguracionejecutamoselcomando'iax2showpeers': iax2reload iax2showpeers


[root@asterisk ~]# asterisk -r Asterisk 1.4.x, Copyright (C) 1999 - 2007 Digium, Inc. and others. Created by Mark Spencer <markster@digium.com> ========================================================================= Connected to Asterisk 1.4.x currently running on asterisk (pid = 19496) asterisk*CLI> iax2 reload Reloading SIP == Parsing '/etc/asterisk/sip.conf': Found asterisk*CLI> iax2 show peers Name/Username Host Mask Port Status fwbm 192.168.0.101 (S) 255.255.255.255 4569 OK (6 ms) beer-man 192.168.1.4 (S) 255.255.255.255 4569 OK (6 ms)

FinalizadalacreacindelosusuariosIAXenambosservidores,necesitamoscrearlasrutasde discadoparalacomunicacindeunanexodelservidor_Acon nanexodelservidor_Byviceversa. u Estasrutassecreanenlosarchivosdeconfiguracin'extensions.conf'deambosservidores,por ejemplo: Suponiendoquedentrodelservidor_Aseencuentranlosanexosconnumeracin'4000'ydentrodel servidor_Bseencuentranlosanexosconnumeracin'5000'. Archivo'extensions.conf'servidor_A:


; extensions.conf servidor_A [anexos] exten => 5000,1,Dial(IAX2/servidor_B@servidor_A/5000) exten => 5000,2,Hangup exten => 4000,1,Dial(SIP/4000,20) exten => 4000,2,Hangup

Archivo'extensions.conf'servidor_B:
; extensions.conf servidor_B [anexos] exten => 4000,1,Dial(IAX2/servidor_A@servidor_B/4000) exten => 4000,2,Hangup exten => 5000,1,Dial(SIP/5000,20) exten => 5000,2,Hangup

Enambosservidoresguardamosloscambiosysalimosdelosarchivos,ingresamosenlasconsolas CLIyejecutamoselcomadoparareleerloscambiosrealizadosenlosarchivos'extensions.conf': asteriskr extensionsreload


[root@asterisk ~]# asterisk -r Asterisk 1.4.x, Copyright (C) 1999 - 2007 Digium, Inc. and others. Created by Mark Spencer <markster@digium.com> ========================================================================= Connected to Asterisk 1.4.x currently running on asterisk (pid = 19496) asterisk*CLI> extensions reload

CAPITULO6

Telefona Zaptel
Zaptel Telefona Analgica (FXS, FXO)
Estosdostrminossiemprellevanaconfusindebidoaquesiendoconceptosdiferentessiemprevan juntos. FXSesunpuertousadoporlaslneasdetelefonaanalgica(tambindenominadosPOTS),este puertoenvasealesdetimbreytonoparatelfonosanalgicos.Esdecir,queemulanaunalnea telefnicaanalgicatradicional. FXOestepuertorecibelassealesdelpuertofxs.Untelfonotienesunpuertofxo.Estepuertono envasealesdetonootimbrado,solorecibelassealesqueenvalosFXS.Funcionacomoterminal delnea.

Enunacentraltelefnicasiempreseencontrarconestostrminosyenunacentraliptambin.Una centralIPrecibeunalneafxsenunpuertofxoparaconectarsealserviciodetelefona. Enelcasodelastarjetasdigium,porejemplotdm400,estastarjetassonmodularesenconsecuenciala tarjetaTDM400PpuedeestarcompuestapormodulosyaseaFXSoFXO.

Enlaimagentenemosunatarjetadigiumcondosmdulosfxs(colorverde)ydosmdulosfxo(color rojo).Estastarjetasseusanparacrearcentralitasipconasterisk.

Canales Anlogos y Digitales ZAP


LoscanalesZAP(Zapata/Zaptel)sonloscanalesutilizadosporlospuertosFXS/FXOyPRI.Los canalesZAPsonloscorrespondientesalhardwareZaptel,creadosoriginalmenteporJimDixonensu proyecto Zapata Telefony. La configuracin para estos canales se encuentran en los archivos 'zaptel.conf' ubicado en el directorio '/etc' y en el archivo 'zapata.conf' ubicado en el directorio '/etc/aserisk/'ambosdebernsereditadoscomousuario'root'.

Configuracin Tarjeta TDM400P LatarjetaTDM400PesunatarjetaPCI22fabricadaporDigiumquesoportapuertosFXSyFXO paraconectardispositivosanlogos(FXS)olneastelefnicas(FXO).Loquepodemosconseguircon unadeestastarjetaseselpoderllamardesdenuestraredVoIPhacialosnmerosdelaempresa telefnicatradicionalusandoAsterisk. LastarjetaTDMsoportanmdulosFXSoFXOenunnmeromximodecuatro,puedeentoncesuna tarjetatenerunacombinacindemdulosdeacuerdoanuestrasnecesidades.Enesteejemplotengo unaTDM22Bloquesignificaque tiene2puertos/mdulosFXSy2puertos/mdulosFXO,el2 indicalosmdulosFXSyelotro2losmduloFXO.Siguiendoconelejemplo,sitenemosunatarjeta TDM04BquieredecirquenotienemdulosFXSy4mdulosFXO,untarjetaTDM11Btendrun mduloFXSyunmduloFXO,etc. EstastarjetasdeberanseralojadasenunslotPCIlibreyenelseconectarlatarjeta,veremosque tienelosdosmdulosrojosenellaydosverdes.LosmdulosdecolorverdesonFXSylosmdulos decolorrojosonFXO. Unavezcolocadalatarjetaensupuertorespectivo,debemossabersiesreconocida:
[root@asterisk ~]# lspci | grepCommunication 0000:06:05.0Communicationcontroller:TigerJetNetworkInc.Tiger3XX Modem/ISDNinterface

Acontinuacineditaremoslosarchivosdeconfiguracin'/etc/zaptel.conf'y'/etc/asterisk/zapata.conf'.
;zaptel.conf fxoks=1-2 fxsks=3-4 loadzone=cl defaultzone=cl

Lalneafxoks=12indicaquelosdosprimerosmdulossonFXSyporellodebenllevarsealizacin FXO,12eslomismoquedecir1y2.Lalineafxsks=34indicaquelosdosltimosmdulosson FXOyporellodebenllevarsealizacinFXS.LatarjetaseriaFXSFXSFXOFXO.

SituviesedostarjetasTDM400PconochomdulosFXOdeberatenerunasolalneafxsks=18.Es importantezaptel.confporqueahsedefinelasealizacinquecadapuertovaatener.Lossiguiente esejecutarelcomando'ztcfgvvvv'paraconfirmarquenuestraconfiguracinestacorrecta.Sinos hemosequivocadoconlasealizacindecadapuertotendremosunmensajedeerrorquenoslo indicarparapodercorregirlo.


[root@asterisk ~]# ztcfg -vvvv Zaptel Configuration ====================== Channel map: Channel Channel Channel Channel 01: 02: 03: 04: FXO FXO FXS FXS Kewlstart Kewlstart Kewlstart Kewlstart (Default) (Default) (Default) (Default) (Slaves: (Slaves: (Slaves: (Slaves: 01) 02) 03) 04)

4 channels configured.

Ahoradeberemoseditarnuestro/etc/asterisk/zapata.confparanuestrosdoscanalesFXSydoscanales FXO:
;zapata.conf [channels] usecallerid=yes hidecallerid=no inmediate=no ; configuramos el primer canal FXS context=anexos signalling=fxo_ks echocancel=yes group=1 callerid="Anexo Analogo 4050" <4050> channel => 1 ; configuramos el segundo canal FXS context=anexos signalling=fxo_ks echocancel=yes group=2 callerid="Anexo Analogo 4051" <4051> channel => 2 ; configuramos el tercer canal FXO context=from-pstn1 signalling=fxs_ks echocancel=yes group=3 callerid="Linea Analogica" <2744040> channel => 3 ; configuramos el cuarto canal FXO context=from-pstn2 signalling=fxs_ks echocancel=yes callerid="Linea Analogica" <2744040> group=4 channel => 4

Finalizadalaedicinyconfiguracindelarchivozapata.conf'esnecesariorecargarlaconfiguracin ' alsistema,paraestodebemosdetenerelservicioasteriskyluegovolverainiciarlo: serviceasteriskstop serviceasteriskstart. OBS.Elprocesodereiniciodelserviciodebedeserobligatoriamentecomoestaarriba,estoquiere decirprimerodetenerloyluegoiniciarlo. Comoultimopaso,parahacerusodeestoscanales,necesitamoscrearlasrutasdediscadodesdela PSTNhaciaelservidor,desdeelservidorhacialaPSTNyentreanexosanalgicos(FXS). Estasrutas secreanenlosarchivosdeconfiguracin'extensions.conf'deambosservidores,porejemplo: LlamadasdesdelaPSTNhaciaelservidor:
;extensions.conf [from-pstn1] ; Linea analgica numero 1 exten => s,1,Dial(SIP/4000,20) exten => s,2,Hangup [from-pstn2] : Linea analgica numero 2 exten => s,1,Dial(SIP/4000,20) exten => s,2,Hangup

LlamadasdesdeelservidorhacialaPSTN:
;extensions.conf [anexos] exten => _XXXXXXX,1,Dial(Zap/g3/${EXTEN},20) exten => _XXXXXXX,2,Hangup exten => _XXXXXXX,1,Dial(Zap/g4/${EXTEN},20) exten => _XXXXXXX,2,Hangup

LlamadadeanexoaanexoZAP.
;extensions.conf [anexos] exten => 4050,1,Dial(Zap/g1,20) exten => 4050,2,Hangup exten => 4051,1,Dial(Zap/g2,20) exten => 4051,2,Hangup ; Para llamar al anexos SIP 4000 exten => 4000,1,Dial(SIP/4000,20) exten => 4000,2,Hangup

Zaptel Telefona Digital (E1 PRI)


Configuracin Tarjeta digital TE120P LaTE120Pesunatarjetadeinterfazdigitaldealtorendimiento,esunainterfaztelefoncacapazde interconectarsistemastradicionalesdelatelefonaconlastecnologasemergentesdeVozsobreIP. UsadajuntoconAsterisk,laTE120Ppuedeusarseparaproporcionarunamplioconjuntode serviciosdePBX.LatarjetaTE120Pesfacildeexpandir,pudiendoconfigurarlacomoT1(24 canales),E1(32canales),oJ1(24canales). EstastarjetasdebernseralojadasenunslotPCIlibreyenelseconectarlatarjeta.Unavezcolocada latarjetaensupuertorespectivo,debemossabersiesreconocida:
[root@asterisk ~]# lspci | grepCommunication 07:04.0Communicationcontroller:Digium,Inc.WildcardTE120P(rev02)

Acontinuacineditaremoslosarchivosdeconfiguracin'/etc/zaptel.conf'y'/etc/asterisk/zapata.conf'.
;zaptel.conf span=1,0,0,ccs,hdb3 bchan=1-15 dchan=16 bchan=17-31 loadzone=cl defaultzone=cl

Lossiguienteesejecutarelcomando'ztcfgvvvv'paraconfirmarquenuestraconfiguracinesta correcta.Sinoshemosequivocadoconlasealizacindecadapuertotendremosunmensajedeerror quenosloindicarparapodercorregirlo.


[root@asterisk ~]# ztcfg -vvvv Zaptel Configuration ====================== SPAN 1: CCS/HDB3 Build-out: 0 db (CSU)/0-133 feet (DSX-1) Channel map: Channel Channel Channel Channel Channel Channel Channel Channel Channel Channel Channel Channel Channel Channel Channel Channel Channel Channel Channel Channel Channel Channel Channel Channel Channel Channel Channel Channel Channel Channel Channel 01: 02: 03: 04: 05: 06: 07: 08: 09: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: Clear channel (Default) (Slaves: Clear channel (Default) (Slaves: Clear channel (Default) (Slaves: Clear channel (Default) (Slaves: Clear channel (Default) (Slaves: Clear channel (Default) (Slaves: Clear channel (Default) (Slaves: Clear channel (Default) (Slaves: Clear channel (Default) (Slaves: Clear channel (Default) (Slaves: Clear channel (Default) (Slaves: Clear channel (Default) (Slaves: Clear channel (Default) (Slaves: Clear channel (Default) (Slaves: Clear channel (Default) (Slaves: D-channel (Default) (Slaves: 16) Clear channel (Default) (Slaves: Clear channel (Default) (Slaves: Clear channel (Default) (Slaves: Clear channel (Default) (Slaves: Clear channel (Default) (Slaves: Clear channel (Default) (Slaves: Clear channel (Default) (Slaves: Clear channel (Default) (Slaves: Clear channel (Default) (Slaves: Clear channel (Default) (Slaves: Clear channel (Default) (Slaves: Clear channel (Default) (Slaves: Clear channel (Default) (Slaves: Clear channel (Default) (Slaves: Clear channel (Default) (Slaves: 01) 02) 03) 04) 05) 06) 07) 08) 09) 10) 11) 12) 13) 14) 15) 17) 18) 19) 20) 21) 22) 23) 24) 25) 26) 27) 28) 29) 30) 31)

31 channels configured.

Ahoradeberemoseditarnuestro/etc/asterisk/zapata.confparanuestrosdoscanalesFXSydoscanales FXO:
;zapata.conf [channels] ;---------------------------;Configuracion E1 TE120P ;---------------------------language=cl switchtype=euroisdn pridialplan=local prilocaldialplan=unknown priindication=outofband signalling=pri_cpe usecallerid=yes hidecallerid=no callwaiting=yes usecallingpres=yes callwaitingcallerid=yes threewaycalling=yes transfer=yes cancallforward=yes callreturn=yes echocancel=yes echocancelwhenbridged=no rxgain=0.0 txgain=0.0 inmediate=no context=from-pstn group = 1 channel => 1-15 channel => 17-31

Finalizadalaedicinyconfiguracindelarchivo'zapata.conf'esnecesariorecargarlaconfiguracin alsistema,paraestodebemosdetenerelservicioasteriskyluegovolverainiciarlo: serviceasteriskstop serviceasteriskstart. OBS.Elprocesodereiniciodelserviciodebedeserobligatoriamentecomoseplanteaarriva,esto quieredecirprimerodetenerloyluegoiniciarlo. Comoultimopaso,parahacerusodeestoscanales,necesitamoscrearlasrutasdediscadodesdela PSTNhaciaelservidor,desdeelservidorhacialaPSTNyentreanexosanalgicos(FXS).Estasrutas secreanenlosarchivosdeconfiguracin'extensions.conf'deambosservidores,porejemplo: LlamadasdesdelaPSTNhaciaelservidor:
;extensions.conf ; Para el caso de numeracin 4834000 hasta 4834099 de GTD. [from-pstn] exten => _40XX,1,Dial(SIP/${EXTEN},20) exten => _40XX,2,Hangup

OBS.Estaconfiguracinvadependerabsolutamentedelacompaatelefnicaconlaquetengamos contratadoslosserviciosdetelefona. LlamadasdesdeelservidorhacialaPSTN:


;extensions.conf [anexos] exten => _XXXXXXX,1,Dial(Zap/g1/${EXTEN},20) exten => _XXXXXXX,2,Hangup exten => _XXXXXXX,1,Dial(Zap/g1/${EXTEN},20) exten => _XXXXXXX,2,Hangup

Respecto al orden de los dispositivos Zap. Losdispositivosaparecerncomocanalesparazaptelenelordenenquehayansidocargados.Por ejemplositieneunpuertoFXOyunpuertoFXSenelsistemaunopuedecargareldriverFXO seguidodeldriverFXSyeldispositivoFXOseraelcanal1mientraselFXSseraelcanal2. LosdispositivosE1/T1debencargarseprimeroquelosFXOoFXS,assielsistemacontieneunE1y ademsunpuertoFXO,entoncesloscanales1al31pertenesernalE1yelpuertoFXOseraelcanal 32.

CAPITULO7

Plan de Marcacin: Conceptos Generales


Elplandemarcacineselencargadodeenrutarcadallamadaenelsistemadesdesuorigenaun destinopredeterminado.LaconfiguracindelplandemarcacindelossistemasAsteriskserealizaen elarchivo'extensions.conf'. Elplandemarcacineslapiezacentraldecualquiersistemadetelefona,yaqueestedefinela maneraquesemanejaelflujoyaseaentranteosalientedellamadas.Elplandemarcacinesta compuestoporunalistainstruccionesopasosqueelsistemadebedeseguir. Para definir un plan de marcacin en un sistema Asterisk es absolutamente importante que se comprendaelfuncionamientodelmismo.

Componentes de un Plan de Marcacin


Gran porcentajedelplandemarcacinsedefineenelarchivo'extensions.conf',estearchivose componedecuatroentidadesprincipales:contextos,extensiones,prioridadesyaplicaciones. Acontinuacinsedescribircadaunodeestoscomponentesycomofuncionanjuntosparacrearun plandemarcacinfuncional.Enlamayoradesistemasestearchivoestaubicadoeneldirectorio '/etc/asterisk'.

Contextos Los contextos definen la organizacin y alcance de la informacin o parmetros del plan de marcaciondefinidosencadaunodeellos.Enlapracticaloscontextospuedenserutilizadospara hacerqueunsistemaAsteriskcontestedemaneradiferentecadalineatelefnica. Loscontextossedefinenporsunombreentrecorchetes,porejemploparacrearuncontextollamado 'anexos'paramanejarlasllamadasentreanexoslodefiniramosas: [anexos] Todas las instrucciones colocadas despusdela definicin del contexto se consideran parte del contextohastaquesedefinaunonuevo.Existelaposibilidaddeinclusionesdecontextosdentrode otroscontextos,paraestoharamosusodelainstruccin: include=>'contexto'

Extensiones Enelinteriordecadacontextosedefinenunaomasextensiones,estasdeterminanelflujolallamada. Cadaunadelasextensionessedefineporlapalabra'exten'segidadeunsigno'=>'estoformadopor unsignoigualyunsignomayorque,comosemuestra: exten=> Seguidoaestesignosedefineelnumeroonombredelaextensin,laprioridadylaaplicacina ejecutartodosseparadosporcomas: [nombredelcontexto] exten=>extensin,prioridad,aplicacin Una extensinesidentificadaporuncarcteralfanumricoypuedecontenernmeros,letras y caracteresespecialestalescomo*y#,ejlaextensin2050seriadelasiguienteforma: exten=>2050,1,Goto(default,s,1) Algunosnombresdeextensionesestnreservadas ysemuestranacontinuacin: s start; una llamada que no tiene algn digito asociado con ella, por ejemplo una lnea anloga loopstart,comienzacon.s. t Timeout;cuandounallamadorenunmendevoznoingresaelnumerocorrectodedgitos,la extensinexecutaeltimeout T absolutetimeout;cuandounallamadaexcedeelvalorllevadoacaboenunavariableabsolutade timeout i invalid;seejecutacuandounllamadoringresaunaextensininvalida h Hangup;seejecutaalfinaldeunallamadacuandoelllamadorcuelga,lasaplicacionesejecutadasen esta extensin no pueden tener acceso al canal cerrado, es muy util para registrar o ejecutar comandos.

Patterns Unprefijodeextensinprecedidoporelcaracterunderscoreindicaunpatrndeconcordancia,por ejemplo _NXXXXX lossiguientessonlospatronesutilizadosparadefinirunaextensin Ncualquierdigitodesde2a9 Xcualquierdigitodesde0a9 Zcualquierdigitodesde1a9 [1268]cualquierdigitoentrecorchetes,enestecaso1,2,6,7y8 .cualquiercarcter1omas

Prioridades Lasprioridadessonpasosnumeradosparadefinirelordendeejecucindecadaextensin.Cada prioridadpuedellamaraunaaplicacinespecifica.Lasprioridadesempiezanenconun1ysevan incrementandodeunoenuno,otambinestalaopcindeircolocando'n'envesdelosnmeros incrementales. Aplicaciones Lasaplicasionessonlosprogramasquerealizanciertasaccionestalessobreuncanaldevoz,estas acciones pueden ser, reproduccion de sonidos (archivos de audio), aceptar tonos de marcado, contestarunallamadaocortarunallamada. Variables Globales Dentrodelarchivo'extensions.conf'existeunaseccindenominada[globals]dentrodeestaseccin sepuedendefinirvariablesglobalesparasuposteriorusoenelplandemarcacin:
;extensions.conf [globals] CONSOLE=Console/dsp IAXTRUNK=IAX2/servidor_B@servidor_A E1GTD=Zap/g1 E1PBX=Zap/g2

[anexos] exten => _XXXXXXX,1,Dial(${E1GTD}/${EXTEN},20) exten => _XXXXXXX,2,Hangup exten => _5000,1,Dial(${IAXTRUNK}/${EXTEN},20) exten => _5000,2,Hangup

Parahacerusodeestasvariablesestasdebenirentrelossignos${VARIABLE}obligariamente,tal cualcomoloobservamosenelejemplo. Creando un DialPlan En este ejemplo tenemos 2extensiones, yprestemos atencinalaformaenquese definen las prioridadesdelallamada
;extensions.conf [enviar] exten => 5555,1,Goto(entrantes,s,1) [entrantes] exten => s,1,Answer exten => s,2,Playback(...) exten => s,3,Hangup [anexos] exten => _40XX,1,Dial(SIP/${EXTEN},20) exten => _40XX,2,Hangup

Tenemos el contexto [enviar] en el cual tenemos la extensin 5555, si nosotros ingresamos la extension 5555 desde nuestro telfono IP o softphone como prioridad numero 1 ejecutara la aplicacinGotoysaltaraalcontextoentrantesalaextensin's'prioridad1,luegoseejecutala aplicacinAnswer,unavezejecutadaestaaplicacinautomticamentepasaraalasiguienteprioridad 2 y ejecutara laaplicacinPlayback luegouna vezejecutadaestaaplicacinpasara ala ultima prioridadla3yejecutaralaaplicacinHangup,oseacortaralallamada. Lavariable${EXTEN}tomaelvalorquenosotrosingresamosenlaextensin,porejemplo: Sidiscamos4000paracomunicarnosconelanexo4000entonceslallamadacaerenla extensinexten=>_40XX,1,Dial(SIP/${EXTEN},20) ylavariable${EXTEN}tomarade formaautomticaelvalor4000queelnumerosediscooriginalmente. Deestaformanoslogramosdarcuentadelaformaencomoseejecutanlasextensionessiguiendoun determinadoconjuntodeprioridadesyejecutandodeterminadasaplicaciones. OBS.ElanexoSIPdesdeelcualserealizaestapruebadedealgunaformateneraccesoalcontexto [enviar].

CAPITULO8

Plan de Marcacin: Construyendo


En este capituloharemosusodetodoslos conceptosaprendidosenelcapituloanterior,yaque construiremosunplandemarcacinpracticoyfuncional.

Caso de Uso Practico


Enunaempresaexisten6tiposdellamadas: 1.LlamadasentreanexosSIP(anexostipocitofono). 2.Llamadaslocales. 3.Llamadaslargadistancianacional.(LDI) 4.Llamadaslargadistanciainternacional.(LDN) 5.Llamadasacelulares 6.Llamadasanumeros600y800.

Ademasexisten5tiposderestricciones: 1.Llamadasacualquierlugar. 2.LlamadasacualquierlugarmenosLDI 3.Llamadasnumeroslocales,numeroscelulares,entreanexosSIPy600y800. 4.Llamadasnumeroslocales,entreanexosSIP,600y800. 5.LlamadasentreanexosSIP. Crear5anexos,porejemploel4080,4081,4082,4083y4084. Asignarlealprimeranexolarestriccinnumerouno. Asignarlealsegundoanexolarestriccinnumerodos. Asignarlealterceranexolarestriccinnumerotres. Asignarlealcuartoanexolarestriccinnumerocuatro. Asignarlealquintoanexolarestriccinnumerocinco.

Solucin: Primero. Enelarchivoextensions.confcrear6contextosindependientesunoparacadaunadelostiposde llamadas: anexos locales LDI LDN celulares 600800
;extensions.conf [anexos] exten => _40XX,1,Dial(SIP/${EXTEN},30) exten => _40XX,2,Hangup

exten => _XXXXXXX,1,Dial(Zap/g1/${EXTEN},20)


exten => _XXXXXXX,2,Hangup [LDN] exten => _1XXNXXXXXXX,1,Dial(Zap/g1/${EXTEN},20) exten => _1XXNXXXXXXX,n,Congestion exten => _1XXNXXXXXXXX,1,Dial(Zap/g1/${EXTEN},20) exten => _1XXNXXXXXXXX,n,Congestion [LDI] exten => _1XX0.,1,Dial(Zap/g1/${EXTEN},20) exten => _1XX0.,n,Congestion [celulares] exten => _09XXXXXXXX,1,Dial(Zap/g1/${EXTEN},20) exten => _09XXXXXXXX,n,Congestion [800_600] exten => _600NXXXXXX,1,Dial(Zap/g1/${EXTEN},20) exten => _600NXXXXXX,n,Congestion() exten => _800NXXXXX,1,Dial(Zap/g1/${EXTEN},20) exten => _800NXXXXX,n,Congestion()

[locales]

Segundo. Agrupardeacuerdoanuestrasrestricciones,paraestocreamosotroscontextos:
;extensions.conf [R1] include include include include include include [R2] include include include include include [R3] include include include include

=> => => => => =>

anexos locales LDN LDI celulares 800_600

=> => => => =>

anexos locales LDN celulares 800_600

=> => => =>

anexos locales celulares 800_600

[R4] include => anexos include => locales include => 800_600 [R5] include => anexos

Tercero. AsignamosloscontextosrestriccionesanuestrosanexosSIP,creadosenelarchivosip.conf. [4080] disallow=all allow=gsm allow=ilbc allow=ulaw type=friend host=dynamic username=4180 secret=4180 dtmfmode=rfc2833 context=R1 callerid="Anexo4180"<4180> qualify=1000 [4081] disallow=all allow=gsm allow=ilbc allow=ulaw type=friend host=dynamic username=4181 secret=4181 dtmfmode=rfc2833 context=R2 callerid="Anexo4181"<4181> qualify=1000 [4082] disallow=all allow=gsm allow=ilbc allow=ulaw type=friend host=dynamic username=4182 secret=4182 dtmfmode=rfc2833 context=R3 callerid="Anexo4182"<4182> qualify=1000

[4083] disallow=all allow=gsm allow=ilbc allow=ulaw type=friend host=dynamic username=4183 secret=4183 dtmfmode=rfc2833 context=R4 callerid="Anexo4183"<4183> qualify=1000 [4184] disallow=all allow=gsm allow=ilbc allow=ulaw type=friend host=dynamic username=4183 secret=4183 dtmfmode=rfc2833 context=R5 callerid="Anexo4183"<4183> qualify=1000

CAPITULO9

Voicemail
Los voicemailseconfiguranatravesdelarchivodeconfiguracin'voicemail.conf'ubicadoen el directorio'/etc/asterisk/',enestearchivoseconfiguraelfuncionamientodelbuzndevozqueposee cadaextensin.Cuandosedefinaelcontexto,estedeberserelmismoquehemosdefinidoenel parmetromailboxenelarchivo'sip.conf'.Elfuncionamientodelvoicemailconsisteenquesiuna llamadahaciaunanexonofuesecontestadaentoncescomoprioridadsiguientesaltaraalalbuznde voz,dondeescucharemosunagrabacinindicandoquenosencontramosenelbuznycuandosuene lasealpodramosdejarunmensajedevoz,elcualseraenviadoaunadireccindecorreoelectrnico quehayamosdefinido. OBS.EnnuestroservidorasteriskdebeexistirunMTA(MailTranferAgentServiciodecorreo)que seacapasdeenviarcorreoselectrnicosaotradireccindecorreoelectrnico. Acontinuacinlosparmetrosdeconfiguracinparaesteservicio:
;voicemail.conf [general] format=wav49|gsm|wav ; Formatos para grabar mensajes. serveremail=root@localhost.localdomain ; Usuario y servidor que van a mandar los correos con los mensajes. language=es ; Lenguaje. attach=yes ; Permitir que nos envi los mensajes de audio adjuntos. maxmessage=180 ; Tamao mximo de mensaje de vos en segundos. Minmessage=3 ; Tamao minimo de mensaje de vos en segundos. skipms=3000 maxsilence=3 ; Cuntos segundos del silencio antes de que terminemos la grabacin silencethreshold=128 maxlogins=3 ; Numero mximo de intentos de logeo para recuperar mensajes a travs del telfono fromstring="Central Telefonica Asterisk Linux Center" emailsubject=[PBX] Recibido mensaje numero ${VM_MSGNUM} en su buzon de voz ${VM_MAILBOX} . emailbody=\n\n\n***** Este es un mensaje automatico de la central de VoIp de *****\n* **** Linux Center *****\n\n\n\n\t Tiene un mensaje nuevo en su buzon de voz, con el numero ${VM_MSGNUM}, recibido desde el numero de telefono ${VM_CALLERID} el ${VM_DATE} . Dicho mensaje se adjunta a este email, pero no obstante Vd. debe de llamar a su buzon de voz y eliminarlo tras su escucha. Si no conoce como acceder a su buzon de voz, por favor contacte con el departamento a cargo.\n\n\t Gracias.\n\n\t Central telefonica Asterisk.\n

;voicemail.conf (continuacin) [default] 4140 => 4140, Usuario N1, usuario_N1@dominio.cl 4141 => 4141, Usuario N2 ,usuario_N2@dominio.cl 4142 => 4142, Usuario N3 ,usuario_N3@dominio.cl

Dentrodelcontexto[default]vandefinidaslascasillasdevozconsusrespectivascuentasdecorreo, contraseaynombredeusuario.Lasintaxisdeestaconfiguracineslasiguiente: Anexo=>Contrasea,Nombre_del_Usuario,Email_al_que_enviara_mensaje Unavezrealizadaestaconfiguracinveremoslaformadecomodejarmensajesencasonuestro anexonoestedisponible,estoserealizaenelarchivo'extensions.conf':


;extensions.conf

[anexos] exten => _40XX,1,Dial(SIP/${EXTEN},20) exten => _40XX,2,Voicemail(${EXTEN}) exten => _40XX,3,Hangup

Conestoencasodenocontestarelanexopor20segundosencasodeestarocupadonuestroanexo lallamadapasaraautomticamentealasiguienteprioridadoseapasaraalbuzndevoz. Pararecargarestaconfiguracinesnecesarioreleerlosarchivosdeconfiguracin: asteriskr reload

CAPITULO10

Meetme (Salas de Conferencias)


Configuracion del mdulo de conferencia MeetMe de asterisk se realiza en el archivo de configuracin'meetme.conf' yestaubicadoeneldirectorio'/etc/asterisk'. ElarchivodeconfiguracinparalassalasdeconferenciasdeMeetMesedefiniriadelasiguiente forma:
;meetme.conf [rooms] ; ; Usage is conf => confno[,pin][,adminpin] ; conf => 60000 conf => 60001,1234

Lasintaxisdelarchivoeslasiguiente: Conelcontexto[rooms]damosinicioaladefinicindenuestrassalasdeconferencia.Luegopara crearunasaladeconferenciainiciamosconelcomando'conf=>',seguidodelnumerodelasalade conferencia y lacontraseaparadichasala,siqueremosaccederaestasalasinunacontrasea entoncessedejasoloelnumerodelasala. conf=>numero_sala,contrasea_sala Posteriormenteunavezrealizadosestoscambiosenelarchivo'meetme.conf',veremoslaformade accederaestassalasestoserealizaenelarchivo'extensions.conf':


;extensions.conf

[anexos] exten => 60000,1,Meetme(60000)

Conestoencasodemarcarlaextensin60000entoncescomoprioridadnumerounoejecutarala aplicacinMeetmeyaccederemosalasaladeconferencia6000.

CAPITULO11

Evaluacin
Laevaluacinsellevaraacaboen2.5hrs,esdecarcternetamentepracticoyseracapazdemedirlos conocimientosadquiridosporlosalumnosalcabodelcapitulo10.

CAPITULO12

IVR (Interactive Voice Response)


RespuestaInteractivadeVoz(IVR):(InteractiveVoiceResponse)nospermitepresentarunmen,a lapersonaquellama,atravsdeltecladodeltelfono, ormediodelcualpodrescogerlaopcinque p encasillelarespuestaoserviciobuscado.Ademspuedesonarmensajesgrabadosparalasllamadas enespera,parareforzarlaimagendemarcaotransmitirinformacinadicionalalapersonaquellama. EnasteriskunIVRespresentadocomounconjuntodecontextosqueseinterrelacionanentresi dependiendodelasopcionesqueestenosdeaelegir.ElarchivodeconfiguracinparaunIVResel archivo'extensions.conf'. ParaejemplificarelusodeunIVRtomemoselsiguientecaso: UnaempresaXqueprestaserviciosdeventasysoportedeseadesarrollarunIVRparaatenderlas llamadasdesusclientes,ademsesteIVRtienequesercapazdetomardecisionesrespectoalhorario yaqueestaempresatrabajoenhorariosdeLunesaViernesde09.00a18.30. AcontinuacinunejemplopracticodeIVR:
;extensions.conf [anexos] exten => 9999,1,Goto(menu,s,1) [menu] exten => exten => exten => exten => exten => exten => exten => exten => exten => exten => exten =>

s,1,Answer s,2,Wait,1 s,3,Background(lc/mymessage-500) s,4,GotoifTime(9:00-18:30|mon-fri|*|*?menu,s,7) s,5,Background(lc/mymessage-509) s,6,Hangup() s,7,Background(lc/mymessage-501) s,n,Background(lc/mymessage-502) s,n,Background(lc/mymessage-503) s,n,WaitExten(5) s,n,Dial(SIP/4000,40)

exten => t,1,Hangup() exten => i,1,Goto(menu,s,3) exten => 1,1,Goto(menu-ventas,s,1) exten => 2,1,Goto(menu-soporte,s,1) exten => 0,1,SetCallerID("del menu de voz") exten => 0,n,Dial(SIP/4000,40)

;extensions.conf [menu-ventas] exten => s,1,Answer exten => s,n,Wait,1 exten => s,n,Background(lc/mymessage-504) exten => s,n,WaitExten(3) exten => s,n,Background(lc/mymessage-504) exten => s,n,WaitExten(3) exten => s,n,Goto(menu,s,3)

exten => 1,1,SetCallerID("Ventas Capacitacion") exten => 1,n,Dial(SIP/4001,20) exten => 1,n,Dial(SIP/4002,20) exten exten exten exten exten exten => => => => => => 2,1,SetCallerID("Ventas de Proyectos") 2,n,Dial(SIP/4003,20) 2,n,Dial(SIP/4003,20) 2,n,Dial(SIP/4005,20) 2,n,Dial(SIP/4006,20) 2,n,Dial(SIP/4007,20)

exten => 3,1,SetCallerID("Ventas de Productos") exten => 3,n,Dial(SIP/4008,20,tr) exten => 3,n,Dial(SIP/4009,20,tr) exten exten exten exten exten exten => => => => => => 4,1,SetCallerID("Soporte por Eventos") 4,n,Dial(SIP/4003,20) 4,n,Dial(SIP/4003,20) 4,n,Dial(SIP/4005,20) 4,n,Dial(SIP/4006,20) 4,n,Dial(SIP/4007,20)

exten => t,1,Goto(menu,s,1) exten => i,1,Goto(menu,s,1)

[menu-soporte] exten => s,1,Answer exten => s,n,Wait,1 exten => s,n,Background(lc/mymessage-505) exten => s,n,WaitExten(3) exten => s,n,Background(lc/mymessage-505) exten => s,n,WaitExten(3) exten => s,n,Goto(menu,s,1) exten => 1,1,SetCallerID("Soporte Contrato") exten => 1,n,Dial(SIP/4010,20,tr) exten => 1,n,Dial(SIP/4011,20,tr) exten => 2,1,SetCallerID("Soporte Garantia") exten => 2,n,Dial(SIP/4012,20,tr) exten => 2,n,Dial(SIP/4013,20,tr) exten => 3,1,SetCallerID("Otro tipo de soporte") exten => 3,n,Dial(SIP/4014,20,tr) exten => 3,n,Dial(SIP/4015,20,tr) exten => t,1,Goto(menu,s,1) exten => i,1,Goto(menu,s,1)

OBS.Losarchivosdeaudiodebernsergrabadosenelcurso.

Definiciones de las funciones ejecutadas en el IVR Answer: Wait: Descuelgainmediatamente. Esperauntiempoexpresadoensegundosantesdecontinuar. Parmetros: Segundos... SegundosdeEspera.

Background:Reproduceunamelodaomensajedeaudiomientrasseesperalamarcacinde lasteclas. Parmetros: Archivo... EspecificaelarchivoquecontienelaMelodao Mensaje. WaitExten: Esperalossegundosexpresados,quesemarqueunanuevaextensinantesde continuar. Parmetros: Tiempo.... SegundosdeEspera. Hangup: Cuelgainmediatamente.

GotoIfTime: Desvaelflujodelallamadaauncontextoyextensinespecificados,SOLO cuandoseestendentrodelrangofechahoraespecificadoenlosparmetros (Unsmbolo*indicatodoelrangoposibleenelparmetro). Parmetros: RangoHorario.... Enformatode24Horas,yconunahora decomienzoyotradefinal(Porejemplo: 0814.Las24horasseindicancon*). DasSemana... IndicaunnumerodeDiashbilesenla semana(0y7indicanDomingo;*indica todos). DasdelMes.... Indicaquediasdelmessedesean(* indicatodos). Meses.... Indicaquemesessedesean(*indica todos). RegladeSaltoTrue.. NmerodelaReglaalaquesaltaencaso deserVerdaderalaExpresin. RegladeSaltoFalse.. NmerodelaReglaalaquesaltaencaso deserFalsalaExpresin. Dial: Realizaunallamadaalaextensinonmerodeterminadoenelcampo "Num.Llamada",esperandounacantidaddesegundosparaqueseestablezcala comunicacin.Encasodequenoseestablezcalacomunicacinpasarala siguienteregla,perosilacomunicacinnoseestableceporestarocupadoel interlocutor,saltaralareglan+101. Parametros: CanalComunicacin..Tipodetecnologaqueseusaenla llamada:Zap,SIP,IAX,H323.

Extension/Nmero... Aunaextensininternasloindicarla Extensin. Si es una llamada externa: Recurso/${EXTEN}(oNmeroalquese llama). Segundosdeespera... Segundosdeesperaaqueseestablezcala comunicacin. Goto: Envaelflujodelallamadaaunadeterminadaposicindeldialplan, establecidaporlosparmetrosdeContexto+Extensin+Prioridad.Entrelos contextoshayquetenerencuentaqueademsdeloscreadosporelusuario existenotrosdecreacinautomtica:defaultcontroladodesdeapestaa l "ControlIVR";voiph323:controlalasextensionesdelsistema;outgoingque gestionatodaslasextensionesdesalidacreadasdentrodelaopcin "ComunicacinExterior";servicioscontextoadministradodesdelaventana homnima(Tenerencuentalasmaysculasyminsculas). Parmetros: Contexto... .Contextoalquesedesvalallamada.Los contextos:default,servicios,outgoing,voip h323;soncreadosporelsistema,ypueden referenciarse. Extension.... Especificalaextensin,dentrodelContexto,ala quesedesva(sinoseespecificanada,irala extensin"s"start. Prioridad... Ultimoniveldedetallealquesepuedellegar,y expresaelndicedeunaregladentrodelasdela extensin.

SetCallerID: EstableceunnuevovalorparaelCallerIDdelallamada. Parmetros: CID... NuevoCID.

CAPITULO13

Funciones especiales
Funcin de Autenticacin para Llamadas
EstafuncinnospermiteAuthenticaraunusuarioconunacontraseamarcadaenelinstanteenel quevamosarealizarunallamada,estallamadapuedeserdecualquiertipo,porejemplollamadas larga distancias o llamadas a celulares, dicha contrasea sera pedida al usuario para seguir el procedimientodelallamada. Authenticate: Pidealinterlocutorqueintroduzcaunaclavevlidaparacontinuar. Parametros: Password... Contraseavlida,quepuedeserunarchivo conteniendocontraseas. Ejemplopractico: Necesitamosquealgunosanexosseautentifiquenatravsdeunacontraseaparapoderrealizar llamadas. Enelarchivoextensions.confcreamosuncontexto:
;extensions.conf [Llamadas_autenticadas] exten => _9999,1,Authenticate(/etc/asterisk/passwords/${CALLERID(num)}) exten => _9999,2,Disa,(no-password|Llamar) exten => _9999,3,Hangup [Llamar] exten => _XXXXXXX,1,Dial(Zap/g1/${EXTEN},10) exten => _XXXXXXX,2,Hangup

Un anexo quepuede ejecutar lo que seencuentradentro del contextoLlamadas_autenticadas, cuandovaamarcarel9999,comoprimeraprioridadvaaejecutarlafuncinAuthenticateynos va a preguntar por una contrasea que nosotros definimos en un archivo dentro del directorio /etc/asterisk/passwords/yllamadodelamismaformaqueelanexodesdeelcualestamosllamando. OBS: Eldirectorio/etc/asterisk/passwords/vaacontenerarchivosnombradosdelamismaforma quelosanexosquenecesitanautentif carseparapoderrealizarllamadas: i /etc/asterisk/passwords/4000;Estearchivodebecontenerunapassword /etc/asterisk/passwords/4000; /etc/asterisk/passwords/4000; etc....

Dentrodecadaarchivodebemosdeescribirlacontraseadeautenticacindelanexocorrespondiente. Silapasswordescorrectaentoncespasaraalasegundaprioridad,lacualnosdartonodemarcadoy nosenviaraautomticamentealcontextoLlamaryunavesqueescuchamoseltonodemarcado ingresamoselnumeroexternohaciaelcualnosqueremoscomunicarporejemploel4834000yse lallamadaserealizar.SilaPasswordesincorrectanoslavolverapreguntar.

Funcin para grabacin de Llamadas


EstaaplicacinnospermitegrabarunaconversacindetelefnicarealizadaporunanexoXhacia archivosdeaudio. Lafuncinmonitorsedefinerespectoasusintaxisdelasiguienteforma: Monitor: GrabalacomunicacinencursoenunformatodeAudio(wav,gsm)yla almacenaenunarchivodeaudiolasalidayenotrolaentrada..amenosquese seleccionelaopcin"m",encuyocasosonmezcladoslosarchivosenunosolo. Otraopcin,"b"indicaquenosequierengrabarlossaltosdeunaextensina otra,encasodequeseproduzcan. Parametros: FormatoAudio.. EspecificasisedesaalmacenarelAudio enformatowav,gsm. Archivo... Nombreconelquesealmacena(se puedenusarnombredeVariables). mmezclasonidosdeentradaysalida;b nograbamientrashayunatransferenciaa otrocanal.

Opciones...

Laaplicacinmonitorcomienzaagrabaruncanalmientrasesteestaencomunicacin.Lospaquetes devozdelaentradaydelasalidadelcanalsevanalmacenandoenunarchivodesonido.Sino especificasunatrayectoriacomoparmetrodelaaplicacin,elarchivoseralmacenadoenel subdirectoriodelmonitordelarutaespecificadaconelastspooldirenasterisk.conf(asquepor defectolosarchivosdeaudiosernalmacenadosen/var/spool/asterisk/monitor).


;extensions.conf [llamadas-grabadas] exten => _40XX,1,Monitor(wav,archivo-grabacion,m) exten => _40XX,2,Dial(SIP/${EXTEN},20) exten => _40XX,3,Hangup

Funcin de llamadas con limites de tiempo


Estafuncineslaaplicacin'Dial'conunparmetroadicionalquenospermitirtenercontrolde cuantosminutospodrhablardeterminadoanexo. Dial(type1/identifier1[&type2/identifier2[&type3/identifier3...]],timeout) Donde: type1 identified timeout >SIP,IAX2,Zap >4000or${EXTEN} >OpcinL(::)

Laopcin'L(x:y:z)'quieredecirquelimitaralallamadaa"x"milisegundos,notificndocuandofalten "y"milisegundosyrepitindolocada"z"milisegundos,endondesolo"x"esindispensableparasu funcionamiento. Ejemplopractico:


;extensions.conf [llamadas-con-tiempo] exten => _XXXXXXX,1,Dial(Zap/g1/${EXTEN},L(3600000:61000:30000)) exten => _XXXXXXX,2,Hangup

ParaelcasodelejemplosignificaqueelcomandoDiallimitaralallamadaa3600000ms(1hora)y notificaraquelallamadallegaaesetiempocuandofalte61000(1minutoy1segundo)yesaalarma serepetircada30000ms(30segundos).

CAPITULO14

Asterisk AstDB
AsteriskincorporaunaBDtipoBerkleyDBv2,enellaelpropioAsteriskalmacenadiversosvalores como: RegistrosSIP,IAX. Informacinsobrecolas. Nosotroscomodesarrolladoresyprogramadoresdenuestrodialplantambinpodemosalmacenar informacinenellayconsultarladesdeelmismodialplan. AstDBposeeunaorganizacinreferenteafamilias,ydentrodeunafamiliasepuedentenerdiversas keys,yparacadakeyunsolovalor.AcontinuacinunejemplodecreacindeunaDBasterisk.
[root@asterisk ~]# asterisk -r asterisk*CLI> database put MIFAMILIA mikey Updated database successfully asterisk*CLI> database show MIFAMILIA /MIFAMILIA/mikey : asterisk*CLI> database put MIFAMILIA mikey Updated database successfully asterisk*CLI> database show MIFAMILIA /MIFAMILIA/mikey : 1234

1234 4567

4567

LaformademanipularestaDBcreadaanteriormenteeliminandoelcontenidoyasignndoleotroes lasiguiente:
; extensions.conf [AstDB] exten => exten => exten => exten =>

_XXXX,1,Set(valrespassadmin=${DB_DELETE(MIFAMILIA/mikey)}) _XXXX,2,Set(DB(MIFAMILIA/mykey)=${EXTEN}) _XXXX,3,Set(pass1=${DB(MIFAMILIA/mykey)}) _XXXX,6,Hangup()

NOTA: Loscaptulos15,16y17sernabsolutaycompletamenteabordadosenclaserealizandodecadauno deestosunlaboratoriodondeseinstalar,configuraryarafuncionarcadaunodelossoftwares seleccionados para sus correspondientes labores (MySQLAsteriskStats ; Flash Operator Panel ; TrixboxAsteriskNowsegnconveniencia).

You might also like