Integrar features.conf con la aplicacion Dial de Asterisk

Actualizado 11 Septiembre 2009

Ya hemos visto como configurar el archivo features conf y como se definen el parquro de las llamadas y otras aplicaciones. Hoy veremos como integrar esas funcionalidades en el dialplan de asterisk usando la aplicación Dial.

Antes que nada echamos una miradita a su sintaxis:

  Dial(Technology/resource[&Tech2/resource2...][,timeout][,options][,URL]):

Dial: el nombre de la aplicación que nos permite en el dialplan hacer una llamada

Technology: el protocolo o la tecnología usada para hacer la llamada (ej: SIP, IAX2)

resource: el recurso usado para hacer la llamada o el numero de extensión que vamos a llamar.

timeout: define los segundos dentro de los cuales la llamada tiene que ser contestada.

options: son las opciones que podemos añadir a la aplicación

URL: para enviar una dirección web a la extensión llamada (si dicha extensión tiene la capacidad para recibirla)

Algunos ejemplos (que van configurados en extensions.conf):

exten => 2000,1,Dial(SIP/2000,30)

exten => 2000,2,Hangup

si marcamos la extensión 2000 asterisk llamará dicha extensión usando el protocolo SIP, esperará 30 segundos. Si la extensión  2000 no contesta antes de los treinta segundos, asterisk procesara la línea siguiente del dialplan, es decir terminará la llamada.

exten => 00573001000000,1,Dial(SIP/justvoip/00573001000000,45)

exten => 00573001000000,2,Hangup

En este caso si desde nuestro SoftPhone o IP Phone conectados a nuestra centralita marcamos el numero 0057300100000, asterisk llamará dicho numero usando un proveedor VoIP (en este caso especifico Justvoip). Esperará 45 segundos una respuesta y si nadie contesta terminará la llamada. Como tecnología hemos indicado SIP porque justvoip usa solo este tipo de protocolo. En el caso de proveedores que utilicen el protocolo IAX2 sería:

exten => 00573001000000,1,Dial(IAX2/justvoip/00573001000000,45)

exten => 00573001000000,2,Hangup

Bueno, no vamos a detenernos más tiempo en todas las posibles formas de usar la aplicación Dial. Quizá en un próximo articulo profundizaremos el tema. Ahora los que nos interesa es ver como poner en marcha las funcionalidades definidas en el archivo features.conf

Lo haremos incluyendo algunas opciones en la aplicación Dial.

exten => 2000,1,Dial(SIP/2000,30,hH)

Como pueden ver en las opciones de la aplicación Dial hemos puesto dos opciones.

h: permite al llamado colgar la llamada usando la tecla *

H: permite al llamante colgar la llamada usando la tecla *

exten => 2000,1,Dial(SIP/2000,30,kK)

k: permite al llamado parquear la llamada digitando la secuencia de teclas definida en features.conf

K: permite al llamante parquear la llamada digitando la secuencia de teclas definida en features.conf

exten => 2000,1,Dial(SIP/2000,30,tT)

t: permite al llamado transferir la llamada digitando la secuencia de teclas definida en features.conf

T: permite al llamante transferir la llamada digitando la secuencia de teclas definida en features.conf

exten => 2000,1,Dial(SIP/2000,30,wW)

w: permite al llamado empezar la grabación de la llamada digitando la secuencia de teclas definida en features.conf. Asterisk, en este caso, creará dos archivos audio, uno por cada interlocutor.

W: permite al llamante empezar la grabación de la llamada digitando la secuencia de teclas definida en features.conf. Asterisk, en este caso, creará dos archivos audio, uno por cada interlocutor.

exten => 2000,1,Dial(SIP/2000,30,xX)

x: permite al llamado empezar la grabación de la llamada digitando la secuencia de teclas definida en features.conf. La diferencia con las opciones w y W es que en este caso los dos canales (llamante y llamado) se grabaran en un único archivo audio

X: lo mismo de arriba pero para el llamante.

Si queremos, por ejemplo, activar todas estas opciones a la vez, nuestra aplicación Dial aparecerá de esta forma:

exten => 2000,1,Dial(SIP/2000,30,hHkKtTwWxX)

Vamos a ver que pasa en nuestra consola cuando vamos a utilizar estas funciones.

asterisk -rvvvvvvvvvvvvvvv

CLI>

-- SIP/2100-0091d880 answered SIP/2300-009292e0
    -- Stopped music on hold on SIP/2300-009292e0
  == Extension Changed 2100[internal] new state InUse for Notify User 2000
