Foro VoIP - Voz sobre IP - Asterisk y SER - SIP IAX y H.323

3CX VoIP- Centralita telefonica (PBX) para Windows
3CX Centralita Telefónica para Windows
Descarga versión gratuita

BUSCAR

  • Protocolos VoIP
  •    

  • Teléfonos
  •    

  • QoS (Quality of Service)
  •    

  • Codecs
  •    

  • Asterisk
  •    

  • Centralita 3CX
  •    

  • SER (Sip Express Router)
  •    

  • Utilidades
  •    

     

      Asterisk PBX  

     
        Introducción   Instalacion linux   Instalación windows   Primeros pasos   sip.conf   extensions.conf   voicemail.conf    
     

     
    Configuración del archivo extensions.conf (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 []
    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. Nunca debería suceder que una extensión se quede sin cosas que hacer como explicaremos posteriormente.
    - 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 mayusculas para diferenciarlas posteriormente.

    Resto de Contextos []

    Esto es lo más importente de este fichero. Vamos a indicar ahora como crear un contexto especifico y asignar un plan de numeración. Todas las lineas de un determinado contexto tienen el mismo formato:

    exten =>  extension , prioridad, Comando(parametros)

    La extensión hace referencia al numero marcado
    La prioridad al orden en que se ejecutan las instrucciones. Primero se ejecuta la de prioridad 1, luego la 2 y sucesivamente
    El Comando hace referencia a la acción a ejecutar

    Vamos a ir viendo unos ejemplos para ir aprendiendo los comandos

    Ejemplo 1: Colgar la linea
    exten => 333,1,Hangup ; indica que cuando alguien llame al 333 saltará la prioridad 1 y el sistema colgará la llamada

    Ejemplo 2 : Llamar a el usuario SIP 3000 y que salte el contestador si no contesta
    exten => 3000,1,Dial(SIP/3000,30,Ttm) ; intenta llamar al usuario 3000 de sip que tiene que estar definido en sip.conf con ese contexto
    exten => 3000,2,Hangup ; cuando acaba la llamada cuelga
    exten => 3000,102,Voicemail(3000) ; La prioridad 102 significa que el usuario no estaba conectado y salta el contestador al buzon 3000
    exten => 3000,103,Hangup ; se cuelga después de dejar el mensaje

    En este caso al llamar a la extension 3000 usuamos el comando Dial (destino, tiempo de timeout, opciones)
    El destino es el usuario 3000 del archivo sip.conf, 30 segundos de timeout. El usuario 3000 deberia existir en sip.conf
    las opciones hacen referencia a opciones del comando dial:
    la "T" permite al usuario llamante transferir la llamada pulsando #
    la "t" permite al usuario llamado transferir la llamada pulsando #
    la "m" indica que vamos a oir una musica especial mientras esperamos a que el otro conteste: Podeís probar a quitarla.

    Si el usuario 3000 no está conectado salta a la prioridad +101 (en nuestro caso a la 102=1+101 ya que estabamos en la prioridad 1) y hacemos que salte el contestador para dejar un mensaje.

    Es importante que por cada rama siempre se cierre el camino y se cuelgue la llamada con un Hangup

    Ejemplo 3 : Comprobación de latencia y eco
    exten => 600,1,Playback(demo-echotest) ; Se pone el sonido de que es una demo de eco
    exten => 600,2,Echo ; Se ejecuta el test de eco
    exten => 600,3,Playback(demo-echodone) ; Se repite lo que dijimos
    exten => 600,4,Hangup ; Se cuelga

    En este caso llamando al 600 nos va a repetir lo mismo que nosotros dijimos. Podremos comprobar la latencia del sistema.

    Ejemplo 4 : Extensión start

    exten => s,1,Wait,1 ; Esperamos un segundo
    exten => s,2,Answer ; respondemos. EL Asterisk coge la llamada
    exten => s,3,DigitTimeout,5 ; Ponemos Digit Timeout a 5 segundos
    exten => s,4,ResponseTimeout,10 ; Ponemos Response Timeout a 10 segundos
    exten => s,5,BackGround(demo-congrats) ; Ejecutamos un archivo de voz
    exten => s,6,hangup ; Colgamos
    exten => 1000,1,Goto(micontexto,s,1) ; Al llamar al 1000 vamos a la extensión s con prioridad 1 del contexto "micontexto"

    En este caso presentamos la extensión start s que es la que coge las llamadas cuando se esta en ese contexto pero no se sabe la extensión. También se puede entrar desde otra extensión como en este caso marcando la extensión 1000. Con Goto podemos ir al contexto, extensión y prioridad que queramos.

    Ejemplo 5 : LLamar a un proveedor de Voz IP

    exten => _340.,1,Dial(SIP/${EXTEN:3}@Proveedorsip,90,Tt)
    exten => _340.,2,hangup ; Colgamos

    exten => _20.,1,Dial(SIP/${EXTEN:2}@Proveedorsip,90,Tt)
    exten => _20.,2,hangup ; Colgamos


    En este caso lo que hacemos es que siempre que marquemos el 340 seguido de cualquier numero (el 340 como perfijo) llamaremos a una extension SIP. Por ejemplo en el primer caso si marcamos al 340600600 llamaremos al 600600 a la dirección IP del "proveedorsip" definido en sip.conf. (EXTEN:3 significa que quitamos los tres primeros numeros)

    En el segundo caso si marcamos 2060600 también estaremos llamando al mismo numero 600600 del "proveedorsip" (EXTEN:2)

    En los casos anteriores el . sustituye a cualquier caracter pero podíamos haber utilizado también
    X - Acepta un numero de 0 al 9
    Z - Acepta un numero de 1 al 9
    N - Acepta un numero de 2 al 9
    [1,5-7] - Acepta el 1, el 5, el 6 o el 7

    exten => _20XX,1,Dial(SIP/${EXTEN:2}@Proveedorsip,90,Tt) ; Deberiamos marcar 20 y dos numeros (no valen caracteres)
    exten => _20ZZ.,1,Dial(SIP/${EXTEN:2}@Proveedorsip,90,Tt) ; Deberiamos marcar 20, dos numeros del 1 al 9 y cualquier cosa
    exten => _20[1-3]..,1,Dial(SIP/${EXTEN:2}@Proveedorsip,90,Tt) ; Deberiamos marcar 20, un numero del 1 al 3 y cualquier cosa

     

     
     
     
    English   |   Acerca de    |   Contacto   |   Colaborar   |   Publicidad