viernes, 23 de mayo de 2014

FreePBX y los feature codes: custom destinations y misc applications

He estado jugando un poco más con mi centralita VoIP FreePBX (Bueno, en realidad, RasPBX, pero lo mismo da). Y, me he puesto a crear códigos de función, o, más conocidos como feature codes.

He querido hacerlo cambiando sólo los ficheros, pero, como no he sido del todo capaz, al final he terminado tirando por el camino fácil y he instalado los módulos que me harían falta para llegar al objetivo.

Lo primero de todo, nos hará falta, como mínimo, instalar los siguientes módulos:
  • Custom destinations
  • Misc applications
Para crear un destino customizado (el custom destination) tendremos que ir al menú Admin y allí encontraremos el enlace:

FreePBX: Custom destination
FreePBX: Custom destination
Los dos valores que me sé serían:

  • El destino que tendrá internamente. Tiene que tener una estructura que sería
    • El contexto deseado (y siempre lo nombro como ámbito [scope]. A ver si se me queda el nombre bueno).
    • La extensión que buscará dentro de ese contexto.
    • La prioridad por la que debería empezar. 
Ahora, como de costumbre en estos casos, te saldrá el botón rojo de aplicar. Hazle click.

Ahora, vamos a crear lo que se podría traducir por una aplicación propia (una misc application). Nos permitirá enlazar un código determinado con el destino customizado que acabamos de probar. Para poderlo hacer tendremos que acceder a este módulo desde el menú Application.

FreePBX: Misc Application
FreePBX: Misc Application
Tendremos que definirle:
  • La descripción por la que lo podrás reconocer
  • Qué código tendrás que marcar en el teléfono para "llamar" a esta aplicación.
  • Si está activada o no.
  • En nuestro caso, el destino que tendrá será el custom app que acabamos de crear.
Lo mismo de antes: guardamos y aplicamos el cambio.

Ahora vamos a crear un contexto en el fichero /etc/asterisk/extensions_custom.conf. Vamos a modificarlo desde el putty. Escribimos:

nano /etc/asterisk/extensions_custom.conf

Y, en el fichero:

[mi-contexto]
exten => s,1,Playback(tt-monkeys)

Donde, si el navegador no es capaz de interpretar &gt (ampersand + gt) es el símbolo mayor que (>). [Inciso: está claro que tengo que buscarme otra forma de mostrar los códigos fuentes. Fin de inciso]

Y, al guardar, reiniciamos el servicio (ojo con las llamadas que estén en curso, que te las va a tumbar):

asterisk -rx "core restart now"

Y, si llamamos a la extensión que hemos definido desde alguno de los teléfonos, debería de oirse una jauría de monos gritando.

Y... esto no es todo. Porque todo este lío, además de enseñar a montar una cosa de estas, viene por dos razones.

Una, es que, de momento, sólo lo he conseguido hacer funcionar como si de una llamada se tratara. Ya veré si lo consigo cuando esté una llamada en curso.

La otra es por un error que te puedes encontrar. Porque, si no enlazas bien las cosas, no te funcionará. Un error que te podrá salir en los logs es el siguiente:

[...] sent to invalid extension but no invalid handler: context,exten,priority=mi-contexto,s,1

Esto significa que si has puesto un contexto correcto, pero en el fichero .conf has indicado una extensión fija (por ejemplo, directamente *007) y en la configuración has puesto la s, te va a saltar este error en los logs. Al menos, esa es una de las razones. Si hay más razones, ahora mismo lo desconozco.

Y... de momento esto. Si se me ocurren más cosas, os lo haré saber. 

No hay comentarios:

Publicar un comentario