[Nov  6 10:44:28] DTMF[30238]: channel.c:2628 __ast_read: DTMF begin '#' received on SIP/2100-0091d880
[Nov  6 10:44:28] DTMF[30238]: channel.c:2638 __ast_read: DTMF begin passthrough '#' on SIP/2100-0091d880
[Nov  6 10:44:28] DTMF[30238]: channel.c:2546 __ast_read: DTMF end '#' received on SIP/2100-0091d880, duration 100 ms
[Nov  6 10:44:28] DTMF[30238]: channel.c:2596 __ast_read: DTMF end accepted with begin '#' on SIP/2100-0091d880
[Nov  6 10:44:28] DTMF[30238]: channel.c:2612 __ast_read: DTMF end passthrough '#' on SIP/2100-0091d880
    -- Started music on hold, class 'default', on SIP/2300-009292e0
    -- <SIP/2100-0091d880> Playing 'pbx-transfer.gsm' (language 'it')
[Nov  6 10:44:30] DTMF[30238]: channel.c:2628 __ast_read: DTMF begin '7' received on SIP/2100-0091d880
[Nov  6 10:44:30] DTMF[30238]: channel.c:2632 __ast_read: DTMF begin ignored '7' on SIP/2100-0091d880
[Nov  6 10:44:30] DTMF[30238]: channel.c:2546 __ast_read: DTMF end '7' received on SIP/2100-0091d880, duration 100 ms
[Nov  6 10:44:30] DTMF[30238]: channel.c:2612 __ast_read: DTMF end passthrough '7' on SIP/2100-0091d880
[Nov  6 10:44:31] DTMF[30238]: channel.c:2628 __ast_read: DTMF begin '0' received on SIP/2100-0091d880
[Nov  6 10:44:31] DTMF[30238]: channel.c:2632 __ast_read: DTMF begin ignored '0' on SIP/2100-0091d880
[Nov  6 10:44:31] DTMF[30238]: channel.c:2546 __ast_read: DTMF end '0' received on SIP/2100-0091d880, duration 120 ms
[Nov  6 10:44:31] DTMF[30238]: channel.c:2612 __ast_read: DTMF end passthrough '0' on SIP/2100-0091d880
[Nov  6 10:44:32] DTMF[30238]: channel.c:2628 __ast_read: DTMF begin '0' received on SIP/2100-0091d880
[Nov  6 10:44:32] DTMF[30238]: channel.c:2632 __ast_read: DTMF begin ignored '0' on SIP/2100-0091d880
[Nov  6 10:44:32] DTMF[30238]: channel.c:2546 __ast_read: DTMF end '0' received on SIP/2100-0091d880, duration 120 ms
[Nov  6 10:44:32] DTMF[30238]: channel.c:2612 __ast_read: DTMF end passthrough '0' on SIP/2100-0091d880
    -- Stopped music on hold on SIP/2300-009292e0
    -- Started music on hold, class 'default', on SIP/2300-009292e0
  == Parked SIP/2300-009292e0 on 701@parkedcalls. Will timeout back to extension [phones] 2100, 1 in 45 seconds
   -- <SIP/2100-0091d880> Playing 'digits/7.gsm' (language 'it')
    -- <SIP/2100-0091d880> Playing 'digits/0.gsm' (language 'it')
    -- <SIP/2100-0091d880> Playing 'digits/1.gsm' (language 'it')
    -- Added extension '701' priority 1 to parkedcalls (0x8230a0)
  == Extension Changed 701[internal] new state InUse for Notify User 2100
  == Extension Changed 701[internal] new state InUse for Notify User 2000

En este ejemplo la llamada de la extensión 2300 a la extensión 2100 viene contestada. Desde la extensión 2100 hundimos la tecla numeral # y luego parqueamos la llamada digitando la secuencia 700 (como configurado en el archivo features.conf. La voz de asterisk nos dirá en que posición ha sido parqueada la llamada (en este caso la extensión 701). La llamada quedará en espera para 45 segundos y luego asterisk devolverá la llamada a la extensión 2100. Como pueden ver en las dos ultimas líneas, asterisk notificará también a las extensiones 2100 y 2000 que la extensión 701 está en uso. Esto porque en los softphone de estas dos extensiones hemos añadido, en la lista de contactos, dicha extensión.

    -- SIP/2100-008e3990 answered SIP/2300-009292e0
    -- Stopped music on hold on SIP/2300-009292e0
  == Extension Changed 2100[internal] new state InUse for Notify User 2000
