Asterisk Configuración Manejo de variables condicionales 1.

Slides:



Advertisements
Presentaciones similares
Tipos de datos Numéricos: Constan de números y puntos decimales, así como de signos positivos y negativos con los cuales es posible efectuar operaciones.
Advertisements

Estructuras de control
Registro de llamadas y logs
Abstracción de Datos Arrays.
Alta disponibilidad en VoIP
Asterisk Configuración Canales SIP/IAX 1.
Asterisk Instalación 1 1.
Asterisk Administración 1 1.
Seguridad en VoIP Seguridad 1.
Correo de Voz (voic ) Asterisk Configuración del Correo de Voz (voic ) 1.
Asterisk Introducción 1 1.
Asterisk Configuración Sala de conferencias 1.
Asterisk Interconexion PBX 1.
Asterisk CLI.
Asterisk Conceptos de Asterisk 1.
Asterisk Configuración básica Primeros Pasos 1.
WALC 2010 Track 5 Telefonía IP.
Asterisk Configuración Plan de Numeración 1.
Configuración Discado automatico Manejo de Colas
Asterisk Trixbox.
Julián Dunayevich, Lázaro Baca, Andrés Brassara, Santiago Alberch
Julián Dunayevich, Lázaro Baca, Andrés Brassara, Santiago Alberch
© 2010 Michigan State University and DQS-UL MSS, original at CC-BY-SA Acción Correctiva FSKN 12.
© 2010 Michigan State University and DQS-UL MSS, original at CC-BY-SA Trazabilidad FSKN 14.
Clase 2 Tipos de datos Asignación de valores Estructura IF Ejercicios
ALGORITMOS Y LENGUAJES Estructuras de Control CONDICIONAL
EXCEL 14 CLASE 6.
PHP-MYSQL OPERADORES EN PHP
Especialista en Business Intelligence Integration Services SSIS (Sesión 5) Microsoft SQL Server 2008 R2 (Nov.2013) Suscribase a o.
SQL Server Integration Services SSIS
• SQL Server Integration Services SSIS
Funciones de Fecha y Hora
Direcciones, Arreglos y Argumentos de Funciones
DIAGRAMAS DE FLUJO Y PSEUDOCÓDIGO
Ecuaciones y Resolución de Ecuaciones Lineales
DIAGRAMAS DE FLUJO Y PSEUDOCÓDIGO
Expositores: Sandra Pineda Obando Patricio Aguirre Sanabria
Concepto de programa. Directorio Concepto de programa. Analisis del problema. Resolucion del problema. Desarroollo de un programa. Partes constitutivas.
Tema 2: Lenguaje PHP básico
Entornos de programación
ALGORÍTMICA Dpto. Ingeniería de Sistemas y Automática
MX2000 Ambiente del lenguaje de programación CONTENIDO.
3. INTRODUCCIÓN A LA PROGRAMACIÓN
• SQL Server Integration Services SSIS
ESCUELA: NOMBRES: LÓGICA DE LA PROGRAMACIÓN UNIDAD 2: Naturaleza de los Datos FECHA: Ing. Patricio Abad Espinoza OCTUBRE 2009 – FEBRERO Ciencias.
Asterisk Manager Interface
Asterisk Gateway Interface
Funciones en lenguaje C

