Asterisk

27
Índice Introducción pág. 2 Instalando Asterisk pág. 3 – 5 Primeros Pasos pág. 6 – 7 Configuración de Softphone pág. 8 – 13 Sip.conf pág. 14 – 17 Extensions.conf pág. 18 – 19 Voicemail.conf pág. 20 – 21 Conclusión pág. 22

description

Amigos si han tenido problemas de como se debe instalar Asterisk y como se configura. Entonces este manual es para ustedes, explico los pasos detalladamente. El sistema operativo usado es Linux, Fedora14

Transcript of Asterisk

Page 1: Asterisk

Índice

Introducción pág. 2

Instalando Asterisk pág. 3 – 5

Primeros Pasos pág. 6 – 7

Configuración de Softphone pág. 8 – 13

Sip.conf pág. 14 – 17

Extensions.conf pág. 18 – 19

Voicemail.conf pág. 20 – 21

Conclusión pág. 22

Page 2: Asterisk

Introducción

En este informe enseñare como instalar Asterisk (telefonía IP), el sistema operativo que vamos a ocupar es LINUX y la distribución es Fedora 14.

Después de dejar esto claro pasamos a instalar nuestro Asterisk con los pasos que detallare a continuación, solo voy a explicar la forma de instalación de Asterisk y su configuración no voy a explicar o corregir errores de Asterisk y tampoco de Linux.

¿Que nos permitirá Asterisk?, simple poder comunicarse con sus compañeros de trabajo a través de la red sin la necesidad de tener teléfonos, solo se requiere levantar un servidor de Asterisk y en cada computador instalar un programa que permite esta comunicación. Además necesitaremos instalar un audífono con micrófono.

2

Page 3: Asterisk

Instalando Asterisk en un sistema Linux

La página de referencia es http://www.asterisk.org

Descargamos la última versión (en este ejemplo se usa la versión Asterisk 1.6.2.18Source Tarball) y la descomprimimos.

1) Iniciamos con…

# tar –zxvf asterisk-1.6.2.18.tar.gz# rm –f Asterisk-1.6.2.18.tar.gz# cd asterisk-1.6.2.18

2) Ejecutamos “./configure”Si al paso de este comando, todo funciona bien, pasamos al siguiente paso.

3) Ejecutamos “make”Si al paso de este comando, todo funciona bien, pasamos al siguiente paso.

4) Ejecutamos “make install”Si al paso de este comando, todo funciona bien, pasamos al siguiente paso.

5) Ejecutamos “make samples”Recuerden que este comando sobrescribirá todos los ficheros de configuración que ya tengas, pero como somos nuevos con este sistema, es bueno para que cuando tengamos problemas podamos acudir a estos.

Finalmente podemos arrancar el Asterisk con el comando (desde una consola o tty):

# asterisk -vvvc

3

Page 4: Asterisk

Veremos un montón de mensajes en la pantalla cuando Asterisk se inicializa (las vvv pertenecen al modo “very very verbose” y la c a que nos mostrara al final una línea de comandos en forma consola)

*CLI>

A partir de este momento ya esta Asterisk instalado y funcionando. Se puede utilizar el comando “help” para ayuda.

También puedes utilizar el comando “man asterisk” en la línea de comandos de Linux para obtener detalles de cómo arrancar y parar el servidor Asterisk.

Los ficheros de configuración de Asterisk se habrán instalado en el directorio /etc/Asterisk, donde podrás encontrar un montón de información.

Vamos a comprobar que funcionan:

Configuramos un sofphone como el SJPhone (para mas información consultar configuración del sjphone) para poder acceder a nuestro propio Asterisk. La configuración que hemos hecho trae dos usuarios por defecto que podemos utilizar:

A: usuario: 3000 password=cualquiera funcionaB: usuario: 3001 password=cualquiera funciona

Una vez que lo tenemos configurado y el usuario se ha registrado correctamente en nuestro servidor podemos llamar a algunos números de prueba que vienen por defecto en el plan de numeración:

1000 – Menú principal1234 – Pasar llamada a la consola (vemos en la consola, la llamada)1235 – Contestador automático de la consola1236 – Llamar a la consola

3000 – Llamar al usuario SIP 30003001 – Llamar al usuario SIP 3001

500 – Llamar a Digium

600 – Prueba de eco

8500 – Menú del contestador

99990 Test AGI99991 Test EAGI99992 Dice la hora99999 Suena música de manera infinita

4

Page 5: Asterisk

700 Deja en espera la llamada701-720 Llamadas en espera

