SlideShare uma empresa Scribd logo
1 de 104
Sistemas de VoIP con Asterisk: Modulo I Marzo 2010 Ing. Gabriel Astudillo
¿ Que es Asterisk? ,[object Object],[object Object]
Preparando un Sistema para Asterisk   ,[object Object],[object Object],[object Object],[object Object]
Preparando un Sistema para Asterisk   Selección de Hardware para el Servidor
Preparando un Sistema para Asterisk   ,[object Object],[object Object],[object Object],[object Object],[object Object]
Preparando un Sistema para Asterisk   ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Preparando un Sistema para Asterisk   ,[object Object],[object Object],[object Object],[object Object]
Preparando un Sistema para Asterisk   ,[object Object],[object Object]
Preparando un Sistema para Asterisk   ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Requerimientos de Hardware ,[object Object],[object Object],[object Object],[object Object]
Requerimientos de software ,[object Object]
Requerimientos de software ,[object Object],[object Object]
Requerimientos de software ,[object Object]
Requerimientos de software ,[object Object],[object Object]
Asterisk add-ons ,[object Object],[object Object],[object Object],[object Object]
Directorios usados por asterisk ,[object Object],[object Object],[object Object]
Directorios usados por asterisk ,[object Object],[object Object],[object Object],[object Object]
Directorios usados por asterisk ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Directorios usados por asterisk ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Directorios usados por asterisk ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Opciones del inicio de asterisk ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Configuración inicial de Asterisk ,[object Object],[object Object],[object Object]
Configuración inicial de Asterisk ,[object Object],[object Object],[object Object],[object Object]
Configuración inicial de Asterisk ,[object Object],[object Object],[object Object],[object Object]
Configuración de un canal SIP ,[object Object],[object Object],[object Object],[object Object]
Configuración de un canal SIP [general] context=default srvlookup=yes [201] type=friend secret=201 qualify=yes  ; Qualify peer is no more than 2000 ms away nat=no  ; este usuario no esta a travez de nat host=dynamic  ; este usuario se registrara con nosotros canreinvite=no  ; por defecto asterisk intentara hacer el reenvio context=internas  ; el contexto internas controla el comportamiento de  este canal
Configuración de un canal SIP ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Configuración de un canal SIP ,[object Object],[object Object],[object Object],[object Object]
Configuración del Cliente SIP ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Configuración del Cliente SIP
Configuración de un canal IAX     En /etc/asterisk/iax.conf  debemos tener: [general] jitterbuffer=yes bindport=4569 calltokenoptional = 0.0.0.0/0.0.0.0 requirecalltoken = auto maxcallnumbers = 512  ;  http://tinyurl.com/iax2seg [X06] callerid=mi nombre secret=123 type=friend host=dynamic context=internal disallow=all allow=gsm CLI>originate IAX2/X06 application echo
El plan de marcado ,[object Object],[object Object],[object Object]
El plan de marcado: contexto ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
El plan de marcado: extensiones ,[object Object],[object Object],[object Object],[object Object]
El plan de marcado: extensiones ,[object Object],[object Object]
El plan de marcado: prioridades ,[object Object],[object Object]
El plan de marcado ,[object Object],[object Object],[object Object]
[general ] y [globals] ,[object Object],[object Object],[object Object]
Variables Globales Como su nombre lo indica son variables que se aplican a todos las extensiones y en todos los contextos.  Pueden ser definidas de 2 formas:   [globals] GABRIEL=SIP/201 [internal] exten => 123,1,SetGlobalVar(JOHN=SIP/john) )
Variables de Canal Son variables que están asociadas únicamente a una llamada en particular. A diferencia de las variables globales solo se definen durante la duración de la llamada y en el canal activo únicamente exten => 123,1,Set(CONTADOR=4) exten => 123,2,Playback(digits/${CONTADOR}) Un claro ejemplo de una variable de canal es el callerid
Uso de la aplicacion Dial Dial(tech/user, timeout, opcion) El primer parametro es el destino al cual queremos llamar conformado por la tecnologia (SIP,DAHDI,IAX) un slash (/) y la fuente remota(tipicamente un numero o un usuario) exten => 123,1,Dial(DAHDI/1) exten => 123,1,Dial(SIP/201) exten => 123,1,Dial(DAHDI/1&DAHDI/2)
Uso de la aplicacion Dial Dial(tech/user, timeout, opcion) El segundo parametro es el timeout especificado en segundos y es el tiempo que asterisk intentara establecer una conexion con el canal definido. exten => 101,1,Dial(SIP/gabriel,10) exten => 101,1,Dial(SIP/101,10) Si el canal es contestado antes del timeout asterisk puentea ambos canales para permitir la comunicacion
Uso de la aplicacion Dial Dial(tech/user, timeout, opcion) Si el canal destino no contesta, vencido el timeout, asterisk pasa a la siguiente prioridad Si el canal destino se encuentra ocupado, asterisk pasa a la extension n+101, (si existe) exten => 123,1,Dial(SIP/201,10) exten => 123,2,Playback(vm-nobodyavail) exten => 123,3,Hangup( ) exten => 123,102,Playback(tt-allbusy) exten => 123,103,Hangup( )
Uso de la aplicacion Dial( ) Dial(tech/user, timeout, opcion) El tercer argumento en un carácter de opción, puede contener mas de uno  y su función es modificar el comportamiento de la función Dial ( ) la opción mas popular es ( r ). La letra r hará que el llamante escuche un tono de timbrado mientras el canal de destino es notificado de una llamada entrante. Nótese que cualquiera de estos argumentos puede ser dejado en blanco. Por ejemplo si queremos especificar una opción pero no un timeout, simplemente dejamos el argumento en blanco así: exten => 123,1,Dial(SIP/101,  ,r)
Uso de la aplicacion Playback( ) ,[object Object],[object Object],[object Object]
Ejemplo Completo [general] autofallthrough=yes  clearglobalvars=no [globals] GABRIEL=SIP/201 JOHN=SIP/202 [internas] exten => 201,1,Dial(SIP/201,10,r) exten => 201,2,Playback(vm-nobodyavail) exten => 201,3,Hangup( ) exten => 201,102,Playback(tt-allbusy) exten => 201,103,Hangup( ) exten => 202,1,Dial(SIP/202,10,r) exten => 202,2,Playback(vm-nobodyavail) exten => 202,3,Hangup( ) exten => 202,102,Playback(tt-allbusy) exten => 202,103,Hangup( )
Agregando Variables al dial plan [internas] exten => 201,1,Dial(${GABRIEL},10,r) exten => 201,2,Playback(vm-nobodyavail) exten => 201,3,Hangup( ) exten => 201,102,Playback(tt-allbusy) exten => 201,103,Hangup( ) exten => 202,1,Dial(${JOHN},10,r) exten => 202,2,Playback(vm-nobodyavail) exten => 202,3,Hangup( ) exten => 202,102,Playback(tt-allbusy) exten => 202,103,Hangup( )
Grabación de audio con Record()  Record( filename.format, silence, maxduration, options) Dentro de [internas] : exten => 282,1,Record(intro%d.gsm) exten => 282,2,Playback($ { RECORDED_FILE } ) exten => 282,3,Hangup() http://tinyurl.com/asteriskREC “ Usted se ha comunicado con la compañía ABC, si conoce el numero de la extensión digítelo ahora, caso contrario presione 1 para comunicarse con ventas, 2 para soporte técnico, 3 para contabilidad; o manténgase en la línea que una operadora le atenderá”
Voicemail Es una de las características mas populares de los sistemas de telefonía actual.  En este sentido Asterisk es muy flexible por:  (/etc/asterisk/voicemail.conf) •  Voicemail ilimitados con protección de password y con carpetas para organizar los voicemail. •  Saludos diferentes para estados “ocupado” y “no disponible” •  Saludos por defecto y personalizados •  Habilidad para relacionar un teléfono con mas de un voicemail y voicemalis con mas de un usuario •  Notificación al correo electrónico de  la llegada de un voicemail y  posibilidad de adjuntar el archivo  de audio •  Voicemail forwarding y broadcasts •  Creacion de Directorio de la empresa basado en la informacion de los voicemail
Voicemail Las configuraciones para el voicemail se hacen en el archivo /etc/asterisk/voicemail.conf mailbox => password, name, email, pager_email, options options Este campo permite ingresar opciones que se sobreponen a las configuraciones globales del mailbox Se escriben de la forma option=value separados por el carácter pipe  (|).  [default] 201 => 201,Gabriel Astudillo, gastudillo@gmail.com, 84519925@im.movistar.com.ec, tz=central|attach=yes
Voicemail En extensions.conf: ;Dentro de  [internas] exten => 201,1,Dial(SIP/201,10,r) exten => 201,2,VoiceMail(201@default,u) exten = > 201,3,Hangup() exten => 201,102,VoiceMail(201@default,b) exten = > 201,103,Hangup() ;Acceso al voicemail: exten => 500,1,VoiceMailMain( )
Directorio Telefónico Directory( ) necesita de 3 argumentos: el contexto del voicemail desde donde se leerán los nombres, el contexto del dialplan (extensions.conf) donde se puede ubicar al usuario y un carácter de opción. Por defecto Directory() busca en el directorio por el apellido , pero si le pasamos la opción f, buscará por nombres. Por ejemplo: exten =>  8,1,Directory(default,internal,f) exten => 9,1,Directory(default,internal ) Si el llamante presiona 8 obtendrá un directorio ordenado por nombres y si presiona 9 el llamante obtendrá un directorio ordenado por apellidos
Conferencias con MeetMe( ) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Conferencias con MeetMe( ) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Expresiones y Manejo de Variables Expresiones Se definen como un conjunto de variables, operadores y valores que se colocan juntas para obtener un resultado. $[expresion] Ejemplos: $[${CONT}  +  1] $[${CONT}  /  2] Cuando Asterisk encuentra una expresión, reemplaza toda la expresión por el valor resultante. Es importante notar que antes de hacer esto primero evalúa el valor de las variables
Expresiones y Manejo de Variables ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Expresiones y Manejo de Variables Operadores Boleanos Evalúan la verdad de una sentencia  or  expr1 | expr2 and  expr1 & expr2 Comparación  expr1 {=, >, >=, <, <=, !=} expr2 Matemáticos:  expr1 {+, -} expr2 expr1 {*, /, %} expr2
Agregando lógica al Dialplan ,[object Object],[object Object],[object Object],[object Object]
Ramificación Condicional ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Ramificación Condicional Aplicación GotoIf() exten => 345,1,Set(TEST=1) exten => 345,2,GotoIf($[{$TEST}  =  1]?10:20) exten => 345,10,Playback(weasels-eaten-phonesys) exten => 345,20,Playback(office-iguanas)
Ramificación Condicional Aplicación GotoIf() exten => 123,1,Set(COUNT=10) exten => 123,2,GotoIf($[${COUNT}  >  0]? 3 :10) exten => 123,3,SayNumber(${COUNT}) exten => 123,4,Set(COUNT=$[${COUNT}  -  1]) exten => 123,5,Goto(2) exten => 123,10,Hangup( ) El caso de la Ex-enamorada exten => 202,1,GotoIf($[${CALLERID(num)}  =  201]?20:10) exten => 202,10,Dial(SIP/201,10,r) exten => 202,20,Playback(abandon-all-hope) exten => 202,21,Hangup( )
Ramificación Condicional basada en fechas Aplicación GotoIfTime() Similar a GotoIf() pero se diferencian en que GotoIfTime() toma la decisión de pasarle el control  basado en la consulta al reloj del sistema  ) GotoIfTime( times,days_of_week,days_of_month,months?label) times : rangos de horas del día en formato 24h, el día comienza a las 00:00 y termina a las 23:59.  Ej: 09:00-17:59 days_of_week:  días de la semana mon, tus, thu… Ej: mon-fri days_of_month: 7-12  (del 7 al 12) o 15,30 (15 y 30) months: jan, feb, mar, apr… Para hacer coincidir todos los valores hay que poner un * en el lugar del parametro.
Ramificación Condicional basada en fechas ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Ramificación Condicional basada en fechas Aplicación GotoIfTime() GotoIfTime( times,days_of_week,days_of_month,months?label) [incoming] ; Si es cualquier hora del dia, en cualquier dia de la semana,  ; durante el noveno dia del mes de octubre nuestra empresa esta ;cerrada  exten => s,1,GotoIfTime(*,*,10,oct?cerrado,s,1) ; durante las horas de trabajo envie las llamadas al contexto ;abierto  exten => s,2,GotoIfTime(09:00-17:59|mon-fri|*|*?abierto,s,1) exten => s,3,GotoIfTime(09:00-11:59|sat|*|*?abierto,s,1) ; en cualquier otro caso estamos cerrados exten => s,4,Goto(cerrado,s,1)
Macros Las Macros son construcciones muy útiles, diseñadas para evitar repeticiones en el plan de marcado.  También permiten hacer cambios a grandes grupos de extensiones en una manera, rápida, ágil y ordenada. Recordemos: exten => 201,1,Dial(SIP/201,10,r) exten => 201,2,VoiceMail(201@default,u) exten =>  201,3,Hangup() exten => 201,102,VoiceMail(201@default,b) exten =>  201,103,Hangup() Imaginen tener que hacer esto para una organización de 100 usuarios !!!!!  O tener que agregar una nueva caracteristica a todos los usuarios
Como definir una Macro La definición de una macro es similar a la de un contexto (de hecho es un contexto “limitado&quot;) [macro-extensiones] exten => s,1,Dial(SIP/201,10,r) exten => s,2,VoiceMail(201@default,u) exten =>  s,3,Hangup() exten => s,102,VoiceMail(201@default,b) exten =>  s,103,Hangup() Noten que esta definición aun no es practica pues solo define al usuario GABRIEL y nos direccionaría a todos los usuario a su voicemail En la definición de una macro siempre debemos utilizar la extensión especial s
Como llamar a una Macro Macro(nombre,arg1,arg2...) [internos] exten => 201,1,Macro(extensiones, arg1, arg2 ) Al momento de llamar a la función Macro se definen al menos 4 variables de canal que nos van a permitir generalizar su uso: ${MACRO_CONTEXT} ${MACRO_EXTEN} ${MACRO_PRIORITY} ${ARG n}
Como llamar a una Macro [macro-extensiones] exten => s,1,Dial(SIP/201,10,r) exten => s,2,VoiceMail(${MACRO_EXTEN}@default, u) exten => s,3,Hangup() exten => s,102,VoiceMail(${MACRO_EXTEN}@default, b) exten => s,103,Hangup() [internos] exten => 201,1,Macro(extensiones,arg1) Noten que ahora ya podemos pasar al voicemail de cada una de las extensiones, pero aun esta fijo el canal con el cual se establecerá la comunicación. Alguna idea ?
Aplicando la macro al dialplan [macro-extensiones] exten => s,1,Dial(${ARG1},10,r) exten => s,2,VoiceMail(${MACRO_EXTEN}@default, u) exten => s,3,Hangup() exten => s,102,VoiceMail(${MACRO_EXTEN}@default, b) exten => s,103,Hangup() [internos] exten => 201,1,Macro(extensiones, SIP/201) exten => 202,1,Macro(extensiones,${JOSE}) exten => 203,1,Macro(extensiones, SIP/203)
FXS y FXO para Asterisk ,[object Object],[object Object],[object Object],[object Object],[object Object]
FXS y FXO para Asterisk ,[object Object],[object Object]
TDM410P PCI 2.2 Fuente de Voltaje FXO Ports FXS Ports Entradas RJ-11
Configuración de un canal FXO ,[object Object],[object Object],[object Object],[object Object],[object Object]
Configuración de un canal FXO ,[object Object],[object Object]
Configuración de un canal FXO ,[object Object],[object Object],[object Object]
Configuración de un canal FXO ,[object Object],[object Object],[object Object]
Configuración de un canal FXO Configuración del hardware en  /etc/asterisk/chan_dahdi.conf [channels] ; canales físicos: ; opciones por defecto para todos los canales usecallerid=yes hidecallerid=no callwaiting=no threewaycalling=yes transfer=yes echocancel=yes echotraining=yes  ; definicion de canales: context=entrantes  ; llamadas entrantes se dirigen a [entrantes] en extensions.conf signalling=fxs_ks ; Use señalizacion FXS para un canal FXO channel => 4  ; PSTN se conecta al puerto 4
Configuración de un canal FXO ,[object Object],[object Object],[object Object],[object Object],[object Object]
Configuración de un canal FXO ,[object Object],[object Object],[object Object],[object Object]
Configuración de un canal FXO ,[object Object],[object Object],[object Object],[object Object]
Configuración de un canal FXO ,[object Object],[object Object],[object Object],[object Object]
Configuración de un canal FXO CONFIGURACION DEL DIALPLAN [entrantes] ;las llamadas que provienen del puerto FXO son ;direccionadas a este contexto desde chan_dahdi.conf exten  =>  s,1,Answer() exten  =>  s,2,Echo() Lab: Probar que al llamar al 2269261 contesta la PBX y se reproduce tu propia voz
Configuración de un canal FXS ,[object Object],[object Object],[object Object]
Configuración de un canal FXS ,[object Object],[object Object],[object Object]
Configuración de un canal FXS ,[object Object],[object Object],[object Object],[object Object]
Como recibir una llamada en un canal FXO ,[object Object],[object Object],[object Object]
Las funciones Answer( ), Playback( ) y Hangup( ) ,[object Object],[object Object],[object Object]
Agregando lógica al Dialplan ,[object Object],[object Object],[object Object]
Agregando lógica al Dialplan [entrantes] exten => s,1,Answer( ) exten => s,2,Background(intro1) exten  => s,3,WaitExten() exten => 1,1,Playback(digits/1) exten => 1,2,Goto(entrantes,s,1) exten => 2,1,Playback(digits/2) exten => 2,2,Goto(entrantes,s,1)
Validando entradas y tiempos de espera ,[object Object],[object Object],[object Object]
Validando entradas y tiempos de espera [entrantes] exten => s,1,Answer( ) exten => s,2,Background(intro04) exten => 1,1,Playback(digits/1) exten => 1,2,Goto(entrantes,s,1) exten => 2,1,Playback(digits/2) exten => 2,2,Goto(entrantes,s,1)  exten => i,1,Playback(pbx-invalid) exten => i,2,Goto(entrantes,s,1) exten => t,1,Playback(vm-goodbye) exten => t,2,Hangup( )
Vision de los Contextos
Contexto [incoming] [incoming] exten => s,1,Answer( ) exten => s,2,Background(enter-ext-of-person) exten => s,3,WaitExten() exten => 201,1,Dial(SIP/201,10,r) exten => 201,2,VoiceMail(201@default,u) exten =>  201,3,Hangup() exten => 201,102,VoiceMail(201@default,b) exten =>  201,103,Hangup() exten => 202,1,Dial(SIP/201,10,r) exten => 202,2,VoiceMail(202@default,u) exten =>  202,3,Hangup() exten => 202,102,VoiceMail(202@default,b) exten =>  202,103,Hangup() exten => i,1,Playback(pbx-invalid) exten => i,2,Goto(incoming,s,1) exten => t,1,Playback(vm-goodbye) exten => t,2,Hangup( )
Coincidencia de Patrones ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Coincidencia de Patrones ,[object Object],[object Object],[object Object],[object Object]
Coincidencia de Patrones Sintaxis Si un usuario digita una extensión de 3 digitos desde el 200 hasta el 999 escuchara el audio auth-thankyou  exten => _555XXXX,1,Playback(digits/1) exten => _55512XX,1,Playback(digits/2) Pacifictel: exten => _2XXXXXX,1, Acción Nacional: exten => _0NXXXXXXX,1, Acción Movistar: exten => _08[45]XXXXXX,1,Accion
Coincidencia de Patrones Sintaxis Porta: exten => _09[732]XXXXXX,1, Acción exten => _08[567]XXXXXX,1, Acción Internacional: exten => _00.  ,1, Acción La pregunta es como asterisk se entera de cual es el número que he marcado y que deberá pasar a la función dial ?
Uso de la varible ${EXTEN} Siempre que digitemos una extensión, Asterisk guardara en la variable de canal EXTEN los dígitos que hemos marcado  exten => _7XX,1,SayDigits(${EXTEN}) exten => _8XX,1,SayDigits(${EXTEN:1}) exten => _9XX,1,SayDigits(${EXTEN:-1))
Contextos para llamadas salientes [globals] GABRIEL=SIP/201 JOHY=SIP/202 PACIFICTEL=DAHDI/4 [salida-local] ignorepat => 9 exten => _92XXXXXX,1,Dial(${PACIFTEL}/${EXTEN:1},10,r) exten => _92XXXXXX,2,Congestion( ) exten => _92XXXXXX,102,Congestion( ) exten => 911,1,Dial(${PACIFICTEL}/911) exten => 9911,1,Dial(${PACIFICTEL}/911)
Contextos para llamadas salientes [globals] GABRIEL=SIP/201 JOHY=SIP/202 PACIFICTEL=Zap/4 PORTA=Zap/3 [salida-porta] ignorepat => 9 exten => _9097XXXXXX,1,Dial(${PORTA}/${EXTEN:1},10,r) exten => _9097XXXXXX,2,Congestion( ) exten => _9097XXXXXX,102,Congestion( )
Contextos para llamadas salientes include =>  context [internos] include => salida-local include => salida-porta exten => 201,1,Dial(${GABRIEL},,r) exten => 202,1,Dial(${JOHY},,r) [salida-local] ignorepat => 9 exten => _92XXXXXX,1,Dial(${PACIFTEL}/${EXTEN:1},10,r) exten => _92XXXXXX,2,Congestion( ) exten => _92XXXXXX,102,Congestion( ) exten => 911,1,Dial(${PACIFICTEL}/911) exten => 9911,1,Dial(${PACIFICTEL}/911)
Contextos para llamadas salientes include =>  context [salida-porta] ignorepat => 9 exten => _9097XXXXXX,1,Dial(${PORTA}/${EXTEN:1},10,r) exten => _9097XXXXXX,2,Congestion( ) exten => _9097XXXXXX,102,Congestion( )
IAX Trunking En el Servidor A configuramos: modificamos en el archivo  iax.conf     [general]   register => amigo:hola@<dir IP del serverB>   [serverB]   type=friend   user=amigo   secret=hola   host=<dir IP del serverB > qualify=yes trunk=yes extensions.conf    exten => _7XXX,1,Dial(IAX2/serverB/${EXTEN:1},30,r)   exten => _7XXX,2,Congestion( )
IAX Trunking En el servidor B configuramos: modificamos en  iax.conf     [serverA]   type=friend   user=amigo   secret=hola   host=direccion IP del serverA  qualify=yes trunk=yes extensions.conf  exten => _8XXX,1,Dial(IAX2/serverA/${EXTEN:1},30,r)  exten => _8XXX,2,Congestion

