Actualizado 5 septiembre 2009
Hoy empezaremos con la configuración del archivo sip.conf que es donde tenemos que definir nuestras extensiones, nuestros proveedores VoIP y todo lo relacionado con el protocolo SIP. En otro articulo hablaré del protocolo IAX, que es otra forma de configurar nuestra extensiones. El archivo sip.conf està estructurado en tres bloques. La parte general donde hay que definir la configuración general de nuestras extensiones, el bloque central donde configuraremos la registración a nuestros proveedores VoIP (y, si queremos, los datos para conectar entre ellos distintos servidores Asterisk), y la parte final del archivo donde configuraremos todas nuestras extensiones internas y externas.
Pensamos en una centralita que algún día hemos visto entrando a alguna empresa. Asterisk funciona en el mismo modo. Con las extensiones configuradas podremos llamar de una a otra, enrutar las llamadas a teléfonos fijos o celulares, hacia nuestros proveedores VoIP y utilizar las típicos servicios de estos aparados como llamadas en espera, desvío de llamadas, llamada a tres, contestador, etc.
La que sigue es la configuración de una parte de mi sip.conf; cada línea del archivo viene acompañada de una breve explicación después del punto y coma. Ahora tengo instalada la versión 1.6 de asterisk pero la mayoría de las opciones son validas también para las versiones anteriores.
[general] ; etiqueta que introduce la parte general de la configuración
allowguest=no ; No permitir llamadas de extensiones SIP remotas sin contraseña
bindport=5060 ; el puerto utilizado para conectar las extensiones SIP al servidor asterisk (protocolo UDP)
bindaddr=0.0.0.0 : la dirección IP para conectarse al servidor Asterisk (en este caso cualquier dirección de la computadora donde está asterisk)
;tcpenable=yes ; desde la versión 1.6 es posible configurar el servidor para que permita también conexiones TCP
;tcpbindaddr=0.0.0.0:5059 ; dirección y puerto para las conexiones SIP con protocolo TCP
callevents=yes ; Cuando hay eventos (llamadas, etc.) estos vienen notificados al Asterisk Manager (útil para programas externos tipo FOP)
context=phones ; el contexto de base que todas las extensiones utilizaran si no viene especificado diversamente
domain=sip.miodominio.com ; el dominio local para el servidor asterisk. En mi caso son dos.
domain=10.8.0.1 ; Si queremos conectarnos a Asterisk usando un segundo dominio (ejemplo una red VPN)
subscribecontext = subscribe; contexto donde configurar las extensiones para activar la función subscribe del protocolo SIP
allowsubscribe=yes ; esto permite a las extensiones controlar el estado de las demás
notifyringing=yes ; notifica si la extensión está timbrando a las demás extensiones (ya veremos como funciona)
notifyhold=yes ; notifica si la extensión está en espera
disallow=all ; deshabilitar todos los codecs (audio y video)
allow=ulaw ; habilita el codec audio ulaw de base para todas las extensiones
allow=alaw ; igual que arriba para el codec alaw
useragent=X-Lite ; la centralita se presentará con este nombre. A veces algunos proveedores no permiten conectarse a ellos si reconoces que detrás de la conexión está un servidor Asterisk. En este modo nos presentamos como si fuéramos el softphone X-Lite
realm=sip.voztovoice.com ; si definimos esta opción podremos crear las contraseñas cifradas con el protocolo MD5
t38pt_udptl=yes ; permite el uso del protocolo T38 (fax sobre IP) pero solo para conexiones directas
videosupport=yes ; Para permitir videollamadas
srvlookup=yes ; permite hacer busquedas de registros DNS SRV para llamadas SIP salientes basadas en los nombres de dominio
Ahora viene la registración a nuestros proveedores de llamadas. Si los vamos a usar solo para las llamadas salientes no hace falta configurar esta parte. Les pongo un ejemplo a modo de explicación
register => fulano:contraseña@sip.justvoip.com
Nos registramos con el proveedor con el username fulano, la contraseña y la dirección del servidor del proveedor. Si el servidor usa un puerto que no es el 5060 tenemos que especificarlo al final de la línea de este modo
register => fulano:contraseña@sip.justvoip.com:5061
Ahora pasamos a la configuración de las extensiones:
[2000] ; numero de la extensión
accountcode=2000 ; el código que aparecerá en el registro de llamadas para esta extensión
language=es ; si hemos instaladas locuciones en más de un idioma, aquí podemos definir cual idioma usará la extensión
type=friend ; tipo de extensión. Puede ser friend, user o peer. Friend puede hacer y recibir llamadas, user solo recibir y peer solo puede hacer (como en el caso de proveedores VoIP que usamos solo para hacer llamadas)
secret=contraseña ; la clave de la extensión
qualify=yes ; Para saber el tiempo de respuesta de una extensión y si está alcanzable o no
mailbox=2000@default ; la casilla de voz de la extensión (según la configuración del archivo voicemail.conf)
host=dynamic ; si la extensión se conecta remotamente cambiando continuamente su direccion IP se pone este parametro
dtmfmode=rfc2833 ; el protocolo para enviar los tonos DTMF
context=phones ; el contexto que usará la extensión
canreinvite=no ; yes si queremos que la extensión intente conectarse directamente con la extensión llamada. No si queremos que Asterisk haga de puente entre las dos extensiones.
nat=yes ; si la extensión se conecta al servidor asterisk detrás de un cortafuego hay que poner yes
callerid=Fulano <2000> ; el nombre y el numero de identificación de la extensión
disallow=all ; deshabilitar todos los codecs
allow=gsm ; habilita el codec audio gsm (el primero que se intentará utilizar a lo largo de una llamada)
allow=ulaw ; habilita el codec audio ulaw
allow=alaw ; habilita el codec audio alaw
allow=g729 ; habilita el codec audio g729
allow=h263 ; habilita el codec vídeo h263
Ahora un ejemplo para un proveedor de llamadas VoIP
[justvoip] ; nombre que le asignamos al proveedor
type=peer ; lo vamos a utilizar solo para llamadas salientes (peer)
host=sip.justvoip.com ; el nombre del host del proveedor
fromdomain=sip.justvoip.com ;
fromuser=fulano ; los dato que nos pide el proveedor para conectarnos (usuario y contraseña)
username=fulano
secret=contraseña
qualify=yes
canreinvite=no
dtmfmode=rfc2833
context=from-justvoip ; el contexto de utilizar en extensions.conf para las llamadas entrantes
call-limit=2 ; numero de canales que brinda el proveedor.
language=es
disallow=all
allow=ulaw
allow=alaw
allow=g729
Cada vez que cambiamos la configuración de nuestro sip.conf tenemos que recargarla. Abrimos la consola de asterisk
asterisk -rvvvvvvvvvv
y escribimos
CLI> sip reload
Reloading SIP
Estos son los comandos disponibles para las extensiones SIP
CLI> help sip
sip notify Send a notify packet to a SIP peer
sip prune realtime [peer|all] Prune cached Realtime users/peers
sip qualify peer Send an OPTIONS packet to a peer
sip reload Reload SIP configuration
sip set debug {on|off|ip|peer} Enable/Disable SIP debugging
sip set history {on|off} Enable/Disable SIP history
sip show {channels|subscriptio List active SIP channels or subscriptions
sip show channelstats List statistics for active SIP channels
sip show channel Show detailed SIP channel info
sip show domains List our local SIP domains
sip show history Show SIP dialog history
sip show inuse List all inuse/limits
sip show objects List all SIP object allocations
sip show peers List defined SIP peers
sip show peer Show details on specific SIP peer
sip show registry List SIP registration status
sip show sched Present a report on the status of the sched queue
sip show settings Show SIP global settings
sip show tcp List TCP Connections
sip unregister Unregister (force expiration) a SIP peer from the registry
Intenten probarlos todos para ver que pasa :)
Un saludo
Comentarios
Duda Asterisk
Hola que tal...
Felicidades por tu pagina, esta muy entendible.
Aprovechando el viaje, quisiera exponerte una duda que tengo.
Tengo un Asterisk@Home funcionando localmente. Es decir, en una LAN.
Tengo creada la extension 1000 que funciona perfectamente dentro de mi LAN, pero al momento de querer conectarme fuera de ella, el X-Lite me dice Request Timeout.
En mi sip.conf tengo lo siguiente en general.
[general]
port = 5060 ; Se define el puerto que usa Asterisk para SIP (5060 por default)
bindaddr = 10.0.10.10 ; Defino la dirección IP de Asterisk
El asterisk lo tengo direccionado con un dominio dinamico que es el que pongo en el X-Lite para conectarlo.
Funcionaria si cambio la IP de arriba al nombre del host dinamico?
Por ejemplo; bindaddr = euriskooaxaca.dyndns.info??
Gracias!!!!
Asterisk IP publica
Para que puedas conectarte desde una fuera de la red sigue estos pasos
Abres el sip.conf
en bindaddr pones 0.0.0.0 asi asterisk estará escuchando en todas la direcciones IP (red local y IP publica)
en la linea localnet pones la direccion IP local del computador donde esté instalado asterisk. Ejemplo
Localnet 10.0.10.10/255.255.255.0
luego configuras esto
externhost=euriskoooaxaca.dyndns.org
externrefresh=180
Para terminar asegurate que en tu router/firewall tengas abiertos los puertos (normalmente 5060 UDP para la señalizacion y 10000:20000 UDP para el protocolo RTP (audio-video)
Recarcas la configuracion del sip.conf
Intentas conectar tu x-lite y mira que te aparece en la consola de asterisk
Cuentame como te fue y saludos a Oaxaca una ciudad muy bonita que tuve la suerte de conocer
Chao
Duda Asterisk
Ya hice la prueba. Y ya pude conectarme desde Internet via X-Lite con mi servidor Asterisk.
Muchas gracias por la ayuda.
Oye aprovechando tu ayuda, tengo conectado un Linksys SPA al Asterisk. Ya esta registrado con una extension y mi intencion por ahora es hacer llamadas a la PSTN via SPA.
Podrias ayudarme con esto?? Tienes algunas sugerencias???
Oye, que bueno que te gusto Oaxaca. De donde eres?
Spa y Asterisk
No teniendo un linksys spa no te puedo ayudar mucho pero me imagino que se podría hacer algo así:
abres tu extensions.conf y añades las siguientes lineas:
[pstn]
exten => _9XXX.,1,Dial(SIP/1000/${EXTEN},45)
exten => _9XXX.,n,Hangup
Creas un contexto pstn y te aseguras que la extension que quieres usar con la pstn tenga acceso a ese contexto
en la primera linea le dices a Asterisk que todas las llamadas que empiecen con un 9 sean enrutadas a la extension 1000 (la extension de tu SPA) y que si el numero marcado no contesta dentro de 45 segundos pase a la linea 2 donde se cuelga el canal
Seguro que si buscas un poquito en internet encontrarás algo más preciso.
Saludos
Duda
no puedo transeferir video por mas que halla configurado el si.conf con el videosuport y los codecs....me podrias decir a que se debe eso...alguien me dijo que necesito modificar el protocolo que usa asterisk, pero no se donde hago eso...agradesco de antemano tu ayuda
Pues tenemos el mismo
Pues tenemos el mismo problema con el video , a mi me pasa exactamente lo mismo , ¿que puertos utiliza para video?
Llamadas video
Una vez lo he probado y me ha funcionado.
Asterisk tiene problemas para la negociacion audio/video (en el sentido que lo hace muy mal).
En el sip.conf para cada extension definene un solo codec video (ej. H264) y hacen lo mismo en los softphone.
Luego recargan la configuracion y intentan hacer una llamada video.
Si no les funciona pueden poner (siempre en la configuracion de las extensiones)
canreinvite=yes
Recargan la configuracion y lo intentan otra vez
Yo lo he probado una vez on un Softphone BRIA y me ha funcionado.
INFORMACION
HOLA QUISIERA SABER SI ALGUIEN PUDIERA AYUDARME NECESITO CONFIGURAR ASTERISK 1.6
PARA VIDEOCONFERENCIA Y QUE TIPO DE CAMARAS UTILIZAR
OJALA PUDIERAN AYUDARME POR FAVOR
SALUDOS
videconferencia
Para cuartos de videoconferencia asterisk, por ahora, no es la solucion.
Para videollamadas funciona y puedes buscar más informacion en internet
INFO
QUISIERA SABER QUE TIPO DE CONFIGURACION SE NECESITA PARA PODER MONTAR ALGUN TIPO DE SERVIDOR PARA VIDEOCONFERENCIA EN LINUX EN ESPECIFICO CENTOS 5 OJALA PUEDAN ORIENTARME
SALUDOS
Como configurar la web de asterisk
Hola, sequi todos los pasos y todo Ok lo que necesito saber como puedo habilitar la web, ya que le doy localhost al navegador y solo me sale it works
Re: Como configurar la web de asterisk
La verdad no entendí muy bien la pregunta. Me puedes explicar de una forma más clara que es lo que quieres hacer?
Gracias.
Saludos