Casos de Uso. Módulo Administrador
Tercera Clase Patricio A. Navarrete Septiembre 10 de 2011.
UNIVERSIDAD DE MANAGUA I CUATRIMESTRE INTRODUCCION A LA PROGRAMACION
CARACTERÍSTICAS DE LOS PROGRAMAS
Ejemplos de cómo utilizarlas
TIPOS Y ESTRUCTURAS BÁSICAS DE DATOS
Bases de datos en la Web n Las bases de datos permiten almacenar de una forma estructurada y eficiente toda la información de un sitio web n Ventajas –Proporcionar.
EXPRESIONES Y SENTENCIAS
Operadores lógicos en PHP Programación en Internet II.
Especialista en Business Intelligence Integration Services SSIS Transformaciones (Parte 3) Microsoft SQL Server 2008 R2 Suscribase a
Términos algoritmo diseñar algoritmo implementar algoritmo
Presente un cuestionario con los aspectos mas importantes sobre los
Práctica Profesional PHP.
Asterisk Configuración.
Asterisk Conceptos de Asterisk. Julián Dunayevich, Lázaro Baca, Andrés Brassara, Santiago Alberch2 Canal (channel) Es una conexión que conduce una llamada.
WALC 2008 Track 5 Telefonia IP. Asterisk Conceptos de telefonía: conceptos básicos sobre telefonía tradicional.
Devuelve el valor lógico FALSO. Sintaxis: FALSO( ) Observación: También puede escribir la palabra FALSO directamente en la hoja de cálculo o en la fórmula.
Programación de Computadores
ACTIVIDADES FECHA: JULIO 6 AL 10 TEMA: FORMULAS Y FUNCIONES BÁSICAS EN LA HOJA DE CALCULO EXCEL PROPÓSITO: IDENTIFICAR LAS FORMULAS Y FUNCIONES BÁSICAS.
Informática Ingeniería en Electrónica y Automática Industrial
1 Tema 2.5 Cookies. Inicio 2 1.CookiesCookies La principal utilidad de las cookies (galletas) es la de solventar el problema de la falta de estado en.
Transcripción de la presentación:

Asterisk Configuración Manejo de variables condicionales 1

Variables En el dialplan de Asterisk existen variables, que pueden ser modificadas por el propio Asterisk en su ejecución lógica o por comandos expresos (aplicaciones) del dialplan. Las variables reducen la escritura, agregan claridad al dialplan y le aportan lógica. Los tipos de variables son: Globales: declaradas en extensions.conf (o por comando). Canal: asociadas con un canal particular. Entorno: variables de entorno (UNIX Like). La sintaxis de una variable es: ${variable} Julián Dunayevich, Lázaro Baca, Andrés Brassara, Santiago Alberch, Antonio Lobo 2 2

Manejo de variables Asignación de variables: Manejo de cadenas: Set(Variable=valor) Global(Variable=valor) Manejo de cadenas: Subcadenas: ${Variable : offset : longitud } Devuelve la subcadena de variable que comienza en offset y con la longitud especificada. Ejemplos: ${123456789:2:3} devuelve 345 Longitud: ${LEN(Variable)} Concatenación: ${Variable1}${Variable2} Julián Dunayevich, Lázaro Baca, Andrés Brassara, Santiago Alberch, Antonio Lobo 3 3

Variables globales Permite que se pueda hacer referencia a ellas en todos los contextos, en todas las extensiones, a diferencia de las variables convencionales que sólo tienen validez en el canal actual. Es útil para tener claridad manejabilidad en el dialplan. Se pueden definir en el contexto [globals] al inicio de extensions.conf [globals] JUAN=SIP/juan PEPE=IAX2/pepe Julián Dunayevich, Lázaro Baca, Andrés Brassara, Santiago Alberch, Antonio Lobo 4 4

Agregar variables al dialplan [globals] JUAN=SIP/juan ; define la variable JUAN PEPE=IAX2/pepe [internos] exten => 1000,1,Answer( ) exten => 1000,n,Background(vm-enter-num-to-call) exten => 1001,1,Answer() exten => 1001,n(LlamaJ),Dial(${JUAN},10) exten => 1001,n,Playback(vm-nobodyavail) exten => 1001,n,Hangup() exten => 1001,LlamaJ+101,Playback(tt-allbusy) Julián Dunayevich, Lázaro Baca, Andrés Brassara, Santiago Alberch, Antonio Lobo 5 5

Agregar variables al dialplan exten => 1002,1,Answer() exten => 1002,n(LlamaP),Dial(${PEPE},10) exten => 1002,n,Playback(vm-nobodyavail) exten => 1002,n,Hangup() exten => 1002,llamaP+101,Playback(tt-allbusy) exten => i,1,Playback(pbx-invalid) exten => i,2,Goto(1002,1) exten => t,1,Playback(vm-goodbye) exten => t,2,Hangup() Julián Dunayevich, Lázaro Baca, Andrés Brassara, Santiago Alberch, Antonio Lobo 6 6