Una buena prueba en este momento es configurar 2 softphones en dos computadores diferentes; uno con el usuario 3000 y otro con el usuario 3001 e intentar hacer una llamada entre ambos. Si funciona podemos pasar a aprender a configurar Asterisk y crear nuevos usuarios y planes de numeración.

5

Page 6: Asterisk

Primeros pasos

Una vez instalado Asterisk en Linux vamos con un ejemplo sencillo de las primeras cosas que podemos hacer. Este ejemplo consiste en crear dos nuevas extensiones con sus buzones de voz.

1. Vamos a crear dos usuarios SIP nuevos.

Por ejemplo los usuarios “20000” y “20100” con contraseñas “20000” y “20100”

Para ello vamos al fichero sip.conf y añadimos las siguientes líneas al final del fichero.

[20000]type=friendsecret=20000qualify=yesnat=nohost=dynamiccanreinvite=nocontext=miprimerejemplomailbox=20000@miprimerbuzon

[20100]type=friendsecret=20100qualify=yesnat=nohost=dynamiccanreinvite=nocontext=miprimerejemplomailbox=20100@miprimerbuzon

Para más información del fichero sip.conf ir a la página donde vemos la configuración de este archivo.

2. Vamos a crear las extensiones para usuarios.

Vamos a crear las extensiones para usuarios para esos usuarios en el fichero extensions.conf de manera que si marcamos el 20000 hablaremos con el usuario 20000 y si marcamos el 20100 halaremos con el usuario 20100. También creamos el número del buzón de voz para consultar los mensajes para que sea el 30000.

6

Page 7: Asterisk

Añadimos las siguientes líneas al final del fichero extensions.conf

[miprimerejemplo]exten => 20000,1,Dial(SIP/20000,30,Ttm)exten => 20000,2,Hangupexten => 20000,102,Voicemail(20000)exten => 20000,103,Hangup

exten => 20100,1,Dial(SIP/20100,30,Ttm)exten => 20100,2,Hangupexten => 20100,102,Voicemail(20100)exten => 20100,103,Hangup

exten => 30000,1,VoicemailMain

Para más información del fichero extensions.conf ir a la página donde vemos la configuración de este archivo.

3. Vamos a crear los buzones de voz para esos usuarios.

Vamos a crear los buzones de voz de ambos usuarios y asignarles una contraseña en el fichero voicemail.conf. Al buzón 20000 le vamos a dar la contraseña 1234 y al buzon 20100 la contraseña 4321.

[miprimerbuzon]20000 => 1234,Pedro,[email protected] => 4321,Juan,[email protected]

Para más información del fichero voicemail.conf ir a la página donde vemos la configuración.

4. Reiniciamos el Asterisk.

7

Page 8: Asterisk

Configuración de Softphone.

Configuramos uno o dos sftphones y probamos a llamar entre ambos usuarios o a dejar mensajes en el contestador cuando no están disponibles. También podemos llamar al número 30000 para escuchar nuestros mensajes.

Lo puedes descargar en http://www.sjlabs.com/sjp.html

Después de que lo instales lo puedes configurar de la siguiente manera.

1. Le das a la pestaña options (la tecla del centro redondo arriba con unas herramientas)

8

Page 9: Asterisk

2. Te aparecerá un menú con muchas pestañas. Le das un click a la pestaña Profiles y después al botón New.

9

Page 10: Asterisk

3. Aparece otro menú llamado Create New Profile y llenas.

a. Profile Name—-> pones lo que quierasb. File Name —–> lo pone el sólo al escribir el profile namec. Profile Type —->Calls through SIP proxy OK

10

Page 11: Asterisk

4. Aparece un nuevo menú de pestañas

Pestaña General —-> No tocarPestaña Initialization —> No tocarPestaña SIP ProxyProxy Domain: rellenar el nombre de dominio o la IP y luego : y poner el puerto (normalmente 5060)User Domain: rellenar el nombre de dominio o la IPDe las pestañas es conveniente marcar: Register with proxy , Proxy is strict outbound y Unregister contact address only. Las demás sin marcar. En proxy for NAT la primera casilla la dejas en blanco y después de los dos puntos “:” pones 0

11

Page 12: Asterisk

5. Advanced —-> Es opcional pero resulta interesante Se configura el buzón de voz en la casilla “Voice mail number or address”. Este número lo suele dar el proveedor y es el número al que llamamos para escuchar el buzón de voz.

DTMF —-> No tocarSTUN —–> No tocar

Pulsamos OK

Última pantalla ServiceTe pide:

Account: Nombre de tu cuenta

Password: Password de la cuenta

Pulsamos OK

12

