miércoles, 1 de agosto de 2012

Callback automático en Elastix


Una de las funcionalidades de Asterisk 1.8 es Call Completion Supplementary Service (CCSS).

El objetivo del CCSS es el siguiente, vamos a llamar a una extensión que estará ocupada, entonces marcaremos que queremos que nos llame cuando se quede libre, cuando finalmente la persona con la que queremos hablar cuelga el teléfono Asterisk nos generará una llamada, cuando descolgamos llamará a nuestro interlocutor y nos pondrá en comunicación.



Elastix versión 2.3 viene con Asterisk 1.8 y soporta esta funcionalidad, para lo cual hay que hacer algunos cambios.


Lo primero que hay que hacer es ingresar al Elastix y habilitamos el acceso al FreePBX no embebido, esto se lo hace yendo a la pestaña Security -> Advanced Options -> Enable access to FreePBX -> ON. Luego en una nueva pestaña del explorador se debe poner lo siguiente: 


https://ip-del-elastix/admin


Aqui va a solicitar el usuario y contraseña para ingresar.

Una vez dentro de FreePBX no embebido, se debe ir a la sección (ubicada en la esquina superior izquierda) 
Tools -> Asterisk SIP Settings. Aquí se pueden editar las configuraciones generales para SIP. En la parte final hay una sección que dice Other SIP Settings, ahi ponemos lo siguiente:


call-limit=50


Para habilitar esta funcionalidad he realizado algunos cambios en la configuración por lo que deben bajarse el archivo functions_inc.php y sustituirlo (siempre es bueno sacar una copia del original por si algo falla) por el original que se encuentra en: 

cd /var/www/html/admin/modules/core/

Luego de eso reiniciar el amportal:

amportal stop

amportal start

Veran que en PBX -> PBX Configuration -> Extensions y seleccionan cualquier extensión que tengan creada, en la sección Device Options aparecen dos nuevos campos que dicen cc_agent_policy y cc_monitor_policy.


Los campos mencionados anteriormente son los que habilitan el callback por extensión, las opciones principales son: never y generic. Una vez seteados estos parámetros hay que hacer un cambio en el plan de marcado, para lo cual agregamos unas líneas en el archivo:


vim /etc/asterisk/extensions_custom.conf


Al final del archivo agregamos lo siguiente:



[app-callback]
exten => *123,1,CallCompletionRequest()
exten => *123,n,Hangup()
exten => *124,1,CallCompletionCancel()
exten => *124,n,Hangup()

Debemos agregar a la app-callback dentro del contexto por default que se utilice, por ejemplo si se usa el contexto from-internal se debe agregar lo siguiente al final del archivo /etc/asterisk/extensions_custom.conf:

[from-internal-additional-custom]
include => app-callback

Luego de haber guardado los cambios se debe hacer un reload de la configuración:

rasterisk -x "dialplan reload"

En este caso, si la persona a la que llamamos se encuentra al teléfono, por lo que no puede atender nuestra llamada, colgamos y marcamos *123, una vez que la persona con la que queremos comunicarnos termina su conversación timbra nuestro teléfono y el de la persona con la que queremos comunicarnos de forma automática.