[Nov  6 10:55:22] DTMF[30249]: channel.c:2628 __ast_read: DTMF begin '*' received on SIP/2300-009292e0
[Nov  6 10:55:22] DTMF[30249]: channel.c:2638 __ast_read: DTMF begin passthrough '*' on SIP/2300-009292e0
[Nov  6 10:55:22] DTMF[30249]: channel.c:2546 __ast_read: DTMF end '*' received on SIP/2300-009292e0, duration 100 ms
[Nov  6 10:55:22] DTMF[30249]: channel.c:2596 __ast_read: DTMF end accepted with begin '*' on SIP/2300-009292e0
[Nov  6 10:55:22] DTMF[30249]: channel.c:2612 __ast_read: DTMF end passthrough '*' on SIP/2300-009292e0
[Nov  6 10:55:22] DTMF[30249]: channel.c:2628 __ast_read: DTMF begin '2' received on SIP/2300-009292e0
[Nov  6 10:55:22] DTMF[30249]: channel.c:2638 __ast_read: DTMF begin passthrough '2' on SIP/2300-009292e0
[Nov  6 10:55:23] DTMF[30249]: channel.c:2546 __ast_read: DTMF end '2' received on SIP/2300-009292e0, duration 100 ms
[Nov  6 10:55:23] DTMF[30249]: channel.c:2596 __ast_read: DTMF end accepted with begin '2' on SIP/2300-009292e0
[Nov  6 10:55:23] DTMF[30249]: channel.c:2612 __ast_read: DTMF end passthrough '2' on SIP/2300-009292e0
    -- <SIP/2300-009292e0> Playing 'beep.ulaw' (language 'it')
    -- User hit '*2' to record call. filename: auto-1225986923-2300-2100
  == Begin MixMonitor Recording SIP/2100-008e3990
[Nov  6 10:55:26] DTMF[30249]: channel.c:2628 __ast_read: DTMF begin '*' received on SIP/2300-009292e0
[Nov  6 10:55:26] DTMF[30249]: channel.c:2638 __ast_read: DTMF begin passthrough '*' on SIP/2300-009292e0
[Nov  6 10:55:26] DTMF[30249]: channel.c:2546 __ast_read: DTMF end '*' received on SIP/2300-009292e0, duration 100 ms
[Nov  6 10:55:26] DTMF[30249]: channel.c:2596 __ast_read: DTMF end accepted with begin '*' on SIP/2300-009292e0
[Nov  6 10:55:26] DTMF[30249]: channel.c:2612 __ast_read: DTMF end passthrough '*' on SIP/2300-009292e0
[Nov  6 10:55:27] DTMF[30249]: channel.c:2628 __ast_read: DTMF begin '2' received on SIP/2300-009292e0
[Nov  6 10:55:27] DTMF[30249]: channel.c:2638 __ast_read: DTMF begin passthrough '2' on SIP/2300-009292e0
[Nov  6 10:55:27] DTMF[30249]: channel.c:2546 __ast_read: DTMF end '2' received on SIP/2300-009292e0, duration 120 ms
[Nov  6 10:55:27] DTMF[30249]: channel.c:2596 __ast_read: DTMF end accepted with begin '2' on SIP/2300-009292e0
[Nov  6 10:55:27] DTMF[30249]: channel.c:2612 __ast_read: DTMF end passthrough '2' on SIP/2300-009292e0
    -- <SIP/2300-009292e0> Playing 'beep.ulaw' (language 'it')
   -- User hit '*2' to stop recording call.
  == End MixMonitor Recording SIP/2100-008e3990

En este ejemplo la extensión 2300 llama la extensión 2100. La llamada viene contestada. Tecleando *2 desde la extensión 2300 empezaremos a grabar la llamada en la modalidad MixMonitor, es decir en un único archivo audio. Tecleando *2 otra vez la grabación terminará.

Se pueden hacer muchos más ejemplos pero creo que con esto ya pueden tener una idea del uso de la funcionalidades configuradas en el archivo features.conf con la aplicación Dial.

Que les parece?

Vota el Articulo: 

Sin votos (todavía)
Evalúa la calidad del articulo

4 comentarios

duda

Hola buen dia mira este es mi DIAL

exten => s,3,Dial(Sip/${ARG1},${RINGTIME})

pero tengo problemas en cuanto a transferir llamadas de un tel analogico ya configure el features pero en si no se si requiera algo mas el el extensions .conf

esta es la extension analogica

exten => 6602,1,Dial(local,6602,1,)
pero la verdad no se como integrar mi features.conf al extensions.conf

Re: duda

Eso me huele a trixbox o otro tipo de Asterisk enlatado.

Si asi fuera deberías mirar en la interfaz grafica como se activa la trasferencia.

Saludos

 

features.conf

Primero agradecer la guía, me ha sido bastante útil. Pero podrías agregar la configuración de tu archivo features.conf.
Te lo agradecería una enormidad.
Saludos,
Juan

Suscribirse a Comentarios de "Integrar features.conf con la aplicacion Dial de Asterisk" Suscribirse a VozToVoice - Todos los comentarios