Page 13: Asterisk

6. Otra vez OK y ya está

13

Page 14: Asterisk

Sip.conf

El archivo sip.conf sirve para configurar todo lo relacionado con el protocolo SIP y añadir nuevos usuarios o conectar con proveedores SIP.

Aquí hay un ejemplo básico del archivo sip.conf:

[general]context=defaultport=5060 ; Puerto UDP en el que responderá el Asteriskbindaddr=0.0.0.0 ; Si queremos especificar que Asterisk esté en una IP (si un equipo tiene 3 IPs por ej.) 0.0.0.0 vale para cualquierasrvlookup=yes ; Habilita servidor DNS SRV

[daniel]type=friendsecret=asteriskqualify=yes ;Tiempo de latencia no superior a 2000 ms.nat=no ; El telefono no usa NAThost=dynamic ; El dispositivo se registra con una IP variantecanreinvite=no ; Asterisk por defecto trata de redirigircontext=internal ; El contexto que controla todo esto

El fichero sip.conf comienza con una sección [general] que contiene la configuración por defecto de todos los usuarios y “peers” (proveedores). Se puede sobrescribir los valores por defecto en las configuraciones de cada usuario o peer.

- En general los servidores SIP escuchan en el puerto 5060 UDP. Por tanto configuramos port=5060. En algunos casos, por ejemplo si utilizamos SER (Sip Express Router) con Asterisk debemos cambiar este puerto.

- DNS es una forma de configurar una dirección lógica para que pueda ser resuelta. Esto permite que las llamadas sean enviadas a diferentes lugares sin necesidad de cambiar la dirección lógica. Usando el DNS SRV se ganan las ventajas del DNS mientras que deshabilitándolo no es posible enrutar llamadas en base a nombre de dominios. Conviene tenerlo activado, por tanto se pone la directiva srvlookup=yes

Cada extensión está definida por un user o usuario, un peer o proveedor o un friend o amigo y viene definida con un nombre entre corchetes [].

- El tipo (type) “user” se usa para autenticar llamadas entrantes, “peer” para llamadas salientes y “friend” para ambas. En nuestro caso hemos definido una extensión daniel como “friend”. Puede realizar y recibir llamadas.

14

Page 15: Asterisk

- Secret es la contraseña usada para la autenticación. En este caso será “asterisk”.

- Se puede monitorizar la latencia entre el servidor Asterisk y el teléfono con qualify=yes para determinar cuando el dispositivo puede ser alcanzado En este caso Asterisk considera por defecto que un dispositivo está presente si su latencia es menor de 2000 ms (2 segundos). Se puede cambiar este valor poniendo el número de milisegundos en vez de yes.

- Si una extensión está detrás de un dispositivo que realiza NAT (Network Address Translation) como un router o firewall se puede configurar nat=yes para forzar a Asterisk a ignorar el campo información de contacto y usar la dirección desde la que vienen los paquetes.

- Si ponemos host=dynamic quiere decir que el teléfono se podrá conectar desde cualquier dirección IP. Podemos limitar a que dicho usuario solo pueda acceder con una IP o con un nombre de dominio. Si ponemos host=static no haría falta que el usuario se registrará con la contraseña proporcionada en “secret”,

- También se ha puesto canreinvite=no. En SIP los invites se utilizan para establecer llamadas y redirigir el audio o video. Cualquier invite después del invite inicial en la misma conversación se considera un reinvite.Cuando dos usuarios han establecido la comunicación con canreinvite= yes (por defecto) los paquetes RTP de audio podrían ser enviados extremo a extremo sin pasar por el servidor Asterisk. Esto, normalmente, no suele ser conveniente en casos en los que haya NAT en alguno de los clientes. (NAT=yes).Usando canreinvite=no se fuerza a Asterisk a estar en medio no permitiendo que los puntos finales intercambien mensajes RTP directamente.De todos modos, existen numerosas condiciones en que Asterisk no permite el reinvite a pesar de que no pongamos esta condición ya que necesita controlar el flujo RTP. Por ejemplo: Si los clientes usan codecs diferentes, si hay opciones de Music On hold o temporizadores en la llamada, etc.

Por último context=internal indica el contexto donde está las instrucciones para dicha extensión. Esto está relacionado con el contexto del archivo extensions.conf que marca el plan de numeración para ese contexto. Por tanto el contexto internal debe existir en el fichero extensions.conf o de lo contrario deberíamos crearlo. Varias extensiones pueden tener el mismo contexto.

Opciones avanzadas:

En las siguientes columnas tenemos las posibilidades de configuración para los tipos “user” y “peer”. En el caso de “friend” valen las dos tablas ya que un “friend” es a la vez ambos.

15

Page 16: Asterisk

User Peer Explicación y opciones

16

Page 17: Asterisk

Context contextIndica el contexto asociado en el dialplan para un usuario o peer

Permit permit Permitir una IPDeny deny No permitir una IPSecret secret Contraseña para el registromd5secret md5secret Contraseña encriptada con md5

dtmfmode dtmfmodeEl modo en el que se transmiten los tonos. Pueden ser “RFC2833″ o “INFO”

canreinvite canreinviteCon “no” se fuerza a Asterisk a no permitir que los puntos finales intercambien mensajes RTP directamente.

Nat natIndica si el dispositivo está detrás de un NAT con “yes”

callgroup callgroup Define un grupo de llamadas

pickupgroup pickupgroupDefine el grupo de llamadas validas para una aplicación pickup()

language languageDefine las señales para un país. Debe estar presente en el archivo indications.conf

Allow allow

Permite habilitar un codec. Pueden ponerse varios en un mismo usuario Posibles Valores:“allow=all” ,”allow=alaw”, “allow=ulaw”, “allow=g723.1″ ; allow=”g729″ , “allow=ilbc” , “allow=gsm”.

disallow disallowPermite deshabilitar un codec. Puede tomar los mismos valores que allow

insecure insecure

Define como manejar las conexiones con peers Tiene los siguientes valores very|yes|no|invite|port Por defecto es “no” que quiere decir que hay que autenticarse siempre.

trustpid trustpidSi la cabecera Remote-Party-ID es de confianza. Por defecto “no”

progressinband

progressinband

Si se deben generar señales en banda siempre. Por defecto never

promiscredir promiscredir Permite soportar redirecciones 302. Por defecto “no”

CalleridDefine el identificador cuando no hay ninguna otra información disponible

accountcodeLos usuarios pueden estar asociados con un accountcode . Se usa para facturación.

amaflagsSe usa para guardar en los CDR y temas de facturación. Puede ser “default”, “omit”, “billing”, o “documentation”

incominglimit Limite de llamadas simultaneas para un cliente

restrictcidSe usa para esconder el ID del llamante. Anticuada y en desuso

mailbox Extensión del contestadorusername Si Asterisk actúa como cliente SIP este es el nombre

de usuario que presenta en el servidor SIP al que

17

Page 18: Asterisk

llamafromdomain Pone el campo From: de los mensajes SIPregexten

fromuserPone el nombre de usuario en el from por encima de lo que diga el callerID

host

Dirección o host donde se encuentra el dispositivo remoto. Puede tomar valores:- Una IP o un host concreto- “dynamic” con lo que valdría cualquier IP pero necesita contraseña- “static” vale cualquier IP pero no es necesario contraseña

maskport Puerto UDP en el que responderá el Asterisk

qualifyPara determinar cuando el dispositivo puede ser alcanzado

defaultipIP por defecto del cliente host= cuando es especificado como “dynamic”

rtptimeoutTermina la llamada cuando llega a ese timeout si no ha habido tráfico rtp

rtpholdtimeoutTermina la llamada cuando llega a ese timeout si no ha habido tráfico rtp “on hold”

Extensions.conf18

Page 19: Asterisk

DialPlan

El archivo extensions.conf es el más importante del Asterisk y tiene como misión principal definir el dialplan o plan de numeración que seguirá la centralita para cada contexto y por tanto para cada usuario.

El fichero extensions.conf se compone de secciones o contextos entre corchetes cuadrados [ ]Hay dos contextos especiales que están siempre presentes que son [general] y [globals]

Contexto [general]El contexto [general] configura unas pocas opciones generales como son:

- static: Indica si se ha de hacer caso a un comando “save dialplan” desde la consola. Por defecto es “yes”. Funciona en conjunto con “writeprotect”

- writeprotect: Si writeprotect=no y static=yes se permite ejecutar un comando “save dialplan” desde la consola. El valor por defecto es: ”no”.

- autofallthrough: Si está activado y una extensión se queda sin cosas que hacer termina la llamada con BUSY, CONGESTION o HANGUP Si no está activada se queda esperando otra extensión.

- clearglobalvars: Si está activado se liberan las variables globales cuando se recargan las extensiones o se reinicia Asterisk.

- priorityjumping: Si tiene valor ‘yes’, la aplicación soporta ‘jumping’ o salto a diferentes prioridades. En desuso

En general estas opciones no son muy importantes y se pueden dejar tal y como aparecen por defecto.

