domingo, 20 de febrero de 2011

Telefonía IP: Asterisk sip.conf definición, ubicación, estructura, plantillas o templates (!)

Definición:
El sip.conf es el archivo de configuración de canal correspondiente al protocolo SIP (Session Initiation Protocol) el cual es el protocolo de señalización más popular en la actualidad.

El canal SIP de asterisk permite su interconexión VoIP con diversos dispositivos que utilicen SIP como su protocolo de señalización y da el poder a asterisk de funcionar como:

a) Cliente SIP: Asterisk puede registrarse en un servidor SIP y utilizar sus servicios para realizar y recibir llamadas. En este caso Asterisk se comporta como una extensión de ese servidor.

b) Servidor SIP: los dispositivos SIP tales como softphones y teléfonos IP pueden registrarse en Asterisk y cursar llamadas a través de él.

c) Gateway:  Asterisk puede servir de convertidor entre protocolos, por ejemplo SIP, H323, MCGP, IAX y la PSTN en la mayoría de sus variantes analógicas y digitales.


Ubicación:
Al igual que el extensions.conf, en una instalación por defecto el sip.conf se encuentra en /etc/asterisk. Es un archivo de texto, por lo que también puede ser abierto con vim.

Estructura
El sip.conf consta de una sección [general] de [plantillas](!) y [dispositivos]

[general]

En esta sección se definen gran cantidad de parámetros globales de todos los canales SIP y dependen de cada implementación.

Luego, al finalizar las opciones globales, podemos tener 2 posibles tipos de objetos:

[plantillas](!) y [dispositivos]

[plantillas](!) o Templates
En estas secciones las puedes reconocer por el diferenciador (!) luego de cerrado el corchete y ellos son perfiles comunes de configuración que son aplicadas a los [dispositivos], de modo de no tener que repetir opciones sobre todos y cada uno de los dispositivos. 

Luego de definida la plantilla, la puedes aplicar al cada dispositivo de la siguiente manera:

[dispositivo](plantillal1, plantilla2)

A continuación un ejemplo donde crearemos dos plantillas que aplicaremos a un dispositivo:

[standard-internacional](!)
type=friend
host=dynamic
disallow=all
allow=gsm
allow=alaw
canreinvite=no
language=es
context=salida_internacional
call-limit=1

Esta plantilla define opciones comunes tales como el tipo de dispositivo y los codecs permitidos y un parámetro muy importante como lo es el contexto donde ser va a registrar el dispositivo, que en este caso es un contexto donde se asume que se permite que tenga salida a llamadas internacionales.

[equipo-ventas](!)
callgroup=5
pickupgroup=5

Esta plantilla define el grupo de captura al cual pertenece el dispositivo

Ahora bien, las plantilas solos no trabajan, tienen que ser aplicadas a un dispositivo como lo ven a continuación:


[001](standard-internacional,equipo-ventas)
regexten=001
secret=password
callerid="Pedro Pérez" <001>
mailbox=001@vm-internos

En este punto definimos un dispositivo SIP llamado SIP/001 con los perfiles anteriores ya aplicados y pueden ver el efecto de las plantillas, las cuales reducen drásticamente la definición de un dispositivo SIP.

Si no hubiéramos usados perfiles, tendríamos que haber escrito:

[001]
regexten=001
secret=password
callerid="Pedro Pérez" <001>
mailbox=001@vm-internos
type=friend
host=dynamic
disallow=all
allow=gsm
allow=alaw
canreinvite=no
language=es
context=salida_internacional
call-limit=1
callgroup=5
pickupgroup=5

De aquí lo útil de las plantillas, más aún cuando tienes muchos dispositivos SIP. De hecho, las plantillas no son de uso explusivo del sip.conf, las puedes usar en el iax.conf y extensions.conf
 
Como buena practica, yo uso las plantillas para definir diversas opciones administrativas del día a dia tales como:

1.- El tipo de salida a la PSTN (local, larga distancia nacional internacional...) diferenciando básicamente la opción context.
2.- El grupo de captura al cual pertnece
3.- Los codecs permitidos

Las opciones del sip.conf son muchísimas y puedes encontrarlas en:

http://www.voip-info.org/wiki/view/Asterisk+config+sip.conf

Si tienes dudas con alguna, por favor indícamelo para ayudarte en tu investigación.

En Posts futuros estaremos viendo ejemplos prácticos y mejores prácticas tanto del sip.conf como del extensions.conf

2 comentarios:

  1. ya estoy claro con la teoria pero igual no me funciona... no veo el error...!

    mira mi extensions.conf aqui http://dl.dropbox.com/u/12543437/asterisk/extensions.conf

    y mira mi sip.conf aqui

    http://dl.dropbox.com/u/12543437/asterisk/sip.conf

    ResponderEliminar
  2. Muy buena la información... Los asterisk call center son de mucha utilidad para poder comunicarnos con un buen servicio con las personas que deseamos.

    ResponderEliminar