Configuración de Asterisk - Octava parte - FollowMe.conf

Hace mucho que no escribía. Parece que el tiempo que antes me sobraba ahora me hace falta. De todas formas hoy he decidido seguir con la configuración de asterisk y explicar la configuración del archivo followme.conf. Este archivo nos permite hacer una cosa muy sencilla: definir una serie de números (extensiones, fijos o celulares) donde desviar la llamada si a la extensión predefinida nadie contesta o si ha sido activada esta opción. Claramente si el desvío es hacia otras extensiones internas no tendrá ningún costo, si lo hacemos hacia números fijos y/o celulares para hacer la llamada tendremos que utilizar proveedores VoIP y pagar la relativa tarifa.

Como ya hemos visto para el desvío de llamada sencillo, podremos activar y desactivar la aplicación según nuestras necesidades.

Primero miramos el archivo de configuración:

nano /etc/asterisk/followme.conf

El archivo empieza con una parte general que es igual para todas las extensiones configuradas. Luego, si queremos, podemos personalizar la configuración para cada extensión.

[general]
featuredigittimeout=>5000
; numero de milisegundos que tienes el llamado para aceptar o rechazar la llamada
takecall=>1 ; para aceptar la llamada, el llamado, después de descolgar, tendrá que hundir la tecla 1 del teléfono

declinecall=>2 ; para rechazarla la tecla 2
call-from-prompt=>followme/call-from ; este es la voz predefinida que escuchará el llamado anunciándole quien lo está llamando
norecording-prompt=>followme/no-recording ; la voz predefinida si el llamante no ha registrado el propio nombre o si la opción para registrarlo no ha sido acticvada
options-prompt=>followme/options; esta voz anunciará al llamado que tendrá digitar 1 para aceptar la llamada y dos para rechazarla
pls-hold-prompt=>followme/pls-hold-while-try ; El llamante escuchará esta voz que le dirá que espere en línea mientras se intentará localizar el llamado
status-prompt=>followme/status ; Esta voz anunciará al llamante que la persona llamada no se encuentra al momento en su oficina/casa/etc.
sorry-prompt=>followme/sorry ; si al final de todos los desvíos nadie contestará la llamada, esta voz anunciará al llamante que no se ha podido localizar la persona buscada

Ahora empieza la configuración especifica de cada extensión que queremos incluir en este archivo. En este ejemplo definiremos a cuales números llamaremos si la extensión 1000 no contesta

[1000] ; numero de la extensión que queremos configurar

musicclass=>default ; tipo de música en espera que escuchará el llamante mientras se intentará localizar el destinatario de la llamada
context=>default ; el contexto que usará la aplicación followme para localizar el llamado. Si hemos incluidos (como veremos más abajo) números fijos y celulares este contexto tiene que tener acceso a las llamadas externas.

number=>1100,15 ; Aquí empieza la lista de números que se intentará llamar para localizar el destinatario de la llamada. En este ejemplo si el destinatario no contesta a la extensión 1000 llamaremos como segunda opción la extensión 1100 por 15 segundos.

number=> 0057510000000,15; si a la extensión 1100 nadie contesta intentaremos llamar el numero fijo que aparece en esta línea por otros 15 segundos

number=> 0057310000000,15; si al numero fijo tampoco contestan intentaremos llamar al celular 

takecall=>1 ; ahora siguen los mismo parámetros que hemos visto en la parte general. Si queremos podemos personalizarlos para cada extensión
declinecall=>2
call-from-prompt=>followme/call-from
followme-norecording-prompt=>followme/no-recording
followme-options-prompt=>followme/options
followme-pls-hold-prompt=>followme/pls-hold-while-try
followme-status-prompt=>followme/status
followme-sorry-prompt=>followme/sorry

Una vez terminada la configuración para la extensión 1000 podemos seguir con otra y así siguiendo.

[1001]

…….

Guardamos los cambios y recargamos la configuración de asterisk:

/etc/init.d/asterisk reload

Echamos una mirada a la sinopsis de la aplicación followme. Entramos en la consola:

asterisk –rvvvvvvvvvvvvvvvvvvvvv

y escribimos este comando:

CLI> core show application followme

  -= Info about application 'FollowMe' =-

[Synopsis]
Find-Me/Follow-Me application

[Description]
  FollowMe(followmeid[,options]):
This application performs Find-Me/Follow-Me functionality for the caller
as defined in the profile matching the <followmeid> parameter in
followme.conf. If the specified <followmeid> profile doesn't exist in
followme.conf, execution will be returned to the dialplan and call
execution will continue at the next priority.

  Options:
    s    - Playback the incoming status message prior to starting the follow-me step(s)
    a    - Record the caller's name so it can be announced to the callee on each step
    n    - Playback the unreachable status message if we've run out of steps to reach the
           or the callee has elected not to be reachable.
Returns -1 on hangup

El uso de la aplicación es muy sencillo. En nuestro dialplan bajo el contexto local escribiremos:

[local]

exten => 1000,1, Followme(1000,san)

exten => 1000,n,Hangup

Con la primera línea le decimos a asterisk que si alguien llama la extensión 1000 tendrá que mirar en el archivo followme.conf y empezar a llamar todos los números configurados para la extensión 1000 para localizar el destinatario de la llamada.