Mais conteúdo relacionado

Mais procurados (20)

VOIP II
VOIP IIVOIP II
VOIP II
 
Introduccion a la voip
Introduccion a la voipIntroduccion a la voip
Introduccion a la voip
 
VOIP I - Marzo 2010
VOIP I - Marzo 2010VOIP I - Marzo 2010
VOIP I - Marzo 2010
 
Centrales Telefónicas Asterisk Oscar Gonzalez, Javier Valdez
Centrales  Telefónicas  Asterisk    Oscar  Gonzalez,  Javier  ValdezCentrales  Telefónicas  Asterisk    Oscar  Gonzalez,  Javier  Valdez
Centrales Telefónicas Asterisk Oscar Gonzalez, Javier Valdez
 
Seminario final telefonia y voip wifi
Seminario final telefonia y voip wifiSeminario final telefonia y voip wifi
Seminario final telefonia y voip wifi
 
Voip
VoipVoip
Voip
 
Voip
VoipVoip
Voip
 
Introducción a Asterisk
Introducción a AsteriskIntroducción a Asterisk
Introducción a Asterisk
 
Protocolos de voip de acuerdo al modelo osi
Protocolos de voip de acuerdo al modelo osiProtocolos de voip de acuerdo al modelo osi
Protocolos de voip de acuerdo al modelo osi
 
