miércoles, 15 de febrero de 2012

Restricción de llamadas por horario.


En este documento detallaremos los pasos necesarios para configurar la restricción de llamadas por horario. En este ejemplo veremos como restringir que el interno 2001 solo pueda llamar en el horario de 11:30 a 18:00 horas.
En el archivo/etc/asterisk/extensions.conf agregamos las siguientes líneas
Creamos el contexto restringidos

 

[horario1]

exten => _2xxx,1,GotoIfTime(11:30-18:00|mon-fri|*|*?permitido,${EXTEN},1)
exten => _2xxx,2,GotoIfTime(18:01-11:29|mon-fri|*|*?prohibido,${EXTEN},1)

[permitido]

exten => _2XXX,1,Answer() ; contestamos la llamada
exten => _2XXX,n,DIAL(SIP/${EXTEN},60) ;
exten => _2XXX,n,Hangup() ; terminamos la llamada

[prohibido]
exten => _2XXX,1,Answer() ; contestamos la llamada
exten => _2XXX,n,Playback(nodisponible)
exten => _2XXX,n,Hangup() ; terminamos la llamada


Esta línea nos dice que la llamada que se haga al interno 2xxx si está dentro del horario de 11:30 a 18:00 hs entrara al contexto “permitido” a la extensión solicitada en la prioridad 1

exten => _2xxx,1,GotoIfTime(11:30-18:00|mon-fri|*|*?permitido,${EXTEN},1)


En el archivo /etc/asterisk/sip.conf agregamos en el contexto 2001 que es el interno que queremos restringirle las llamadas por horario, la línea context=horario1 que es a donde le decimos a que contexto  pertenece este interno.
[2001]
type=friend
callerid=Ventas <2001>
host=dynamic
context=horario1
secret=9876
;disallow=all
allow=alaw
allow=ulaw
mailbox=2001@default


Diagrama de funcionamiento de restricción de llamada por horario






Cómo funciona la restricción de llamada por horario.
En este ejemplo mostramos como una llamada desde el interno 2001 puede llamar cualquier interno en el horario de 11:30 a 18:00 hs. Cuando el usuario del interno 2001 quiera llamar a otro interno  fuera del horario permitido, se escuchara un mensaje diciendo que ese interno no está disponible.

Conferencias en Asterisk


La aplicación que vamos a utilizar para realizar las conferencias es el meetme, siendo su principal funcionalidad la de crear salas de conferencias (rooms conference)
Para usar la aplicación meetme debemos tener instalado y funcionando asterisk y dahdi, con los usuarios registrados en iax.conf o sip.conf según el protocolo que estemos utilizando.
Configuración:
Para crear la conference room debemos configurar el archivo meetme.conf
Algunos parámetros de configuración son

[general]
audiobuffers=32
schedule=yes
logmembercount=yes
fuzzystart=300
earlyalert=3600
endalert=120

[rooms]
conf => 4000


[general] ; es una configuración general para todas las conferencias
audiobuffers=32 ; indica el número o de paquetes audio (de 20ms) que se van a almacenar en el buffer de memoria cuando pertenezcan a canales que no son DADHI. Permite sincronizar el audio de los distintos participantes y evitar retrasos. Su valor puede estar entre 2 y 32
schedule=yes ; con este parámetro le indicamos a asterisk que las conferencias pueden ser programadas
logmembercount=yes ; este parámetro sirve para actualizar el realtime cada vez que un usuario entra/sale de una conferencia.
fuzzystart=120 ; Este parámetro define si un usuario puede o no entrar a la conferencia si esta no ha empezado. Su valor esta dado en segundos, en este caso 120 segundos, o sea que puede entrar a la conferencias solo si faltan dos minutos para el inicio de la misma.
earlyalert=3600 ; este parámetro esta expresado en segundos. Indica cuando la conferencia esta anunciada: Por ej si pongo este tiempo en 30 min, si el usuario entrara 30 min antes de que empiece la conferencia se anunciará que no existe, si entra cuando falte menos de 30 minutos recibirá un anuncio que la misma aun no a comenzado.
endalert=60 ; cuando falten 60 segundos para terminar la conferencia programada, se le anunciará a todos los participantes.



Desde la etiqueta rooms comienza la conferencia propiamente dicha

conf => 4000 ; indica el número del conference room, en este caso 4000
conf => 4000,1234,9876  ; 4000 es el número de conference room, 1234 el PIN y el 9876 el PIN para los administradores.

Finalmente configuramos el dialplan para la conferencia en el extensions.conf

[conferencia]
exten => 4000,1,Goto(conf,1)
exten => conf,1,Set(MEETME_RECORDINGFILE=/tmp/Tutorial-${TIMESTAMP})
exten => conf,2,Meetme(4000,sr)
exten => conf,3,Hangup()

Para ver los usuarios que están conectado a una conferencia.
Entrar al CLI de asterisk ejecutando asterisk –r

sedeA*CLI> meetme list 4000
User #: 01    4001 device   Channel: SIP/4001-00000000  (unmonitored) 00:00:13
User #: 02    4002 device   Channel: SIP/4002-00000001  (unmonitored) 00:00:04
2 users in that conference.


En este ejemplo se observa que hay dos usuarios conectados a la room conference 4000, que son los internos 4001 y 4002