Como suele ser comun pensar, que mejor que empezar las primeras andanzas en funcionamiento usando dispositivos SIP, realmente los menos costosos ya que practicamente estamos rodeados de ellos. Ademas en este caso seran la base de mis pruebas de momento, ya que aun no dispongo de electronica suficiente para probar otros modulos.
Parece ser que Asterisk se divide por canales, segun el canal, llamemosle via de comunicacion, va en funcion del tipo, en este caso, el canal sip, llamado SIP CHAN con su archivo de configuracion sip.conf es el que voy a tratar introductoriamente en el mensaje de hoy.
Combinando mi aprendizaje a traves del curso, y la lectura del buen libro, The Future of Telephony (una de los mejores bajo mi criterio), cree un fichero sip.conf desde cero, (los archivos de configuracion de Asterisk se encuentran dentro del directorio /etc/asterisk/ como la mayoria de los ficheros de configuracion de Linux. El contenido del mismo a nivel muy basico seria el siguiente, explicado linea por linea:
[general]
language=es
En primer lugar, tenemos los contextos, encuadrados entre corchetes. Concretamente este contexto podria llamarse contexto global ya que afecta por defecto a todo el resto de los contextos.El atributo language se explica por si solo
[extension](!)
type=friend
host=dynamic
dtmfmode=rfc2833
canreinvite=no
nat=no
qualify=yes
context=extensiones_internas
pickupgroup=1
callgroup=1
En este caso ya tenemos mas atributos complejos. En primer lugar el contexto «extension» tiene una peculiaridad y es que al ponerle (!) lo convertimos en plantilla que luego otros contextos podran utilizar para no tener que andar reescribiendo codigo a lo loco
Sobre los atributos, asi enumeradamente:
1. type tenemos tres posibilidades, friend, peer, user, para decidir si hara llamadas, recibira, o ambas. En este caso friend es ambas.
2. En host, dynamic, es un poco una version comoda de decir, que el otro punto que se conecte a asterisk sea el que provea toda la informacion acerca de la conexion
3. Acerca del dtmfmode, tendriamos que hablar del mundo de los Dual Tone Multi Frequency, hay varias opciones, pero la opcion rfc2833 es quiza la mas comun. Hablare en algun momento o quiza cuando llegue mas a la parte de telefonia analogica acerca de los DTMF
4. canreinvite, simplemente especifica, que los telefonos no puedan «reinvitarse» y realizar una comunicacion directa entre ellas sin pasar por asterisk. Esto quiza seria util en sedes remotas, para que pudieran hablar dos extensiones de la misma sede en local. Pero para ello hay mejores opciones aun si cabe que ya veremos en otro momento mas avanzado.
5. Sobre el nat, tiene que ver con las cabeceras del protocolo SIP y la informacion acerca del host que traen. Manteniendolo en no permitimos que estas cabeceras se conserven y se usen.
6. qualifiy sirve para mandar mensajes por el protocolo para confirmar si estan activos los otros puntos. Esto puede generar trafico indeseado en la red, por lo que en sedes remotas, quiza seria interesante desactivarlo
7. pickupgroup y callgroup van en conjunto. Callgroup define un grupo de llamadas dentro de las extensiones. Y pickupgroup define de que callgroup podria ser recogida una llamada con una marcacion especifica definida en otro fichero de configuracion (features.conf se vera mas adelante). En principio nos quedamos con *8 que es el que va por defecto
8. Finalmente el context quiza el atributo mas esencial, hace referencia a que contexto ira a mirar esta extension por defecto dentro del DialPlan (esto requiere mas de un mensaje asi que seguramente sea mañana cuando escriba el primer DialPlan y una explicacion acerca de este). Dial Plan viene a referirse al plan de marcacion, a «que ocurre» cuando desde un telefono marcamos una combinacion de digitos u otra. Esta es la verdadera programacion del sistema Asterisk
[codecs](!)
disallow=all
allow=gsm
allow=ulaw
Semejante al anterior contexto y bastante explicatorio por si mismo. Bloqueamos todos los codecs y solo damos permiso a los que nos interesan, en este caso el GSM y el ULAW. Conforme voy recorriendo este fichero me voy dando cuenta de la cantidad de cosas que seria interesante explicar en futuros mensajes, porque todo guarda relacion directa con otros fundamentos basicos de la telefonia.
Finalmente los puntos SIP
[ext1000] (extension, codecs)
callerid = «Polycom» <1000>
defaultuser = ext1000
secret = 111111
mailbox = 1000@default
Solo pongo una de ejemplo, porque basicamente el resto son replicas modificando algunos detalles basicos para cada futura extension SIP
Aqui llamamos a las dos plantillas anteriormente creadas, y utilizamos atributos especificos que son:
1. callerid, es el nombre que le aparecera al receptor de la llamada cuando emitamos desde este punto
2. defaultuser y secret son el usuario y contraseña que deberemos utilizar para configurar los puntos SIP
3. mailbox, sera el buzon por defecto para esta extension, para el tema de los buzones de voz.
Y con esto ya tendriamos una configuracion basica preparada para empezar a configurar Terminales, y crear un pequeño DialPlan para cursar llamadas simples entre los mismos.
En la proxima parte seguiremos con mas, explicando acerca de la configuracion de varios tipos de terminales SIP que hemos puesto como ejemplo: Un software para Windows, un software para Linux, otro para un pequeño terminal Android y finalmente un grandioso telefono Polycom que me dieron en el curso.
3 comentarios en «El dia del Protocolo SIP: Parte 1»