Voip en Español

[[asterisk_funcion_gotoif]]

Traza: » asterisk_funcion_externalivr » asterisk_funcion_festival » asterisk_funcion_flash » asterisk_funcion_forkcdr » asterisk_funcion_getcpeid » asterisk_funcion_global » asterisk_funcion_gosub » asterisk_funcion_gosubif » asterisk_funcion_goto » asterisk_funcion_gotoif

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 gotoif de Asterisk

ARREGLAR

Sinopsis Goto condicional

Descripción

 ¿GotoIf (condición? label1 [: label2])

Ir a label1 si la condición es verdad o al paso siguiente (o a label2 si está definido) si la condición es falsa, o

 ¿GotoIf (condición? [label1]: label2)

Ir a caminar después (o label1 si está definido) si la condición es verdad o a label2 si la condición es falsa.

Label1 o label2 se puede omitir (en que el caso, nosotros apenas no toma el rama particular), pero no ambos.

la condición es justa una secuencia. Si la secuencia es vacía o “0”, la condición se considera ser falsa. Si es todo lo demás, la condición es verdad. Esto se diseña para ser utilizada junto con sintaxis de la expresión.

Las etiquetas toman la prioridad de la forma “[[contexto,] extensión,]”, así que pueden ser (a) una prioridad, (b) una extensión y una prioridad, o © un contexto, una extensión y una prioridad. Éste es el mismo sintaxis que para el comando Goto.

Ejemplo 1


¿exten el => 206.1, GotoIf ($ [“$ {CALLERIDNUM}” = “303”]? ¡3) exten el => 206.2, GotoIf ($ [“$ {CALLERIDNUM}”! ¿= “304”]? 7: ¡5) exten el => 206.3, dial ($ {SPHONE1}, 15, rt) exten el => 206.4, el retraso exten el => 206.5, dial ($ {PHONE2}, 15, rt) exten el => 206.6, el retraso exten el => 206.7, MusicOnHold (defecto)

20050427 - observar que $ {CALLERIDNUM} puede contener espacios (e.g. “ningunos CID disponibles” de alguno Zap los canales), y el ejemplo arriba se ha corregido para hacer frente a esta situación - sin las cotizaciones alrededor de $ {CALLERIDNUM} no trabaja!

Ejemplo 3


; Este ejemplo comprueba para saber si hay la identificación de llamador en blanco o 800 números. ; Llamadores a partir de 800 números (generalmente telemarketers) o de ésos; sin la identificación de llamador se piden presionar 1 para hablar con mí. exten el => s, 1, NoOp ($ {CALLERID}); registrar la secuencia del callerID; comprobar para saber si hay callerID. ¿Si ningunos, hacen que golpean 1. exten el => s, 2, GotoIf ($ [“$ {CALLERIDNUM}” = ""]? s|1000); Si 800 numeran, hacer que golpean 1. exten el => s, 3, GotoIf ($ [“$ {CALLERIDNUM: 0: ¿3}” = “877”]? s|1000) exten el => s, 4, GotoIf ($ [“$ {CALLERIDNUM: 0: ¿3}” = “800”]? s|1000); AUTORIZACIÓN, tenemos identificación de llamador válida y no es un número 800. ; Ahora sonemos nuestros teléfonos: exten el => s, 5, dial (SIP/604&SIP/602,25, tr) exten el => s, 1000, fondo (press1tospeaktome)

Indirecta

Es de mérito agregar una prueba para los valores nulos, aun cuando versiones modernas de asterisco y/o el bisonte se sabe para trabajar, Se parece que algo todavía requiere un corte probar para los valores nulos:

¿GotoIf ($ [“foo$ {CALLERIDNUM}” = “foo”]? 3: 2)

Si la variable (aquí CALLERIDNUM) no se ha fijado puedes ver un error como el abajo a menos que apliques el truco del “foo”.

20050427 - Observar que las cotizaciones dobles se han agregado al GotoIf antedicho apenas en caso de que $ {CALLERIDNUM} tiene espacios en él.

También puede y hace llamadas fallar si está utilizado en el dialplan sin esto el corte.

CUIDADO [65553]: ast_expr.y: ast_yyerror 346: ast_yyerror (): error del sintaxis: analizar el error

También, el uso del espaciamiento es muy importante si no estás utilizando valores cotizados en ambos lados de la comparación. Así pues, cuando caracteres de prueba 2 y 3 de ARG1 cuando ARG1 = “u6432”:

  ; la voluntad evalúa correctamente a falso (y continuar en el paso 3): exten el => s, 2, GotoIf ($ [$ {ARG1: 1: ¿2} = 61]? 6100); la voluntad evalúa siempre verdad (y saltar incorrecto al paso 6100): exten el => s, 2, GotoIf ($ [$ {ARG1: 1: ¿2} =61]? 6100); se quejará por un número unido mal de caracteres adentro; la comparación (notar el espacio), así: exten el => s, 2, GotoIf ($ [$ {ARG1: 1: ¿2} =61]? 6100)  

ast_yyerror: ast_yyerror (): error del sintaxis: error del sintaxis; Entrada: 64 =61

Ver también

  • Marcar con asterisco funcional SI: SI función
  • Cmd ExecIf del asterisco
  • Goto - saltar a la etiqueta
  • GotoIfTime
  • Gosub: Saltar a un subprograma (nuevo en v1.2)
  • GosubIf: Salto condicional a un subprograma (nuevo en v1.2)
  • Al azar - saltar a la etiqueta basada en probabilidad al azar
  • Marcar con asterisco las expresiones
  • Usar variables en el asterisco Dialplans
  • El Dialplan - extensions.conf