Directivas include & #include

109 views
Skip to first unread message

Raúl G

unread,
Jul 2, 2018, 3:51:19 AM7/2/18
to asterisk-es
Hola a todos,

Antes de nada agradeceros vuestro tiempo.

No soy capaz de hacer funcionar un #include filename dentro de un contexto "secundario", es decir:

[context_PJSIP];contexto principal para las extensiones PJSIP
include => context_join

[context_IAX2];contexto principal para las extensiones IAX2
include => context_join

[context_join]
#include filename


No reconoce las extensiones configuradas en el fichero incluido, salvo que este fichero sea incluido en los contextos principales o se envíe el canal a la extensión de este fichero con GoTo desde "[context_join]".

¿Alguna recomendación?

Angel Elena

unread,
Jul 2, 2018, 3:56:20 AM7/2/18
to aster...@googlegroups.com

si no recuerdo mal, lo debes de poner al final de fichero y sin un contexto.

prueba de ponerlo al final y quitando [context_join]


saludos

--------------------------------
Ángel Elena Medina       _o)
cr...@craem.net          / \\
http://blog.craem.net  _(___V
@craem_
www.linkedin.com/in/angel-elena-medina
--------------------------------
Zarafa Webapp.

-----Mensaje original-----
De:    Raúl G <raulg...@gmail.com>
Enviado:    Lun 02-07-2018 09:51
Asunto:    [Asterisk-ES] Directivas include & #include
Para:    asterisk-es <aster...@googlegroups.com>;

> --
> Este email pertenece a la lista de Asterisk-ES (http://www.asterisk-es.org
> <http://www.asterisk-es.org> )
> Normas de la lista Asterisk-ES:
> http://comunidad.asterisk-es.org/index.php?title=Lista:normas-asterisk-es
> <http://comunidad.asterisk-es.org/index.php?title=Lista:normas-asterisk-es>
> ---
> Has recibido este mensaje porque estás suscrito al grupo "asterisk-es" de
> Grupos de Google.
> Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes,
> envía un correo electrónico a asterisk-es...@googlegroups.com
> <mailto:asterisk-es...@googlegroups.com> .
> Para publicar en este grupo, envía un correo electrónico a
> aster...@googlegroups.com <mailto:aster...@googlegroups.com> .
> Visita este grupo en https://groups.google.com/group/asterisk-es.
> Para acceder a más opciones, visita https://groups.google.com/d/optout.
>

Raúl G

unread,
Jul 3, 2018, 1:09:55 AM7/3/18
to asterisk-es
Muchas gracias por tu respuesta.

Tengo entendido que no es posible establecer una directiva sin contexto, ya que el final de un contexto es el inicio de otro.

El problema reside en que Asterisk a la hora de buscar una conicidencia busca en el contexto principal, después en los include de contexto y por último en los include de ficheros, ¿cómo se podría hacer para que tanto PJSIP como IAX2 que tienen diferentes contextos principales puedan ver un fichero adicional del dialplan sin tener que incluirlo dos veces?

Saludos¡

Angel Elena

unread,
Jul 3, 2018, 2:49:17 PM7/3/18
to aster...@googlegroups.com

hmmm..... he estado revisando algunos de los asterisk míos:


Tengo varios includes :

[external_callerid_xxxxx]
exten => s,1,Set(NUM_OUT=${CALLERID(num)})
...
...
exten => s,n,Set(CALLERID(all)=${NUM_OUT} <${NUM_OUT}>)
exten => s,n,Return

#include extensions_x1.conf
#include extensions_x2.conf
#include extensions_x3.conf
#include extensions_x4.conf


y va perfecto



--------------------------------
Ángel Elena Medina       _o)
cr...@craem.net          / \\
http://blog.craem.net  _(___V
@craem_
www.linkedin.com/in/angel-elena-medina
--------------------------------
Zarafa Webapp.

-----Mensaje original-----
De:    Raúl G <raulg...@gmail.com>