Variables de canal definidas automáticamente Listado de variables más importantes: ${CALLERID}: caller ID actual, nombre y número. ${CONTEXT}: contexto actual. ${EXTEN}: extensión actual. ${CHANNEL}: canal actual. ${DIALSTATUS}: estado de la llamada: unavailable, congestion, busy, noanswer, answer, cancel, hangup. ${DATETIME}: hora actual. Un comando útil para ver el contenido es NoOp: NoOp ( ${VARIABLE} ) Mostrará en el CLI el valor. Julián Dunayevich, Lázaro Baca, Andrés Brassara, Santiago Alberch, Antonio Lobo 7 7

Variable ${EXTEN} Permite saber cuál es la extensión que fue marcada. Se utiliza comunmente para eliminar dígitos marcados: ${EXTEN:x} Si x es positivo, quita los primeros x dígitos marcados Si x es negativo, devuelve los últimos x dígitos marcados Exten => _XXXXX,1,Answer() exten => _XXXXX,n,SayDigits(${EXTEN:1}) exten => _XXXXX,n,SayDigits(${EXTEN:-1}) Julián Dunayevich, Lázaro Baca, Andrés Brassara, Santiago Alberch, Antonio Lobo 8 8

Patrones exten => _NXX,1,Playback(auth-thankyou) Se utilizan principalmente para llamadas salientes. Comienzan con el signo _ Le dicen a Asterisk que haga match con un patrón y no con un número de extensión. X. Hace match con cualquier dígito de 0 a 9. Z Hace match con cualquier dígito de 1 a 9. N Hace match con cualquier dígito del 2 al 9. [15-7] Hace match con el rango de dígitos especificados, en este ejemplo matchea los números 1,5,6,7. . (punto) Hace match con uno o mas caracteres. exten => _NXX,1,Playback(auth-thankyou) Si Asterisk encuentra más de 1 patrón para una extensión marcada, se usa la más específica: exten => _555XXXX,1,Playback(digits/1) exten => _55512XX,1,Playback(digits/1) Julián Dunayevich, Lázaro Baca, Andrés Brassara, Santiago Alberch, Antonio Lobo 9 9

Habilitar salida de llamadas Se generan contextos especificos para llamadas locales a la PSTN. Con ello se regula y controla quiénes tienen permiso de hacer llamadas y qué tipo de llamadas pueden hacer : [globals] JUAN=SIP/juan PEDRO=IAX2/PEPE TRUNKDESALIDA=Dahdi/1 [llamadas-locales] exten =>_9ZXXXXXX,1,Answer() exten =>_9ZXXXXXX,n,SayDigits(${EXTEN:1}) exten => _9ZXXXXXX,n,Hangup() [llamadas-larga-distancia] exten =>_ 901XXXXXXXXXX,1,Answer() exten =>_901XXXXXXXXXX,n,SayDigits(${EXTEN:1}) exten=> _901XXXXXXXXXX,n,Hangup() Julián Dunayevich, Lázaro Baca, Andrés Brassara, Santiago Alberch, Antonio Lobo 10 10

Manipulación de expresiones y variables Las expresiones son una combinación de variables, operadores y valores que arrojan un resultado. Sintaxis: $[expr1 operador expr2] Operadores lógicos: |(or) , &(AND) Operadores de comparación: =, !=, <, >, <=, >= Operadores aritméticos: +, -, *, /, % [...] , Ejemplo: exten => 1003,1,Answer() exten => 1003,n,Set(COUNT=3) exten => 1003,n,Set(NEWCOUNT=$[${COUNT} + 1]) exten => 1003,n,SayNumber(${NEWCOUNT}) Julián Dunayevich, Lázaro Baca, Andrés Brassara, Santiago Alberch, Antonio Lobo 11 11

