Utilizar CCSS en Asterisk (parte 3)

Bueeenas,

Llegamos con una parte 3 en la que tocaremos un poco las variables que se pueden utilizar para cambiar el funcionamiento del sistema y hablaremos de otros detalles técnicos.

Si te perdiste las partes anteriores las puedes encontrar aquí:

Bien, en la parte anterior se habló de la subrutina cc_callback_sub pero no se profundizó en su uso. Es momento de hacerlo ahora.

Antes de continuar, es necesario mencionar que al principio Asterisk no utilizaba esta subrutina si no que utilizaba una macro llamada: cc_callback_macro. Su funcionamiento era muy similar. Si tenéis un asterisk algo antiguo igual no os vale la subrutina y si tenéis uno moderno os dirá que la macro está obsoleta y os recomendará usar la subrutina. Sin más.

 

Dicho esto, es momento de hacer una prueba que seguro que habéis hecho ya al leer la parte 2. Una de las formas de ver lo que ocurre es añadir un DumpChan() en la macro/subrutina. Si hacemos esto, nos encontramos con varias variables muy interesantes.

Estas variables guardan lo necesario para replicar la llamada inicial:

  • CC_INTERFACES
  • CC_EXTEN
  • CC_CONTEXT

En principio si tocásemos esas variables podríamos editar la forma en la que se genera la retrollamada (o callback). Yo he probado a tocar todas y no he conseguido nada con CC_CONTEXT por separado, pero cambiando CC_INTERFACES sí que he conseguido hacer una retrollamada malvada que llame a un usuario diferente que el inicial. Esta variable guarda el contenido del Dial() que se hizo en la llamada original. Si en el caso anterior teníamos este dialplan:

same => n,Dial(SIP/usuario101, 10, r)

La variable CC_INTERFACES tendría el valor SIP/usuario101. que podríamos cambiar por otro valor para que llamase a otro usuario distinto. A pesar de que no tendría ninguna lógica pensándolo así, podemos hacer que si un usuario no coge nos prepare una retrollamada contra su móvil o cualquier cosa, que hay que recordar que estas variables pueden leerse también para saber a quién se realizará la retrollamada.

 

Por otro lado. El archivo de muestra de ccss.conf contiene información interesante de las cosas que pueden editarse tanto ahí como desde el dialplan mediante la función CALLCOMPLETION() (que apareció en la parte 2). Merece la pena que le echéis una ojeada.

 

Para terminar con estas explicaciones añadir que existe un posible bug con la retrollamada:

Lo que ocurre es que cuando Asterisk llama a Alice espera que ésta coja el teléfono para llamar a Bob y engancharlos el uno al otro. Sin embargo, si Alice cuelga en lugar coger, Asterisk sigue llamando a Bob, que si coge no oye nada hasta aburrirse y colgar. Este comportamiento es molesto e impide que Alice cambie de idea justo cuando le llegue la retrollamada.

Para evitarlo se puede hacer una comprobación en la subrutina/macro de la retrollamada para saber si Alice a colgado o ha cogido y colgar o continuar teniendo eso en cuenta. Pero no explicaré como hacer eso aún, esperaré unos días antes. Dejando la incógnita en el aire.

¿Cómo lo haríais vosotros? ¡Espero vuestros comentarios!

Anuncios

Un pensamiento en “Utilizar CCSS en Asterisk (parte 3)

  1. Utilizar CCSS en Asterisk (parte 4) – Mis proyectos de tecnología libre.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s