Sccp smtp
Sccp smtpSccp smtp
Sccp smtp
 
Asterisk Telefonia IP
Asterisk Telefonia IPAsterisk Telefonia IP
Asterisk Telefonia IP
 
Vo ip con_qos[1]
Vo ip con_qos[1]Vo ip con_qos[1]
Vo ip con_qos[1]
 
Cómo funciona la voz sobre ip
Cómo funciona la voz sobre ipCómo funciona la voz sobre ip
Cómo funciona la voz sobre ip
 
Software de VOIP
Software de VOIPSoftware de VOIP
Software de VOIP
 
Telefonía IP (SIP, Diameter, RTP/RTPC)
Telefonía IP (SIP, Diameter, RTP/RTPC)Telefonía IP (SIP, Diameter, RTP/RTPC)
Telefonía IP (SIP, Diameter, RTP/RTPC)
 
Presentacion Voip
Presentacion VoipPresentacion Voip
Presentacion Voip
 
Protocolos de Telefonia IP
Protocolos de Telefonia IPProtocolos de Telefonia IP
Protocolos de Telefonia IP
 
Voz sobre ip
Voz sobre ipVoz sobre ip
Voz sobre ip
 
Telefonía VoIP
Telefonía VoIPTelefonía VoIP
Telefonía VoIP
 