Bifurcación condicional Permite tomar desiciones dentro del dialplan. Aplicación GotoIf() GotoIf(expresion1?destino1:destino2) Si la expresión evaluada es verdadera, la llamada es enviada a destino1, de lo contrario es enviada a destino2. Una cadena vacía y el número 0 son evaluados con falso, cualquier otro valor es verdadero. Cualquiera de los destinos puede ser omitido, pero debe estar alguno de los 2. Si el destino omitido es el camino que debe seguir la llamada, el flujo que se sigue es la siguiente prioridad dentro de la extensión actual. Julián Dunayevich, Lázaro Baca, Andrés Brassara, Santiago Alberch, Antonio Lobo 12 12

Ejemplo de GotoIf() exten => 1004,1,Answer() exten => 1004,n,Set(TEST=1) exten => 1004,n,GotoIf($[${TEST} = 1]?Iguanas:) exten => 1004,n,Playback(demo-thanks) exten => 1004,n,Hangup() exten => 1004,n(Iguanas),Playback(demo-congrats) exten => 1005,1,Answer() exten => 1005,n,Set(COUNT=10) exten => 1005,n(Ciclo),GotoIf($[${COUNT} > 0 ]?:Fin) exten => 1005,n,SayNumber(${COUNT}) exten => 1005,n,Wait(1) exten => 1005,n,Set(COUNT=$[${COUNT} - 1]) exten => 1005,n,Goto(Ciclo) exten => 1005,n(Fin),Hangup() exten => 1006,1,Answer() Exten => 1006,n,NoOp(CALLERID(num)) exten => 1006,n,GotoIf($[${CALLERID(num)} = 101] ? Cuelga:LlamaPepe) exten => 1006,n(LlamaPepe),Dial(SIP/pepe) exten => 1006,n,Hangup() exten => 1006,n(Cuelga),Playback(demo-congrats) Julián Dunayevich, Lázaro Baca, Andrés Brassara, Santiago Alberch, Antonio Lobo 13 13

Bifurcación condicional basada en tiempo Verifica la hora actual del servidor, permitiendo tomar decisiones basadas en tiempo. Se utiliza cuando se quiere dar una bienvenida diferente en horarios de trabajo y fuera de trabajo. GotoIfTime(hora,dias_de_semana,dias_del_mes,meses?etiqueta) Envía la llamada a etiqueta si la fecha y hora actual concuerdan con el criterio especificado por los parámetros. Julián Dunayevich, Lázaro Baca, Andrés Brassara, Santiago Alberch, Antonio Lobo 14 14

Bifurcación condicional basada en tiempo hora. Lista de uno o más rangos de horario en formato de 24 horas. 09:00-17:00 dias_de_semana. Lista de uno o más días de la semana mon, tue dias_del_mes. Día numérico del mes 7-12,15 meses. Lista de uno o más meses del año jun, apr, jul * Matchea con cualquier valor Etiqueta puede ser una prioridad dentro de una misma extensión, una prioridad y extensión dentro del mismo contexto o un contexto, extensión y prioridad. Exten => s, 1, GotoIfTime(*,*,2, nov?open,s,1) ; se envía al contexto open, extensión s, prioridad 1 Julián Dunayevich, Lázaro Baca, Andrés Brassara, Santiago Alberch, Antonio Lobo 15 15

Lab 5 Dialplan avanzado Julián Dunayevich, Lázaro Baca, Andrés Brassara, Santiago Alberch, Antonio Lobo 16 16

Detalles de la licencia: Curso elaborado por Júlian Dunayevich julian@dunayevich.com Lázaro Baca lazaro.baca@gmail.com Andrés Brassara abrassara@gmail.com Santiago Alberch salbech@gmail.com Antonio Lobo antoniwolf@gmail.com Detalles de la licencia: http://creativecommons.org/licenses/by-nc-sa/2.5/deed.es_AR Autores: Julián Dunayevich, Lázaro Baca, Andrés Brassara, Santiago Alberch, Antonio Lobo (cc) Creative Commons - Attribute Non-Commercial Share-Alike 2.5 Trabajo originalmente basado en bibliografía de: Irontec: contacto@irontec.com (CC) Asterisk, The Future of Telephony, Jim Meggelen, Jared Smith, and Leif Madsen, O´REILLY, 2005 Julián Dunayevich, Lázaro Baca, Andrés Brassara, Santiago Alberch, Antonio Lobo 17