No disturbar en Asterisk 1.6.X - Do not disturb -

Puede ser que en algún momento de nuestro día laboral no queremos ser molestados por las llamadas telefónicas.  Al mismo tiempo, pero, queremos que quienes nos llaman tengan las posibilidad de dejarnos un mensaje en nuestro contestador. Para hacer todo eso podemos crear una macro en Asterisk que haga ese “trabajo sucio” :)

Seguimos:

abrimos el archivo

nano /etc/asterisk/extensions.conf

y pegamos estas líneas

[macro-DND]
exten => s,1,GotoIf(${DB_EXISTS(DND/${CALLERID(num)})}?disable-dnd,1)
exten => s,n,Set(DB(DND/${CALLERID(num)})=1)
exten => s,n,playback(do-not-disturb)
exten => s,n,playback(activated)
exten => s,n,hangup
exten => disable-dnd,1,Set(DEL=${DB_DELETE(DND/${CALLERID(num)})})
exten => disable-dnd,n,playback(do-not-disturb)
exten => disable-dnd,n,playback(de-activated)
exten => disable-dnd,n,hangup

En la primera línea controlamos si en la base de datos de Asterisk existe un valor asociado a la familia DND y nuestro numero de extensión (CALLERID). Si no existe lo creamos con la línea 2 y le asignamos el valor 1. Luego usamos las voces de asterisk para anunciar que “No disturbar” ha sido activado.

En el caso que el registro ya existe en la base de datos, el Gotoif nos llevará a la extensión disable-dnd, prioridad 1 donde borraremos el registro y anunciaremos que el “No disturbar” ha sido desactivado.

En el mismo archivo dentro del contexto local insertamos dos líneas más

[local]

exten => 99,1,Macro(DND)
exten => 99,n,Hangup

La primare envía el llamante a la macro con nombre DND (la que acabamos de explicar más arriba). De esta forma podemos activar y desactivar el “No disturbar”  llamando la extensión numero 99. Si el “No disturbar” está activado se desactivará de lo contrario se activará.

Ahora tenemos que decirle a Asterisk que para todas las llamadas entrantes haga este tipo de control.

Siempre en nuestro contexto local añadimos las siguientes líneas

 

[local]
exten => _2XXX,1,GotoIf(${DB_EXISTS(DND/${EXTEN})}?DND-ON)
exten => _2XXX,n,Dial(SIP/${EXTEN},20,t) ; DND is OFF, start dialing
exten => _2XXX,n,GotoIf($["${DIALSTATUS}" = "BUSY"]?busy:unavail)
exten => _2XXX,n(busy),Voicemail(${EXTEN}@default,b)
exten => _2XXX,n,hangup
exten => _2XXX,n(unavail),Voicemail(${EXTEN}@default,u)
exten => _2XXX,n,hangup
exten => _2XXX,n(DND-ON),Goto(2100,6)
exten => h,1,Hangup

 

Si el registro existe en la base de datos de asterisk (línea 1) la llamada será enviada a la extensión con etiqueta DND-ON, y de ahí a la extensión _2XXX prioridad 6. Esto significa que la llamada será transferida al contestador y al llamante será anunciado que la persona en la extensión XXXX no se encuentra disponible.

Si el registro no existe se procesará la línea dos y se llamará la extensión marcada. Luego según esté ocupada o en otra condición, la llamada se enviará a la correspondiente parte del plan de llamadas.

Actualizamos Asterisk

asterisk -vrrrrrrrrrrrr

CLI> dialplan reload

Más Información: DB_EXISTS DB_DELETE

Via: Bart’s Blog

 

Etiquetas de Technorati: ,,

Vota el Articulo: 

Sin votos (todavía)
Evalúa la calidad del articulo
Suscribirse a Comentarios de "No disturbar en Asterisk 1.6.X - Do not disturb -" Suscribirse a VozToVoice - Todos los comentarios