Enviado:    Mar 03-07-2018 07:10
Asunto:    Re: [Asterisk-ES] Directivas include & #include
Para:    asterisk-es <aster...@googlegroups.com>;

> Muchas gracias por tu respuesta.
>
> Tengo entendido que no es posible establecer una directiva sin contexto, ya que
> el final de un contexto es el inicio de otro.
>
> El problema reside en que Asterisk a la hora de buscar una conicidencia busca
> en el contexto principal, después en los include de contexto y por último en
> los include de ficheros, ¿cómo se podría hacer para que tanto PJSIP como IAX2
> que tienen diferentes contextos principales puedan ver un fichero adicional del
> dialplan sin tener que incluirlo dos veces?
>
> Saludos¡
>
> El lunes, 2 de julio de 2018, 9:56:20 (UTC+2), craem escribió:
>
> si no recuerdo mal, lo debes de poner al final de fichero y sin un contexto.
>
> prueba de ponerlo al final y quitando [context_join]
>
>
> saludos
>
> --------------------------------
> Ángel Elena Medina       _o)
> cr...@craem.net          / \\


> > Para publicar en este grupo, envía un correo electrónico a
> > aster...@googlegroups.com <mailto:aster...@googlegroups.com> .
> > Visita este grupo en https://groups.google.com/group/asterisk-es.
> > Para acceder a más opciones, visita https://groups.google.com/d/optout.
> >
>