las tres opciones indicadas después de la coma significan:

  • s – se anunciará al llamante el estado de la extensión 1000 antes de empezar los distintos pasos configurados en el archivo followme.conf
  • a – el llamante podrá grabar su propio nombre para que sea anunciado al llamado cuando conteste y de esta forma tenga la posibilidad de decidir si quiere o no aceptar la llamada
  • n – si una vez que se hayan llamados todos los números no se logre localizar la persona buscada el llamante escuchará una voz que le dirá que no ha sido posible localizar el destinatario de la llamada.

Como podemos hacer para que estas dos líneas vengan ejecutadas solamente si el “dueño” de la extensión 1000 quiere activarla?

Podemos usar una pequeña macro que permita al usuario decidir cuando activar el followme. En nuestro dialplan, siempre en el contexto local ponemos:

exten => 101,1,Answer
exten => 101,n,Set(DB(${CALLERID(num)}/FOLLOWME)=1)
exten => 101,n,Hangup

Con estas tres líneas, usando la base de datos internas de Asterisk asociamos a la variable ${EXTEN}/FOLLOWME) el valor uno. En el caso de la extensión 1000 seria:

1000/FOLLOWME=1 Luego cada vez que llamamos la extensión 1000 controlamos si esta variable tiene asociado el valor uno (es decir el followme activado)

exten => _1XXX,1,Set(FM=${DB(${EXTEN}/FOLLOWME)})
exten => _1XXX,n,NoOp(${FM})
exten => _1XXX,n,GotoIf($["${FM}" = "1"]?followme:normal)
exten => _1XXX,n(followme),Followme(${EXTEN},san)
exten => _1XXX,n,Hangup
exten => _1XXX,n(normal),Dial(SIP/1000,45)
exten => _1XXX,n,Hangup

De esta forma si el FollowME está activado al llamar la extensión 1000 (o cualquiera configurada en el followme) se ejecutará la línea 4, sino la línea 6

Para desactivar el followme la extensión 1000 tendrá que llamar (por ejemplo) la extensión 102

exten => 102,1,Answer
exten => 102,n,Set(DB(
${CALLERID(num)}/FOLLOWME)=0)
exten => 102,n,Hangup

Este es solamente un ejemplo. Hay distintas formas de configurar el followme. Podemos activarlo si llamando una extensión esta no contesta dentro del tiempo indicado con la aplicación dial.

Comentarios

No me funciona el FollowMe

Hola nuevamente....
Estoy probando el followme y aparentemente funciona todo, pero nunca llega a timbrar a ningún number que he configurado.
Presumo que el problema esta en lo siguiente:

Aquí un ejemplo:
Cuando yo disco directamente a un celular en el CLI me sale esto:
-- Executing [959990888@internos:1] Dial("SIP/1008-b6512fd8", "SIP/8959990888@192.168.14.14") in new stack
Aquí llamo al celular si mayor problema. El 8 es para coger linea de la extensión y lo demas el número de celular.

Pero cuando disca desde el followme en el CLI sale esto:
-- Executing [959990888@internos:1] Dial("Local/959990988@internos-e83a;2", "SIP/8959990888@192.168.14.14") in new stack

Como verás la diferencia en la segunda línea es el Dial que coloca:
Dial("Local/959990988@internos-e83a;2", "SIP/8959990888@192.168.14.14")
en vez de:
Dial("SIP/1008-b6512fd8", "SIP/8959990888@192.168.14.14")

¿Es esto correcto o a que se puede deber este problema?

Gracias de antemano por el apoyo.

Saludos

Eddy.

Re: Followme

Followme para hacer la llamadas usa el chan_local. Por eso te aparece la linea:

Dial("Local/959990988@internos-e83a;2", "SIP/8959990888@192.168.14.14")

Mira más bien si definiste bien el contexto en la configuración del usuario en el archivo followme.conf

Para que las llamadas salgan debe ser el mismo contexto que usas para las llamadas externas.

Si sigue sin funcionar envíame el log de la consola para que pueda revisarlo bien.
Saludos

Problema con Followme solucionado....

Holas nuevamente....
Ya pude solucionar el problema.
Apenas contestaba el anexo que timbrada como seguidor me daba tono de ocupado y en el CLI se el error de que no encontraba el archivo call-from en ningun formato.
Bueno lo que hice fue colocar la ruta completa en el prompt correspondiente de la siguiente manera.

[1008]
musicclass=>default
context=>internos
number=>111,30
number=>959990988,30
takecall=>1
declinecall=>2
call-from-prompt=>/var/lib/asterisk/sounds/es/followme/call-from

Debo aclarar que estuve usando la version 1.6.1.6 y ahora la 1.6.1.9, pero en ambas aparecia el mismo error.
Espero que a alguien mas le ayude esto.

Saludos.

Eddy

Re: FollowMe

Me alegra que haya solucionado :)
Y me alegra muchos más saber que las guías están bien :)
Saludos

Error en el ejmplo

Por favor sería bueno que corrijan el error en el documento:
exten => 1000, Followme(1000,san)
Lo correcto sería:
exten => 1000, n, Followme(1000,san)
Ya que algunos novatos como yo, este detallito les puede dificultar buen rato, como yo estuve :)

Buena guía las que tienen. Saludos

Distribuir contenido Distribuir contenido