Servicio VoIP
Servicio VoIPServicio VoIP
Servicio VoIP
 

Semelhante a VoIP con Asterisk Marzo 2010

Sistemas de VoIP con Asterisk
Sistemas de VoIP con AsteriskSistemas de VoIP con Asterisk
Sistemas de VoIP con AsteriskGabriel Astudillo
 
Manual asterisk oigaa
Manual asterisk oigaaManual asterisk oigaa
Manual asterisk oigaaaiep
 
Slackware asterisk
Slackware asteriskSlackware asterisk
Slackware asteriskpavel
 
Slackware asterisk
Slackware asteriskSlackware asterisk
Slackware asteriskpavel
 
Debian Lenny Asterisk
Debian Lenny AsteriskDebian Lenny Asterisk
Debian Lenny Asteriskmanzurek
 
Tutorial asterisk
Tutorial asteriskTutorial asterisk
Tutorial asteriskmanolinxxx
 
Configuración de escenarios reales con asterisk
Configuración de escenarios reales con asteriskConfiguración de escenarios reales con asterisk
Configuración de escenarios reales con asteriskDiego Llanes
 
Configuracindeescenariosrealesconasterisk 131117194346-phpapp02
Configuracindeescenariosrealesconasterisk 131117194346-phpapp02Configuracindeescenariosrealesconasterisk 131117194346-phpapp02
Configuracindeescenariosrealesconasterisk 131117194346-phpapp02leonardo miranda
 
