Traza: » asterisk_configuracion_canales » asterisk_configuracion_capi.conf » asterisk_configuracion_cdr_mysql.conf » asterisk_configuracion_cdr_odbc.conf » asterisk_configuracion_cdr_pgsql.conf » asterisk_configuracion_dnsmgr.conf » asterisk_configuracion_dundi.conf » asterisk_configuracion_enum.conf » asterisk_configuracion_enumagi.conf » asterisk_configuracion_extensions.ael
¡Actualmente no estás identificado! Introduce abajo tus datos de identificación para abrir una sesión. Necesitas tener las cookies activadas para identificarte.
Has olvidado tu contraseña? Obten una nueva.: Enviar nueva contraseña
ARREGLAR
En un cierto plazo, la gente ha estado empujando para agregar características a extensions.conf para hacerlo más bién un lenguaje de programación. AEL se piensa para proporcionar un lenguaje de programación real que se pueda utilizar para escribir un asterisco dialplan.
El conseguir comenzado El programa de análisis de AEL (pbx_ael.so) está totalmente a parte del módulo que analiza extensions.conf (pbx_config.so). Utilizar AEL, la única cosa que tiene que ser hecha es el módulo pbx_ael.so se debe cargar por Asterisk. Esto será hecha automáticamente si usa “autoload=yes” en /etc/asterisk/modules.conf. Cuando se carga el módulo, buscará “extensions.ael” en /etc/asterisk/. Extensions.conf y extensions.ael se pueden utilizar conjuntamente con uno a si eso es se desea qué. Algunos usuarios pueden desear guardar extensions.conf para las características que se configuran en la sección “general” de extensions.conf.
Extensions.ael de recarga Para recargar extensions.ael, el comando siguiente se puede publicar en el CLI.
recarga del ael del *CLI>
El eliminar errores
Permitir los contextos de AEL eliminan errores
el ael del *CLI> elimina errores de contextos
Permitir las macros de AEL eliminan errores
el ael del *CLI> elimina errores de macros
Permitir AEL leído eliminan errores
el ael del *CLI> elimina errores leído
Permitir el símbolo de AEL eliminan errores
el ael del *CLI> elimina errores de símbolo
Inhabilitar AEL eliminan errores de mensajes
el ael del *CLI> ningún elimina errores
Contexto Los contextos en AEL representan un sistema de las extensiones de la misma forma que hacen en extensions.conf.
defecto del contexto {
};
NOTA: La abertura rizado-apoya debe aparecer como arriba. ¡La mudanza de ella a la línea siguiente puede tener consecuencias desastrosas!
Extensiones Para especificar una extensión en un contexto, el sintaxis siguiente se utiliza. Si es más de un uso llamarte en una extensión, ellos puede ser enumerado en orden dentro de un bloque.
defecto del contexto {
aparato de lectura 1234 del => (tt-monos);
=> 8000 {
NoOp (uno);
NoOp (dos);
NoOp (tres);
};
=> NoOp (de _5XXX es un patrón!);
};
Incluye Los contextos se pueden incluir en otros contextos. Todos los contextos incluidos se enumeran dentro de un solo bloque.
defecto del contexto {
incluye {
local;
longdistance;
internacional;
};
};
Interruptores de Dialplan Los interruptores se enumeran en su propio bloque dentro de un contexto.
defecto del contexto {
interruptores {
DUNDi/e164;
IAX2/box5;
};
eswitches {
IAX2/context@$ {CURSERVER};
};
};
Ignorepat el ignorepat se puede utilizar para mandar a conductores del canal no cancelar dialtone sobre recibo de un patrón particular. El ejemplo más de uso general es “9”.
contexto saliente {
=> 9 del ignorepat;
};
NOTA: La abertura rizado-apoya debe aparecer como arriba. ¡La mudanza de ella a la línea siguiente puede tener consecuencias desastrosas!
Variables Las variables en asterisco no tienen un tipo, así que definir una variable, apenas tiene que ser especificado con un valor.
Las variables globales se fijan en su propio bloque.
globals {
CONSOLE=Console/dsp; TRUNK=Zap/g2;
};
NOTA: La abertura rizado-apoya debe aparecer como arriba. ¡La mudanza de ella a la línea siguiente puede tener consecuencias desastrosas!
Las variables se pueden fijar dentro de extensiones también.
foo del contexto {
=> 555 {
x=5;
y=blah;
divexample=10/2
NoOp (x es $ {x} y y es $ {y}!);
};
};
NOTA: El asterisco beta1 analiza las asignaciones que usan una envoltura de $ [] en comparación con la manera más lógica de hacerla tiene gusto del trabajo del sistema y de SetVar. En este ejemplo, hice $ {ARG1} fijar a “SIP/x7065558529” sans-cotizo y flunked hacia fuera. NOTA: Otra opinión: Los $ [] permiten que las expresiones sean utilizadas, y agregan energía adicional a la lengua. Leer el README.variables sobre los requisitos de las expresiones de $. En el ejemplo siguiente, el SIP/x7065558529
no deben ser los “sans cotizan”. Así pues, la declaración pudo haber sido incorporada: requesting_channel= " $ {ARG1}”; (donde el "" 's previene la evaluación.)
NOTA: Estas cosas se envuelven para arriba en una expresión de $ []: La prueba del rato (); si () prueba; la expresión media en para (x; y; declaración de z) (la expresión de y); Las asignaciones - el lado derecho, así que a = b - > fijaron (a=$ [b])
requesting_channel=$ {ARG1}
ERROR: 10 Oct de 12: 48: 59 ADVIRTIENDO [19726]: ast_expr2.y: op_div 811: discusión no numérica
De la demostración dialplan: ⇒ 1 de “s”. Sistema (requesting_channel=$ [$ {ARG1}]) [pbx_ael]
Pero puedes utilizar el sistema y trabaja la vieja manera.
Sistema (requesting_channel=$ {ARG1})
El escribir a una función dialplan se trata iguales que la escritura a una variable.
blah del contexto {
=> de s {
CALLERID (conocido) =ChickenMan;
NoOp (mi nombre es $ {CALLERID (el nombre)} !);
};
};
Lazos AEL tiene puestas en práctica de “para” y “mientras que” los lazos.
el contexto coloca {
1 => {
para (x=0; $ {x} < 3; x=$ {x} + 1) {
Prolijo (x es $ {x}!);
};
};
=> 2 {
y=10;
mientras que (>= 0 de $ {y}) {
Prolijo (y es $ {y}!);
y=$ {y} - 1;
};
};
};
NOTA: La expresión condicional (el “>= 0 de $ {y}” arriba) se envuelve en $ [] así que ella puede ser evaluada. NOTA: Para la expresión de la prueba de lazo (el “$ {x} < 3” arriba) se envuelve en $ [] así que él puede ser evaluado.
Conditionals Ayudas de AEL si y declaraciones del interruptor. Observar que si tienes una cláusula otra, DEBES colocar apoyos alrededor de la porción no-otra de si declaración.
condicional del contexto {
=> de _8XXX {
Dial (SIP/$ {EXTEN});
si (“$ {DIALSTATUS}” = “BUSY”) {
Voicemail (|b de $ {EXTEN});
}
Voicemail (|u de $ {EXTEN});
};
=> de _777X {
interruptor ($ {EXTEN}) {
patrón N11:
NoOp (llamaste un número N11-- $ {EXTEN});
rotura;
caso 7771:
NoOp (llamaste 7771!);
rotura;
caso 7772:
NoOp (llamaste 7772!);
rotura;
caso 7773:
NoOp (llamaste 7773!);
caída de // a través
defecto:
NoOp (en la cláusula del defecto!);
};
};
};
NOTA: La expresión condicional adentro si () las declaraciones (el “$ {DIALSTATUS}” = “OCUPADO” arriba) se envuelven en $ [] para la evaluación. NOTA: Ni los valores del interruptor ni del caso se envuelven en $ []; pueden ser constantes, o $ {var} de tipo referencias solamente. NOTA: Usar el “patrón” en vez del “caso” permite el uso de los patrones de Dialplan del asterisco. NOTA: AEL genera cada caso como extensión separada. las cláusulas del caso sin terminar la “rotura”, o “goto”, tienen haber insertado goto, a la cláusula siguiente, que crea una “caída por” efecto. NOTA: Puesto que los interruptores se ponen en ejecución como extensiones, $ {EXTEN} no trabajará según lo deseado.
goto y etiquetas Éste es un ejemplo de cómo a hacer un goto en AEL.
gotoexample del contexto {
=> de s {
comenzar:
¡NoOp (bucle infinito! yay!);
Espera (1);
goto comenzar; // va a etiquetar en la misma extensión
};
=> 3 {
s|begin goto; // va a etiquetar en diversa extensión
};
=> 4 {
gotoexample|s|begin goto; el overkill de // va a etiquetar en el mismo contexto
};
};
contexto gotoexample2 {
=> de s {
extremo:
gotoexample|s|begin goto; // va a etiquetar en diverso contexto
};
};
NOTA: las etiquetas goto siguen los mismos requisitos que () el uso Goto, a menos que el valor pasado tenga que ser una etiqueta. Si no existe la etiqueta, tendrás errores run-time. Si la etiqueta existe, pero en una diversa extensión, tienes que especificar el nombre y la etiqueta de la extensión en el goto, como en: s|z goto; si la etiqueta está en un diverso contexto, especificas el context|extension|label. Hay una nota sobre usar goto en una declaración del interruptor debajo…
Saltos Para llamar otra extensión (o, en una declaración del interruptor, otro caso), utilizar la declaración del “salto”:
contexto entrante {
=> de s {
NoOp (manejar la llamada aquí);
};
salto s de 18665551212 =>; // aceptamos llamadas de los POTES en este número
};
contexto casero {
salto de 399 => s@incoming; // 399 es mi “simula la llamada entrante” speeddial;)
};
Macros Una macro se define en su propio bloque como esto. Las discusiones a la macro se especifican con el nombre de la macro. Son entonces reffered por a ese mismo nombre. Un bloque del retén se puede especificar para coger extensiones especiales.
macro std-exten (extensión, revelador) {
Marcar ($ {revelador}/$ {extensión}, 20);
cambiar ($ {DIALSTATUS) {
caso OCUPADO:
Voicemail (b$ {extensión});
rotura;
defecto:
Voicemail (u$ {extensión});
};
coger a {
VoiceMailMain ($ {extensión});
vuelta;
};
};
Una macro entonces es llamada precediendo el nombre macro con un signo “&”.
ejemplo del contexto {
EL => DE _5XXX &STD-EXTEN ($ {EXTEN}, “IAX2”);
};
Ejemplos
versión parcial de programa del contexto {
=> de s {
Espera (1);
Respuesta ();
DESCANSO (dígito) =5;
DESCANSO (respuesta) =10;
recomenzar:
Fondo (versión parcial de programa-congrats);
instrucciones:
para (x=0; $ {x} < 3; x=$ {x} + 1) {
Fondo (versión-mandar);
WaitExten ();
};
};
=> 2 {
Fondo (versión parcial de programa-moreinfo);
s|instructions goto;
};
=> 3 {
=fr de la LENGUA ();
s|restart goto;
};
=> 500 {
Aparato de lectura (versión parcial de programa-abouttotry);
Dial (IAX2/guest@misery.digium.com);
Aparato de lectura (versión parcial de programa-nogo);
s|instructions goto;
};
=> 600 {
Aparato de lectura (versión parcial de programa-echotest);
Eco ();
Aparato de lectura (versión parcial de programa-echodone);
s|instructions goto;
};
# => {
retraso:
Aparato de lectura (versión-agradece);
Retraso ();
};
#|hangup goto del => de t;
aparato de lectura del => i (inválido);
};
Indirectas e insectos Nota: Estas indirectas/insectos están en fecha el asterisco 1.2.1, él son posibles algunas de estas limitaciones serán quitados en el futuro
Ejemplos Aquí puedes encontrar algunos ejemplos en cómo utilizar AEL para crear dialplans de gran alcance: Ejemplo Snippets de AEL.