Voip en Español

[[asterisk_funcion_macro]]

Traza: » asterisk_funcion_gotoif » asterisk_funcion_gotoiftime » asterisk_funcion_hangup » asterisk_funcion_hasnewvoicemail » asterisk_funcion_iconv » asterisk_funcion_importvar » asterisk_funcion_ldapget » asterisk_funcion_lookupblacklist » asterisk_funcion_lookupcidname » asterisk_funcion_macro

Login

¡Actualmente no estás identificado! Introduce abajo tus datos de identificación para abrir una sesión. Necesitas tener las cookies activadas para identificarte.

Ingresar

Has olvidado tu contraseña? Obten una nueva.: Enviar nueva contraseña

Funcion macro de Asterisk

ARREGLAR

Sinopsis Puesta en práctica macro

Descripción

Macro (macroname, arg1, arg2…)

Ejecuta una macro usando el contexto “macro-<macroname>”, saltando a la extensión de “s” de ese contexto y ejecutando cada paso, entonces volviendo cuando los pasos terminan.

La extensión, el contexto, y la prioridad que llaman se almacenan en $ {MACRO_EXTEN}, $ {MACRO_CONTEXT} y $ {MACRO_PRIORITY} respectivamente. Las discusiones se convierten en $ {ARG1}, $ {ARG2}, etc en el contexto macro.

Si Goto fuera del contexto macro, la macro terminas y el control volverá en la localización refered por al Goto. Si no si $ {MACRO_OFFSET} se fija en la terminación, la macro procurará continuar en la prioridad MACRO_OFFSET + N + 1 si existe tal paso, y N + 1 de otra manera.

Vale el observar de que si utilizas “incluir el directorio del contextname del ⇒” para incluir otro contexto, eso que los valores de $ {ARG1} etc. también estarán disponibles en ese contexto. Esto se podía utilizar e.g. para instalar marcar estándar de la extensión macro con dependencias basadas hora.

Ejemplo

[macro-stdexten];
 ;   $ {ARG1} - extensión (habríamos podido utilizar $ {MACRO_EXTEN} aquí también
 ;   $ {ARG2} - dispositivos al anillo
 ;
 exten el => s, 1, dial ($ {ARG2}, 20); Sonar el interfaz, 20 segundos de máximo
 exten el => s, 2, Goto (s-$ {DIALSTATUS}, 1); Saltar basado en el estado (NOANSWER, OCUPADO, CHANUNAVAIL, CONGESTIÓN, la RESPUESTA)
 exten el s-NOANSWER del =>, 1, Voicemail (u$ {ARG1}); Si es inasequible, enviar al voicemail con el unavail anuncian
 exten el s-NOANSWER del =>, 2, Goto (el defecto, s, 1); Si presionan #, volver al comienzo
 exten el => s-OCUPADO, 1, Voicemail (b$ {ARG1}); Si está ocupado, enviar al voicemail con ocupado anuncian
 exten el => s-OCUPADO, 2, Goto (el defecto, s, 1); Si presionan #, volver al comienzo
 exten el _s- del =>., 1, Goto (s-NOANSWER, 1); Tratar todo lo demás como ninguna respuesta
 exten el => a, 1, VoicemailMain ($ {ARG1}); Si presionan *, enviar a usuario en VoicemailMain

Para llamar esta macro que utilizarías:

 exten el => 1234.1, macro (stdexten, 1234, SIP/7960)

No intentar hacer esto - estaría correcto en lugar de otro utilizar Goto () ramificar en y outof la subdivisión si hay la lógica que necesita ser aislada del contexto principal:

 [macro-proceso-encaminamiento]

 ; XXX-NNN-6800
 exten el => _6800,1, macro (6800-interceptor)

 ; Se empareja esto cuando 8 se marca durante macro-6800-interceptor, s, 4
 exten el => _8,1, aparato de lectura (la recepción)
 exten el => _8,2, retraso



 [macro-6800-interceptor]
 exten el => s, 1, DigitTimeout, 2
 exten el => s, 2, ResponseTimeout, 7
 exten el => s, 3, respuesta
 exten el => s, 4, fondo (autoattendant-ivr/grtg-6); Jugar por completo después de las horas que saludan

 exten el => t, 1, Goto (s, 1)
 exten el => i, 1, Goto (s, 1)
 
 ; Sin embargo, esto es nunca se empareje si 8 se marca durante (s, 4) arriba
 exten el => _8,1, aparato de lectura (el tifón)
 exten el => _8,2, retraso

Nota 1

Observar que no puedes utilizar ninguna otra extensión que “s” para construir la macro mientras que el control se vuelve al contexto que llama cuando el final del “s,” las prioridades se alcanza. Verdad no no terminantemente. Otras extensiones se pueden utilizar (como se utilizan en los ejemplos abajo), pero el “macro-nombre, s, 1” es siempre el punto de partida. La macro sale cuando, para la extensión actual, la prioridad “prioridad actual” + 1 no existe (si se asume que el control habría pasado a esa prioridad la hizo haber existido). Sin embargo, reloj para este insecto/característica, ese acabo de descubrir: Supongamos que el “macro-nombre inicial, s, 1” contiene un GoTo (4567.1). Si dentro del cuerpo macro hay más de una concordancia con el modelo esa extensión (e.g., _4. y _45.), como de costumbre el control pasará a la prioridad “1” del primer fósforo en la orden generalmente de la clase: en nuestro caso, “macro-nombre, _4., 1”. Ahora dejarnos suponen que, después de algunos pasos, el control procede abajo a un “macro-nombre no existente, _4., 7”: ¿esperarías que la macro volviera, derecho? MAL: continuará la ejecución en el “macro-nombre, _45., 7” (si existe), es decir en la prioridad siguiente del patrón que empareja siguiente. Fondo: si deseas cerciorarse de que la macro vuelva, apenas no confiar en una condición de “no más de prioridades”: poner un GoTo explícito a una prioridad que no exista seguramente para ningún patrón en el cuerpo macro, tal como “GoTo (999)”.

Nota 2

Observar que las prensas de la llave dentro de una macro causarán un salto al contexto que llama y no saltarán a la extensión apropiada dentro del contexto macro. Esto es una vergüenza y el código de los medios se convierte en mucho más complejo. (Igual aparece suceder también con saltos a la extensión de “h”: si una macro ejecuta un dial (), cuando el partido llamado cuelga para arriba los pasos del control a la extensión de “h” del contexto que llama.) a modo de ejemplo, con el plan siguiente del dial, el llamador oye “uno” y no “dos”.

[defecto]; La llamada empieza s, 1 aquí exten el => s, 1, macro (examplemacro, ARG1,… ARGx) exten el => s, n, Goto (1); Cuando el llamador presiona “1” dentro de la macro, saltamos aquí en lugar de otro; dentro de la macro. Bummer. exten el => 1.1, SayDigits (1) exten el => 1, n, retraso [macro-examplemacro]; ARGx - lo que deseas exten el => s, 1, sistema (DESCANSO (respuesta) =5); Pedir que el llamador presione “1”. exten el => s, n, fondo (pressone); Esperarías que esta extensión fuera saltada a; cuando el llamador presiona “1”. No es. exten el => 1.1, SayDigits (2) exten el => t, 1, Goto (s, 1) 

Ver también

  • extensions.conf: El asterisco dialplan
  • Variables del asterisco
  • Contextos del asterisco