Alta disponibilidad en Integración de Elastix con Centrales Legacy
Alta disponibilidad en Integración de Elastix con Centrales LegacyAlta disponibilidad en Integración de Elastix con Centrales Legacy
Alta disponibilidad en Integración de Elastix con Centrales LegacyPaloSanto Solutions
 
Instalacion de Asterisk y freePBX en CentOS
Instalacion de Asterisk y freePBX en CentOSInstalacion de Asterisk y freePBX en CentOS
Instalacion de Asterisk y freePBX en CentOSmanzurek
 
Manual de operación Asterisk en windows
Manual de operación Asterisk en windowsManual de operación Asterisk en windows
Manual de operación Asterisk en windowsPaulo Cortés Molina
 
Instalación de asterisk en linux mint 12
Instalación de asterisk en linux mint 12Instalación de asterisk en linux mint 12
Instalación de asterisk en linux mint 12Giovani Hernandez
 
28 el directorio sysconfig
28  el directorio sysconfig28  el directorio sysconfig
28 el directorio sysconfigAprende Viendo
 

Semelhante a VoIP con Asterisk Marzo 2010 (20)

VoIP con Asterisk 2009
VoIP con Asterisk 2009VoIP con Asterisk 2009
VoIP con Asterisk 2009
 
Sistemas de VoIP con Asterisk
Sistemas de VoIP con AsteriskSistemas de VoIP con Asterisk
Sistemas de VoIP con Asterisk
 
Manual asterisk oigaa
Manual asterisk oigaaManual asterisk oigaa
Manual asterisk oigaa
 
Slackware asterisk
Slackware asteriskSlackware asterisk
Slackware asterisk
 
Slackware asterisk
Slackware asteriskSlackware asterisk
Slackware asterisk
 
Debian Lenny Asterisk
Debian Lenny AsteriskDebian Lenny Asterisk
Debian Lenny Asterisk
 
CLASE 10 ASTERISK.pdf
CLASE 10 ASTERISK.pdfCLASE 10 ASTERISK.pdf
CLASE 10 ASTERISK.pdf
 
Tutorial asterisk
Tutorial asteriskTutorial asterisk
Tutorial asterisk
 
Asterisk seminario web
Asterisk seminario webAsterisk seminario web
Asterisk seminario web
 
Configuración de escenarios reales con asterisk
Configuración de escenarios reales con asteriskConfiguración de escenarios reales con asterisk
Configuración de escenarios reales con asterisk
 
Configuracindeescenariosrealesconasterisk 131117194346-phpapp02
Configuracindeescenariosrealesconasterisk 131117194346-phpapp02Configuracindeescenariosrealesconasterisk 131117194346-phpapp02
Configuracindeescenariosrealesconasterisk 131117194346-phpapp02
 
Conferencia universidad 2010
Conferencia universidad 2010Conferencia universidad 2010
Conferencia universidad 2010
 
Alta disponibilidad en Integración de Elastix con Centrales Legacy
Alta disponibilidad en Integración de Elastix con Centrales LegacyAlta disponibilidad en Integración de Elastix con Centrales Legacy
Alta disponibilidad en Integración de Elastix con Centrales Legacy
 
Instalacion de Asterisk y freePBX en CentOS
Instalacion de Asterisk y freePBX en CentOSInstalacion de Asterisk y freePBX en CentOS
Instalacion de Asterisk y freePBX en CentOS
 
Manual de operación Asterisk en windows
Manual de operación Asterisk en windowsManual de operación Asterisk en windows
Manual de operación Asterisk en windows
 
Instalación de asterisk en linux mint 12
Instalación de asterisk en linux mint 12Instalación de asterisk en linux mint 12
Instalación de asterisk en linux mint 12
 
Snort 2006
Snort 2006Snort 2006
Snort 2006
 
Planes de llamada
Planes de llamadaPlanes de llamada
Planes de llamada
 
04.trixbox
04.trixbox04.trixbox
04.trixbox
 
28 el directorio sysconfig
28  el directorio sysconfig28  el directorio sysconfig
28 el directorio sysconfig
 

Último

KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 

Último (16)

KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 