Contexto [globals]En este contexto se definen las variables globales que se van a poder utilizar en el resto de los contextos. Por ejemplo

CONSOLE=Console/dsp ; indica que cuando hagamos referencia a la variable CONSOLE estamos llamando a /Console/dsp

Las variables suelen ponerse siempre en mayúsculas para diferenciarlas posteriormente.

19

Page 20: Asterisk

Voicemail.conf

20

Page 21: Asterisk

Contestador automatico

El archivo voicemail.conf sirve para configurar el contestador automatico y gestionar los buzones de los usuarios

El fichero extensions.conf se compone también de secciones o contextos entre corchetes [ ]Hay dos contextos especiales llamados [general] y [zonemessages] que siempre están presentes.

Contexto [general]El contexto [general] configura las opciones generales del buzón de voz:

Un ejemplo básico podría ser:

[general]; Enviar archivos en las notificaciones de e-mailattach=yes; Usar el formato wav para los mensajes de vozformat=wav; Limitar el tiempo máximo del mensaje de voz a 180 segundosmaxmessage=180; Limitar el tiempo mínimo del mensaje a 3 segundosminmessage=3; Anunciar el número que llamó antes de repetir el mensajesaycid=yes; Limitar el número de intentos de registro a 3maxlogins=3; Define los contextos internos para especificar que vienen de una extensión internacidinternalcontexts=house_local,house_toll,house_admin

Vamos a poner en forma de tabla las posibilidades más destacadas a utilizar de este contexto:

Comando Explicación y opciones

Attach Indica si se envía un archivo en las notificaciones de email. Tiene dos valores “yes” o “no” Por defecto es “no”

Delete Indica que el mensaje de voz será borrado del servidor si es enviado por e-mail

mailcmd Sirve para fijar la ruta del servidor de e-mail

maxsilenceIndica los segundos de silencio que debe detectar el servidor para cortar la llamada al buzón. Por defecto es 0 que indica que equivale a un tiempo infinito y no hace caso a los silencios.

envelope Si lo activamos con “yes” indicará el día y la hora en que se recibió el mensaje

21

Page 22: Asterisk

externnotify Sirve para ejecutar un programa externo cuando alguien deja un mensaje

externpass Sirve para ejecutar un programa externo cuando alguien cambia su contraseña del buzón.

silencetreshold Funciona si maxsilence=”yes” y sirve para fijar el umbral de silencio

servermail Indica el origen de los mensajes de notificación de e-mail. Por ejemplo [email protected]

maxmessage Indica el tiempo máximo de un mensajemaxmsg Indica el número máximo de mensajes en un buzón

minmessage Sirve para eliminar los mensajes que tienen menos duración que lo indicado por este comando.

Format Indica el formato en que se guardará los mensajes de voz. Hay las siguientes posibilidades: “wav49″, “gsm”, “wav”

maxgreet Fija el tiempo máximo del mensaje de bienvenida que pueden configurar los usuarios

maxlogins Número máximo de intentos de logeocdinternalcontexts Distingue si los contextos son contextos internos o externospromiscredir Permite soportar redirecciones 302. Por defecto “no”

review Por defecto es “no”. Si lo pusiéramos a “yes” el usuario que deja el mensaje podrá revisarlo antes de salvarlo y dejarlo en el buzón.

operator Permite marcar una extensión cuando ha saltado el buzón de voz

saycid Si lo ponemos a “yes” anunciar el numero que llamó antes de repetir el mensaje

fromstring Modifica el from del mensaje de aviso de correoemailsubject Modifica el asunto del mensaje de aviso de correoemailbody Modifica el cuerpo del mensaje de aviso de correo

nextaftercmd Reproduce el siguiente mensaje automáticamente cuando se borra el anterior.

Contexto [zonemessages]Este contexto define zonas horarias. La hora para distintos usuarios no es la misma y para poder informarle sobre la hora en que recibió el mensaje es necesario fijar diferentes zonas horarias:

Un ejemplo podría ser

[zonemessages]madrid=Europe/Paris|’vm-received’ Q ‘digits/at’ Rparis=Europe/Paris|’vm-received’ Q ‘digits/at’ Rsthlm=Europe/Stockholm|’vm-recieved’ Q ‘digits/at’ Reuropa=Europe/Berlin|’vm-received’ Q ‘digits/at’ kMitalia=Europe/Rome|’vm-received’ Q ‘digit/at’ HMP

Conclusión

22

Page 23: Asterisk

En este informe hemos aprendido a instalar un servidor Asterisk en Linux, con las herramientas básicas. Para que este trabaje como corresponde.

23