> --
> Este email pertenece a la lista de Asterisk-ES (http://www.asterisk-es.org
> <http://www.asterisk-es.org> )
> Normas de la lista Asterisk-ES:
> http://comunidad.asterisk-es.org/index.php?title=Lista:normas-asterisk-es
> <http://comunidad.asterisk-es.org/index.php?title=Lista:normas-asterisk-es>
> ---
> Has recibido este mensaje porque estás suscrito al grupo "asterisk-es" de
> Grupos de Google.
> Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes,
> envía un correo electrónico a asterisk-es...@googlegroups.com

Raúl G

unread,
Jul 4, 2018, 1:56:56 AM7/4/18
to asterisk-es
Sí, eso funciona correctamente, pero el problema está en el siguiente ejemplo, Asterisk no lee correctamente el fichero "OtherExtensions_2.conf", si lo cambio de orden y lo incluyo antes que el "OtherExtensions_1.conf" funciona, pero si lo dejo tal y como está me aparece como ruta inexistente, como si no existiera "OtherExtensions_2.conf":

---pjsip.conf----
...
[100]
type=endpoint
transport=transport-udp
context=context_1
...

---extensions.conf----
[context_1]
include => outbound
...

[outbound]
#include OtherExtensions_1.conf
#include OtherExtensions_2.conf


> > Para publicar en este grupo, envía un correo electrónico a
> > aster...@googlegroups.com <mailto:aster...@googlegroups.com> .
> > Visita este grupo en https://groups.google.com/group/asterisk-es.
> > Para acceder a más opciones, visita https://groups.google.com/d/optout.
> >
>
> --
> Este email pertenece a la lista de Asterisk-ES (http://www.asterisk-es.org
> <http://www.asterisk-es.org> )
> Normas de la lista Asterisk-ES:
> http://comunidad.asterisk-es.org/index.php?title=Lista:normas-asterisk-es
> <http://comunidad.asterisk-es.org/index.php?title=Lista:normas-asterisk-es>
> ---
> Has recibido este mensaje porque estás suscrito al grupo "asterisk-es" de
> Grupos de Google.
> Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes,
> envía un correo electrónico a asterisk-es...@googlegroups.com

Carlos Andrés Tapasco Viera

unread,
Jul 4, 2018, 1:09:25 PM7/4/18
to aster...@googlegroups.com
Esos include funcionan, podría ser que el primer archivo tiene un error de sintaxis o algo que no deja leer el segundo. Sería bueno ver el contenido para intentar reproducir el fallo.


> > Para publicar en este grupo, envía un correo electrónico a
> > aster...@googlegroups.com <mailto:aster...@googlegroups.com> .
> > Visita este grupo en https://groups.google.com/group/asterisk-es.
> > Para acceder a más opciones, visita https://groups.google.com/d/optout.
> >
>
> --
> Este email pertenece a la lista de Asterisk-ES (http://www.asterisk-es.org
> <http://www.asterisk-es.org> )
> Normas de la lista Asterisk-ES:
> http://comunidad.asterisk-es.org/index.php?title=Lista:normas-asterisk-es
> <http://comunidad.asterisk-es.org/index.php?title=Lista:normas-asterisk-es>
> ---
> Has recibido este mensaje porque estás suscrito al grupo "asterisk-es" de
> Grupos de Google.
> Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes,
> envía un correo electrónico a asterisk-es...@googlegroups.com


> Para publicar en este grupo, envía un correo electrónico a
> aster...@googlegroups.com <mailto:aster...@googlegroups.com> .
> Visita este grupo en https://groups.google.com/group/asterisk-es.
> Para acceder a más opciones, visita https://groups.google.com/d/optout.
>

--
Este email pertenece a la lista de Asterisk-ES (http://www.asterisk-es.org)
---
Has recibido este mensaje porque estás suscrito al grupo "asterisk-es" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a asterisk-es...@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a aster...@googlegroups.com.

Raúl G

unread,
Jul 6, 2018, 1:13:36 AM7/6/18
to asterisk-es
Hola krtapas,

A continuación te paso los includes de ejemplo donde he reproducido el mismo error.
En este caso si marcas "1" te llevará a la IVR, y para que te lleve a Dialplan/Data.conf deberías de marcar "2288", pero la realidad es que te salta error de ruta hacia "2288" inexistente, y si comentas "#include Dialplan/IVR.conf" te funciona sin problemas.


**************** extensions.conf ****************
[general]
[globals]
[default]
exten => _X.,1,Hangup()

[outbound]
#include Dialplan/IVR.conf
#include Dialplan/Data.conf

exten => 1,1,NoOp()
 same => n,Goto(ivr,s,1)
 same => n,Hangup()

**************** Dialplan/IVR.conf ****************
[ivr]
exten => s,1,NoOp()
 same => n,GotoIfTime(07:00-15:00&18:00-19:00,Mon-Fri&Sat,*,*?Enter:Out)
 same => n,Hangup()
 same => n(Out),Playback(at-tone-time-exactly)
 same => n,Hangup()
 same => n(Enter),Set(Count=0)
 same => n(start),Background(vm-Urgent)
 same => n,WaitExten(10)

exten => 1,1,NoOp()
 same => n,Playback(demo-congrats)
 same => n,Hangup()

exten => 2,1,NoOp()
 same => n,Playback(vm-whichbox)
 same => n,Hangup()

exten => t,1,NoOp()
 same => n,GotoIf($[${Count}>=1]?h,1)
 same => n,Playback(time)
 same => n,Goto(try,1)
 same => n,Hancup()

exten => i,1,NoOp()
 same => n,GotoIf($[${Count}>=1]?h,1)
 same => n,Playback(invalid)
 same => n,Goto(try,1)
 same => n,Hangup()

exten => try,1,NoOp()
 same => n,Set(Count=Count+1)
 same => n,Goto(s,start)
 same => n,Hangup()

exten => h,1,NoOp()
 same => n,Playback(goodbye)
 same => n,Hangup()

**************** Dialplan/Data.conf ****************
exten => 2288,1,NoOp()
 same => n,Answer()
 same => n,NoOp("Set name of Channel")
 same => n,Set(Device=${CUT(CHANNEL,-,1)})

 same => n,NoOp()
 same => n,GotoIf($[${DB_EXISTS(Queues/${Device})}]?exists:add)
 same => n,Hangup()

 same => n(add),Set(DB(Queues/${Device})=1)
 same => n,AddQueueMember(q1,${Device})
 same => n,Playback(added)
 same => n,Hangup()

 same => n(exists),GotoIf($[${DB(Queues/${Device})}=1]?pause:unpause)
 same => n,Hangup()
 same => n(pause),Set(DB(Queues/${Device})=0)
 same => n,PauseQueueMember(q1,${Device})
 same => n,Playback(agent-user)
 same => n,Hangup()

 same => n(unpause),Set(DB(Queues/${Device})=1)
 same => n,UnpauseQueueMember(q1,${Device})
 same => n,Playback(demo-nogo)
 same => n,Hangup()


> > Para publicar en este grupo, envía un correo electrónico a
> > aster...@googlegroups.com <mailto:aster...@googlegroups.com> .
> > Visita este grupo en https://groups.google.com/group/asterisk-es.
> > Para acceder a más opciones, visita https://groups.google.com/d/optout.
> >
>
> --
> Este email pertenece a la lista de Asterisk-ES (http://www.asterisk-es.org
> <http://www.asterisk-es.org> )
> Normas de la lista Asterisk-ES:
> http://comunidad.asterisk-es.org/index.php?title=Lista:normas-asterisk-es
> <http://comunidad.asterisk-es.org/index.php?title=Lista:normas-asterisk-es>
> ---
> Has recibido este mensaje porque estás suscrito al grupo "asterisk-es" de
> Grupos de Google.
> Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes,
> envía un correo electrónico a asterisk-es...@googlegroups.com


> Para publicar en este grupo, envía un correo electrónico a
> aster...@googlegroups.com <mailto:aster...@googlegroups.com> .
> Visita este grupo en https://groups.google.com/group/asterisk-es.
> Para acceder a más opciones, visita https://groups.google.com/d/optout.
>

Carlos Andrés Tapasco Viera

unread,
Jul 20, 2018, 2:52:17 PM7/20/18
to aster...@googlegroups.com
Hola Raul,

Perdona la demora en contestar pero no le hice seguimiento a tu hilo y me ocupé en diversas labores. El día de hoy he montado tu código en una central que uso para dictar clase y he reproducido el fallo. Efectivamente, se presenta el fallo que indicas. Te indicaré los hallazgos:
  • En primera instancia, validamos que tenemos incluidos ambos archivos Dialplan/IVR.conf y Dialplan/Data.conf en el contexto outbound. La extensión de prueba tiene contexto context_1 como lo indicaste en el ejemplo y se le hace el include del contexto outbound.
[context_1]
include => outbound
;
[outbound]
#include Dialplan/IVR.conf
#include Dialplan/Data.conf
  • Al recargar el dialplan y ver que no hay errores, investigamos qué muestra el contexto outbound. La salida muestra que solo está el salto incondicional al contexto IVR pero no da muestra de la extensión 2288.
asterinstruc*CLI> dialplan show outbound
[ Context 'outbound' created by 'pbx_config' ]
  '1' =>            1. NoOp()                                     [pbx_config]
                       2. Goto(ivr,s,1)                              [pbx_config]
                       3. Hangup()                                   [pbx_config]
  • Al revisar el contenido del contexto ivr tenemos que este incluye la extensión 2288 que deseamos alcanzar. Debido a que la extensión tiene contexto context_1, no puede acceder directamente al contenido de ivr, en el cual se ha incluido la extensión 2288 por el orden en que cargaste los archivos incluidos y dado que los contextos en Asterisk no tienen apertura ni cierre y se lee de forma secuencial.
asterinstruc*CLI> dialplan show ivr
[ Context 'ivr' created by 'pbx_config' ]
  '1' =>            1. NoOp()                                     [pbx_config]
                    2. Playback(demo-congrats)                    [pbx_config]
                    3. Hangup()                                   [pbx_config]
  '2' =>            1. NoOp()                                     [pbx_config]
                    2. Playback(vm-whichbox)                      [pbx_config]
                    3. Hangup()                                   [pbx_config]
  '2288' =>         1. NoOp()                                     [pbx_config]
                    2. Answer()                                   [pbx_config]
                    3. NoOp("Set name of Channel")                [pbx_config]
                    4. Set(Device=${CUT(CHANNEL,-,1)})            [pbx_config]
                    5. NoOp()                                     [pbx_config]
                    6. GotoIf($[${DB_EXISTS(Queues/${Device})}]?exists:add) [pbx_config]
                    7. Hangup()
  • Te sugiero ser más ordenado en la construcción de tu plan de marcación para evitar problemas como estos, que te pueden partir la cabeza cuando el código va creciendo en funcionalidades.
  • Cuando incluyas un archivo no dejes código volando, sin un contexto asociado, porque luego por cualquier motivo, se puede incluir esa cadena en un contexto no deseado, como ha sucedido acá.
  • En el archivo Dialplan/Data.conf agrégale un contexto a esa porción de código para que no se agregue a otro contexto de forma errada.
[data]
exten => 2288,1,NoOp()
 same => n,Answer()
 same => n,NoOp("Set name of Channel")
 same => n,Set(Device=${CUT(CHANNEL,-,1)})
  • Incluye los archivos al final del general, para tener más orden de tus archivos incluidos. No tenerlos regados por el código, ya que causarán dificultades al querer ubicarlos para editarlos cuando las funcionalidades incrementen.
[general]
static=yes
writeprotect=no
clearglobalvars=no
;
#include Dialplan/IVR.conf
#include Dialplan/Data.conf
;
  • En lugar de incluir archivos en el contexto outbound, incluye los contextos que deseas usar de dichos archivos
[outbound]
include => data
;
exten => 1,1,NoOp()
 same => n,Goto(ivr,s,1)
 same => n,Hangup()
  • Con estos cambios recargamos el plan de marcación y validamos la salida del contexto outbound.
asterinstruc*CLI> dialplan show outbound
[ Context 'outbound' created by 'pbx_config' ]
  '1' =>            1. NoOp()                                     [pbx_config]
                    2. Goto(ivr,s,1)                              [pbx_config]
                    3. Hangup()                                   [pbx_config]
  Include =>        'data'                                        [pbx_config]
  • Validamos también que la extensión 2288 está disponible para la marcación desde la extensión con contexto context_1:
asterinstruc*CLI> dialplan show 2288@outbound
[ Included context 'data' created by 'pbx_config' ]
  '2288' =>         1. NoOp()                                     [pbx_config]
                    2. Answer()                                   [pbx_config]
                    3. NoOp("Set name of Channel")                [pbx_config]
                    4. Set(Device=${CUT(CHANNEL,-,1)})            [pbx_config]
                    5. NoOp()                                     [pbx_config]
                    6. GotoIf($[${DB_EXISTS(Queues/${Device})}]?exists:add) [pbx_config]
                    7. Hangup()

Realiza los cambios, prueba y me cuentas si te fue útil esta información.



> > Para publicar en este grupo, envía un correo electrónico a
> > aster...@googlegroups.com <mailto:aster...@googlegroups.com> .
> > Visita este grupo en https://groups.google.com/group/asterisk-es.
> > Para acceder a más opciones, visita https://groups.google.com/d/optout.
> >
>
> --
> Este email pertenece a la lista de Asterisk-ES (http://www.asterisk-es.org
> <http://www.asterisk-es.org> )
> Normas de la lista Asterisk-ES:
> http://comunidad.asterisk-es.org/index.php?title=Lista:normas-asterisk-es
> <http://comunidad.asterisk-es.org/index.php?title=Lista:normas-asterisk-es>
> ---
> Has recibido este mensaje porque estás suscrito al grupo "asterisk-es" de
> Grupos de Google.
> Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes,
> envía un correo electrónico a asterisk-es...@googlegroups.com


> Para publicar en este grupo, envía un correo electrónico a
> aster...@googlegroups.com <mailto:aster...@googlegroups.com> .
> Visita este grupo en https://groups.google.com/group/asterisk-es.
> Para acceder a más opciones, visita https://groups.google.com/d/optout.
>

--
Este email pertenece a la lista de Asterisk-ES (http://www.asterisk-es.org)
Normas de la lista Asterisk-ES: http://comunidad.asterisk-es.org/index.php?title=Lista:normas-asterisk-es
---
Has recibido este mensaje porque estás suscrito al grupo "asterisk-es" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a asterisk-es...@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a aster...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/asterisk-es.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Raúl González García

unread,
Jul 23, 2018, 1:14:45 AM7/23/18
to aster...@googlegroups.com
Has recibido este mensaje porque estás suscrito a un tema del grupo "asterisk-es" de Grupos de Google.
Para cancelar la suscripción a este tema, visita https://groups.google.com/d/topic/asterisk-es/33dIJYfDCMA/unsubscribe.
Para cancelar la suscripción a este grupo y a todos sus temas, envía un correo electrónico a asterisk-es...@googlegroups.com.

Para publicar en este grupo, envía un correo electrónico a aster...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/asterisk-es.
Para acceder a más opciones, visita https://groups.google.com/d/optout.


--
Raúl González García
Telf. 665 078 788

Raúl G

unread,
Jul 23, 2018, 1:47:45 AM7/23/18
to asterisk-es
Hola krtapas,

Perfectamente explicado, muy claro y con buenos consejos. 

Tras verificar tus anotaciones todo funciona a la perfección. Muchísimas gracias por tu aporte, así da gusto :) 


> > Para publicar en este grupo, envía un correo electrónico a
> > aster...@googlegroups.com <mailto:aster...@googlegroups.com> .
> > Visita este grupo en https://groups.google.com/group/asterisk-es.
> > Para acceder a más opciones, visita https://groups.google.com/d/optout.
> >
>
> --
> Este email pertenece a la lista de Asterisk-ES (http://www.asterisk-es.org
> <http://www.asterisk-es.org> )
> Normas de la lista Asterisk-ES:
> http://comunidad.asterisk-es.org/index.php?title=Lista:normas-asterisk-es
> <http://comunidad.asterisk-es.org/index.php?title=Lista:normas-asterisk-es>
> ---
> Has recibido este mensaje porque estás suscrito al grupo "asterisk-es" de
> Grupos de Google.
> Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes,
> envía un correo electrónico a asterisk-es...@googlegroups.com


> Para publicar en este grupo, envía un correo electrónico a
> aster...@googlegroups.com <mailto:aster...@googlegroups.com> .
> Visita este grupo en https://groups.google.com/group/asterisk-es.
> Para acceder a más opciones, visita https://groups.google.com/d/optout.
>

--
Este email pertenece a la lista de Asterisk-ES (http://www.asterisk-es.org)
Normas de la lista Asterisk-ES: http://comunidad.asterisk-es.org/index.php?title=Lista:normas-asterisk-es
---
Has recibido este mensaje porque estás suscrito al grupo "asterisk-es" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a asterisk-es...@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a aster...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/asterisk-es.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Carlos Andrés Tapasco Viera

unread,
Jul 23, 2018, 1:09:19 PM7/23/18
to aster...@googlegroups.com
Qué bien que te haya servido, fue con todo gusto. Estamos en contacto.


> > Para publicar en este grupo, envía un correo electrónico a
> > aster...@googlegroups.com <mailto:aster...@googlegroups.com> .
> > Visita este grupo en https://groups.google.com/group/asterisk-es.
> > Para acceder a más opciones, visita https://groups.google.com/d/optout.
> >
>
> --
> Este email pertenece a la lista de Asterisk-ES (http://www.asterisk-es.org
> <http://www.asterisk-es.org> )
> Normas de la lista Asterisk-ES:
> http://comunidad.asterisk-es.org/index.php?title=Lista:normas-asterisk-es
> <http://comunidad.asterisk-es.org/index.php?title=Lista:normas-asterisk-es>
> ---
> Has recibido este mensaje porque estás suscrito al grupo "asterisk-es" de
> Grupos de Google.
> Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes,
> envía un correo electrónico a asterisk-es...@googlegroups.com

Reply all
Reply to author
Forward
0 new messages