VoIP con Asterisk Marzo 2010

  • 1. Sistemas de VoIP con Asterisk: Modulo I Marzo 2010 Ing. Gabriel Astudillo
  • 2.
  • 3.
  • 4. Preparando un Sistema para Asterisk Selección de Hardware para el Servidor
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26. Configuración de un canal SIP [general] context=default srvlookup=yes [201] type=friend secret=201 qualify=yes ; Qualify peer is no more than 2000 ms away nat=no ; este usuario no esta a travez de nat host=dynamic ; este usuario se registrara con nosotros canreinvite=no ; por defecto asterisk intentara hacer el reenvio context=internas ; el contexto internas controla el comportamiento de este canal
  • 27.
  • 28.
  • 29.
  • 31. Configuración de un canal IAX     En /etc/asterisk/iax.conf debemos tener: [general] jitterbuffer=yes bindport=4569 calltokenoptional = 0.0.0.0/0.0.0.0 requirecalltoken = auto maxcallnumbers = 512 ; http://tinyurl.com/iax2seg [X06] callerid=mi nombre secret=123 type=friend host=dynamic context=internal disallow=all allow=gsm CLI>originate IAX2/X06 application echo
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39. Variables Globales Como su nombre lo indica son variables que se aplican a todos las extensiones y en todos los contextos. Pueden ser definidas de 2 formas: [globals] GABRIEL=SIP/201 [internal] exten => 123,1,SetGlobalVar(JOHN=SIP/john) )
  • 40. Variables de Canal Son variables que están asociadas únicamente a una llamada en particular. A diferencia de las variables globales solo se definen durante la duración de la llamada y en el canal activo únicamente exten => 123,1,Set(CONTADOR=4) exten => 123,2,Playback(digits/${CONTADOR}) Un claro ejemplo de una variable de canal es el callerid
  • 41. Uso de la aplicacion Dial Dial(tech/user, timeout, opcion) El primer parametro es el destino al cual queremos llamar conformado por la tecnologia (SIP,DAHDI,IAX) un slash (/) y la fuente remota(tipicamente un numero o un usuario) exten => 123,1,Dial(DAHDI/1) exten => 123,1,Dial(SIP/201) exten => 123,1,Dial(DAHDI/1&DAHDI/2)
  • 42. Uso de la aplicacion Dial Dial(tech/user, timeout, opcion) El segundo parametro es el timeout especificado en segundos y es el tiempo que asterisk intentara establecer una conexion con el canal definido. exten => 101,1,Dial(SIP/gabriel,10) exten => 101,1,Dial(SIP/101,10) Si el canal es contestado antes del timeout asterisk puentea ambos canales para permitir la comunicacion
  • 43. Uso de la aplicacion Dial Dial(tech/user, timeout, opcion) Si el canal destino no contesta, vencido el timeout, asterisk pasa a la siguiente prioridad Si el canal destino se encuentra ocupado, asterisk pasa a la extension n+101, (si existe) exten => 123,1,Dial(SIP/201,10) exten => 123,2,Playback(vm-nobodyavail) exten => 123,3,Hangup( ) exten => 123,102,Playback(tt-allbusy) exten => 123,103,Hangup( )
  • 44. Uso de la aplicacion Dial( ) Dial(tech/user, timeout, opcion) El tercer argumento en un carácter de opción, puede contener mas de uno y su función es modificar el comportamiento de la función Dial ( ) la opción mas popular es ( r ). La letra r hará que el llamante escuche un tono de timbrado mientras el canal de destino es notificado de una llamada entrante. Nótese que cualquiera de estos argumentos puede ser dejado en blanco. Por ejemplo si queremos especificar una opción pero no un timeout, simplemente dejamos el argumento en blanco así: exten => 123,1,Dial(SIP/101, ,r)
  • 45.
  • 46. Ejemplo Completo [general] autofallthrough=yes clearglobalvars=no [globals] GABRIEL=SIP/201 JOHN=SIP/202 [internas] exten => 201,1,Dial(SIP/201,10,r) exten => 201,2,Playback(vm-nobodyavail) exten => 201,3,Hangup( ) exten => 201,102,Playback(tt-allbusy) exten => 201,103,Hangup( ) exten => 202,1,Dial(SIP/202,10,r) exten => 202,2,Playback(vm-nobodyavail) exten => 202,3,Hangup( ) exten => 202,102,Playback(tt-allbusy) exten => 202,103,Hangup( )
  • 47. Agregando Variables al dial plan [internas] exten => 201,1,Dial(${GABRIEL},10,r) exten => 201,2,Playback(vm-nobodyavail) exten => 201,3,Hangup( ) exten => 201,102,Playback(tt-allbusy) exten => 201,103,Hangup( ) exten => 202,1,Dial(${JOHN},10,r) exten => 202,2,Playback(vm-nobodyavail) exten => 202,3,Hangup( ) exten => 202,102,Playback(tt-allbusy) exten => 202,103,Hangup( )
  • 48. Grabación de audio con Record() Record( filename.format, silence, maxduration, options) Dentro de [internas] : exten => 282,1,Record(intro%d.gsm) exten => 282,2,Playback($ { RECORDED_FILE } ) exten => 282,3,Hangup() http://tinyurl.com/asteriskREC “ Usted se ha comunicado con la compañía ABC, si conoce el numero de la extensión digítelo ahora, caso contrario presione 1 para comunicarse con ventas, 2 para soporte técnico, 3 para contabilidad; o manténgase en la línea que una operadora le atenderá”
  • 49. Voicemail Es una de las características mas populares de los sistemas de telefonía actual. En este sentido Asterisk es muy flexible por: (/etc/asterisk/voicemail.conf) • Voicemail ilimitados con protección de password y con carpetas para organizar los voicemail. • Saludos diferentes para estados “ocupado” y “no disponible” • Saludos por defecto y personalizados • Habilidad para relacionar un teléfono con mas de un voicemail y voicemalis con mas de un usuario • Notificación al correo electrónico de la llegada de un voicemail y posibilidad de adjuntar el archivo de audio • Voicemail forwarding y broadcasts • Creacion de Directorio de la empresa basado en la informacion de los voicemail
  • 50. Voicemail Las configuraciones para el voicemail se hacen en el archivo /etc/asterisk/voicemail.conf mailbox => password, name, email, pager_email, options options Este campo permite ingresar opciones que se sobreponen a las configuraciones globales del mailbox Se escriben de la forma option=value separados por el carácter pipe (|). [default] 201 => 201,Gabriel Astudillo, gastudillo@gmail.com, 84519925@im.movistar.com.ec, tz=central|attach=yes
  • 51. Voicemail En extensions.conf: ;Dentro de [internas] exten => 201,1,Dial(SIP/201,10,r) exten => 201,2,VoiceMail(201@default,u) exten = > 201,3,Hangup() exten => 201,102,VoiceMail(201@default,b) exten = > 201,103,Hangup() ;Acceso al voicemail: exten => 500,1,VoiceMailMain( )
  • 52. Directorio Telefónico Directory( ) necesita de 3 argumentos: el contexto del voicemail desde donde se leerán los nombres, el contexto del dialplan (extensions.conf) donde se puede ubicar al usuario y un carácter de opción. Por defecto Directory() busca en el directorio por el apellido , pero si le pasamos la opción f, buscará por nombres. Por ejemplo: exten => 8,1,Directory(default,internal,f) exten => 9,1,Directory(default,internal ) Si el llamante presiona 8 obtendrá un directorio ordenado por nombres y si presiona 9 el llamante obtendrá un directorio ordenado por apellidos
  • 53.
  • 54.
  • 55. Expresiones y Manejo de Variables Expresiones Se definen como un conjunto de variables, operadores y valores que se colocan juntas para obtener un resultado. $[expresion] Ejemplos: $[${CONT} + 1] $[${CONT} / 2] Cuando Asterisk encuentra una expresión, reemplaza toda la expresión por el valor resultante. Es importante notar que antes de hacer esto primero evalúa el valor de las variables
  • 56.
  • 57. Expresiones y Manejo de Variables Operadores Boleanos Evalúan la verdad de una sentencia or expr1 | expr2 and expr1 & expr2 Comparación expr1 {=, >, >=, <, <=, !=} expr2 Matemáticos: expr1 {+, -} expr2 expr1 {*, /, %} expr2
  • 58.
  • 59.
  • 60. Ramificación Condicional Aplicación GotoIf() exten => 345,1,Set(TEST=1) exten => 345,2,GotoIf($[{$TEST} = 1]?10:20) exten => 345,10,Playback(weasels-eaten-phonesys) exten => 345,20,Playback(office-iguanas)
  • 61. Ramificación Condicional Aplicación GotoIf() exten => 123,1,Set(COUNT=10) exten => 123,2,GotoIf($[${COUNT} > 0]? 3 :10) exten => 123,3,SayNumber(${COUNT}) exten => 123,4,Set(COUNT=$[${COUNT} - 1]) exten => 123,5,Goto(2) exten => 123,10,Hangup( ) El caso de la Ex-enamorada exten => 202,1,GotoIf($[${CALLERID(num)} = 201]?20:10) exten => 202,10,Dial(SIP/201,10,r) exten => 202,20,Playback(abandon-all-hope) exten => 202,21,Hangup( )
  • 62. Ramificación Condicional basada en fechas Aplicación GotoIfTime() Similar a GotoIf() pero se diferencian en que GotoIfTime() toma la decisión de pasarle el control basado en la consulta al reloj del sistema ) GotoIfTime( times,days_of_week,days_of_month,months?label) times : rangos de horas del día en formato 24h, el día comienza a las 00:00 y termina a las 23:59. Ej: 09:00-17:59 days_of_week: días de la semana mon, tus, thu… Ej: mon-fri days_of_month: 7-12 (del 7 al 12) o 15,30 (15 y 30) months: jan, feb, mar, apr… Para hacer coincidir todos los valores hay que poner un * en el lugar del parametro.
  • 63.
  • 64. Ramificación Condicional basada en fechas Aplicación GotoIfTime() GotoIfTime( times,days_of_week,days_of_month,months?label) [incoming] ; Si es cualquier hora del dia, en cualquier dia de la semana, ; durante el noveno dia del mes de octubre nuestra empresa esta ;cerrada exten => s,1,GotoIfTime(*,*,10,oct?cerrado,s,1) ; durante las horas de trabajo envie las llamadas al contexto ;abierto exten => s,2,GotoIfTime(09:00-17:59|mon-fri|*|*?abierto,s,1) exten => s,3,GotoIfTime(09:00-11:59|sat|*|*?abierto,s,1) ; en cualquier otro caso estamos cerrados exten => s,4,Goto(cerrado,s,1)
  • 65. Macros Las Macros son construcciones muy útiles, diseñadas para evitar repeticiones en el plan de marcado. También permiten hacer cambios a grandes grupos de extensiones en una manera, rápida, ágil y ordenada. Recordemos: exten => 201,1,Dial(SIP/201,10,r) exten => 201,2,VoiceMail(201@default,u) exten => 201,3,Hangup() exten => 201,102,VoiceMail(201@default,b) exten => 201,103,Hangup() Imaginen tener que hacer esto para una organización de 100 usuarios !!!!! O tener que agregar una nueva caracteristica a todos los usuarios
  • 66. Como definir una Macro La definición de una macro es similar a la de un contexto (de hecho es un contexto “limitado&quot;) [macro-extensiones] exten => s,1,Dial(SIP/201,10,r) exten => s,2,VoiceMail(201@default,u) exten => s,3,Hangup() exten => s,102,VoiceMail(201@default,b) exten => s,103,Hangup() Noten que esta definición aun no es practica pues solo define al usuario GABRIEL y nos direccionaría a todos los usuario a su voicemail En la definición de una macro siempre debemos utilizar la extensión especial s
  • 67. Como llamar a una Macro Macro(nombre,arg1,arg2...) [internos] exten => 201,1,Macro(extensiones, arg1, arg2 ) Al momento de llamar a la función Macro se definen al menos 4 variables de canal que nos van a permitir generalizar su uso: ${MACRO_CONTEXT} ${MACRO_EXTEN} ${MACRO_PRIORITY} ${ARG n}
  • 68. Como llamar a una Macro [macro-extensiones] exten => s,1,Dial(SIP/201,10,r) exten => s,2,VoiceMail(${MACRO_EXTEN}@default, u) exten => s,3,Hangup() exten => s,102,VoiceMail(${MACRO_EXTEN}@default, b) exten => s,103,Hangup() [internos] exten => 201,1,Macro(extensiones,arg1) Noten que ahora ya podemos pasar al voicemail de cada una de las extensiones, pero aun esta fijo el canal con el cual se establecerá la comunicación. Alguna idea ?
  • 69. Aplicando la macro al dialplan [macro-extensiones] exten => s,1,Dial(${ARG1},10,r) exten => s,2,VoiceMail(${MACRO_EXTEN}@default, u) exten => s,3,Hangup() exten => s,102,VoiceMail(${MACRO_EXTEN}@default, b) exten => s,103,Hangup() [internos] exten => 201,1,Macro(extensiones, SIP/201) exten => 202,1,Macro(extensiones,${JOSE}) exten => 203,1,Macro(extensiones, SIP/203)
  • 70.
  • 71.
  • 72. TDM410P PCI 2.2 Fuente de Voltaje FXO Ports FXS Ports Entradas RJ-11
  • 73.
  • 74.
  • 75.
  • 76.
  • 77. Configuración de un canal FXO Configuración del hardware en /etc/asterisk/chan_dahdi.conf [channels] ; canales físicos: ; opciones por defecto para todos los canales usecallerid=yes hidecallerid=no callwaiting=no threewaycalling=yes transfer=yes echocancel=yes echotraining=yes  ; definicion de canales: context=entrantes ; llamadas entrantes se dirigen a [entrantes] en extensions.conf signalling=fxs_ks ; Use señalizacion FXS para un canal FXO channel => 4 ; PSTN se conecta al puerto 4
  • 78.
  • 79.
  • 80.
  • 81.
  • 82. Configuración de un canal FXO CONFIGURACION DEL DIALPLAN [entrantes] ;las llamadas que provienen del puerto FXO son ;direccionadas a este contexto desde chan_dahdi.conf exten => s,1,Answer() exten => s,2,Echo() Lab: Probar que al llamar al 2269261 contesta la PBX y se reproduce tu propia voz
  • 83.
  • 84.
  • 85.
  • 86.
  • 87.
  • 88.
  • 89. Agregando lógica al Dialplan [entrantes] exten => s,1,Answer( ) exten => s,2,Background(intro1) exten => s,3,WaitExten() exten => 1,1,Playback(digits/1) exten => 1,2,Goto(entrantes,s,1) exten => 2,1,Playback(digits/2) exten => 2,2,Goto(entrantes,s,1)
  • 90.
  • 91. Validando entradas y tiempos de espera [entrantes] exten => s,1,Answer( ) exten => s,2,Background(intro04) exten => 1,1,Playback(digits/1) exten => 1,2,Goto(entrantes,s,1) exten => 2,1,Playback(digits/2) exten => 2,2,Goto(entrantes,s,1) exten => i,1,Playback(pbx-invalid) exten => i,2,Goto(entrantes,s,1) exten => t,1,Playback(vm-goodbye) exten => t,2,Hangup( )
  • 92. Vision de los Contextos
  • 93. Contexto [incoming] [incoming] exten => s,1,Answer( ) exten => s,2,Background(enter-ext-of-person) exten => s,3,WaitExten() exten => 201,1,Dial(SIP/201,10,r) exten => 201,2,VoiceMail(201@default,u) exten => 201,3,Hangup() exten => 201,102,VoiceMail(201@default,b) exten => 201,103,Hangup() exten => 202,1,Dial(SIP/201,10,r) exten => 202,2,VoiceMail(202@default,u) exten => 202,3,Hangup() exten => 202,102,VoiceMail(202@default,b) exten => 202,103,Hangup() exten => i,1,Playback(pbx-invalid) exten => i,2,Goto(incoming,s,1) exten => t,1,Playback(vm-goodbye) exten => t,2,Hangup( )
  • 94.
  • 95.
  • 96. Coincidencia de Patrones Sintaxis Si un usuario digita una extensión de 3 digitos desde el 200 hasta el 999 escuchara el audio auth-thankyou exten => _555XXXX,1,Playback(digits/1) exten => _55512XX,1,Playback(digits/2) Pacifictel: exten => _2XXXXXX,1, Acción Nacional: exten => _0NXXXXXXX,1, Acción Movistar: exten => _08[45]XXXXXX,1,Accion
  • 97. Coincidencia de Patrones Sintaxis Porta: exten => _09[732]XXXXXX,1, Acción exten => _08[567]XXXXXX,1, Acción Internacional: exten => _00. ,1, Acción La pregunta es como asterisk se entera de cual es el número que he marcado y que deberá pasar a la función dial ?
  • 98. Uso de la varible ${EXTEN} Siempre que digitemos una extensión, Asterisk guardara en la variable de canal EXTEN los dígitos que hemos marcado exten => _7XX,1,SayDigits(${EXTEN}) exten => _8XX,1,SayDigits(${EXTEN:1}) exten => _9XX,1,SayDigits(${EXTEN:-1))
  • 99. Contextos para llamadas salientes [globals] GABRIEL=SIP/201 JOHY=SIP/202 PACIFICTEL=DAHDI/4 [salida-local] ignorepat => 9 exten => _92XXXXXX,1,Dial(${PACIFTEL}/${EXTEN:1},10,r) exten => _92XXXXXX,2,Congestion( ) exten => _92XXXXXX,102,Congestion( ) exten => 911,1,Dial(${PACIFICTEL}/911) exten => 9911,1,Dial(${PACIFICTEL}/911)
  • 100. Contextos para llamadas salientes [globals] GABRIEL=SIP/201 JOHY=SIP/202 PACIFICTEL=Zap/4 PORTA=Zap/3 [salida-porta] ignorepat => 9 exten => _9097XXXXXX,1,Dial(${PORTA}/${EXTEN:1},10,r) exten => _9097XXXXXX,2,Congestion( ) exten => _9097XXXXXX,102,Congestion( )
  • 101. Contextos para llamadas salientes include => context [internos] include => salida-local include => salida-porta exten => 201,1,Dial(${GABRIEL},,r) exten => 202,1,Dial(${JOHY},,r) [salida-local] ignorepat => 9 exten => _92XXXXXX,1,Dial(${PACIFTEL}/${EXTEN:1},10,r) exten => _92XXXXXX,2,Congestion( ) exten => _92XXXXXX,102,Congestion( ) exten => 911,1,Dial(${PACIFICTEL}/911) exten => 9911,1,Dial(${PACIFICTEL}/911)
  • 102. Contextos para llamadas salientes include => context [salida-porta] ignorepat => 9 exten => _9097XXXXXX,1,Dial(${PORTA}/${EXTEN:1},10,r) exten => _9097XXXXXX,2,Congestion( ) exten => _9097XXXXXX,102,Congestion( )
  • 103. IAX Trunking En el Servidor A configuramos: modificamos en el archivo iax.conf   [general]  register => amigo:hola@<dir IP del serverB>  [serverB]  type=friend  user=amigo  secret=hola  host=<dir IP del serverB > qualify=yes trunk=yes extensions.conf  exten => _7XXX,1,Dial(IAX2/serverB/${EXTEN:1},30,r)  exten => _7XXX,2,Congestion( )
  • 104. IAX Trunking En el servidor B configuramos: modificamos en iax.conf   [serverA]  type=friend  user=amigo  secret=hola  host=direccion IP del serverA qualify=yes trunk=yes extensions.conf exten => _8XXX,1,Dial(IAX2/serverA/${EXTEN:1},30,r) exten => _8XXX,2,Congestion