Hagamos que México crezca..

Prefiere el consumo de lo Hecho en México

Visitantes








Conversación

  • melvin: el mejor vpn es vpn ninja, su sitio es www.vpnnija.com  
  • effeselop: High-heeled shoes n your case, a jimmy choo nova nude slingback shoes girl that are how one prevent stop the terrible! The very thought of these disadvantages, high heel sandals after which it check out this new ladies, how suddenly it had not been so pretty! Pure while burden of check carefully the jimmy choo strappy sandals storage room, spring, summer, the fall and winter shoes, I only identify one pair a little high-heeled sandals, exclusion . Irrrve never worn high heel slides in one time, huh, huh! Today it is easy to understand shoe store favorite jimmy choo wedge women's high heel sandals, beautifully turned to that, believe that of to place it on, wind willow waist put a person unique on top of the swaying grace, the temptation fails to stop  
  • Samantha Santin: ola me pueden ayudar con lo basico para un examen de linux , estoy en 10 mo de basica , por favor , gracias  
  • alexandra: hola...tengo problemas para configurar las llamadas y crear los troncales....uso elastix 2.0.3 con asterisk 1.6...y soy nueva en esto..puedo relizar llamadas dentro de una misma oficina, pero no puedo sacarlas fuera, es decir locales e internacionales...necesito asesoria...gracias  
  • Fernando Hernández: Hey! Ya no estan disponibles los posts sobre facturación electrónica en México, podrías pasarme el tutorial o la clase en php? Por favoooor. Gracias  
  • daniel nuñez: buenas soy de venezuela y tengo una duda yo lo que quiero es hacer una iso debian que tenga todos los paquetes necesarios completos y programas como synaptis fortran java los pluging de video y sonido ya instalados osea que tenga todo lo necesario instalado pero sin que sea una instalacion con un cd netinst, es posible ?  
  • Cesar villegas: Buenas!!! oye no tienes programado algún curso?  
  • Urbano: Hola soy de Argentina.
    Desde hace un tiempo tengo instaldo Asterbilling SL y me parece un rpoyecto útil e interesante. Ahora me compré un AT 530 con la intension de pasar la tarifa al telefono pero seguramente algo estoy haciendo mal ya que despues de configurar el script con los datos del AMI; MySQL y ejecutar el comando que indica el manual.. no pasa nada, todo sigue igual y no se muestra la tarifa en la pantalla del telefono. Tal vez deba configurar algo tambien en el telefono.. la verdad no se, es que tampoco soy un experto en la materia. Les dejo algunos datos que talvez sean utilespara que me puedan ayudar: Tengo Elastíx 2.0.3 con Asterisk 1.6; FreePBX 2.7.0.3; A2Billing 1.8.1; Astercc 1.4 y Asterbilling SL. Espero que me puedan ayudar; desde ya muchas gracias.  
  • kike: Oye filein.. necesito una cotización de unas FxO para analógicas porfa..
    saludos  
  • cristy: hola por favor tengo problemas para conectar agi con asterisk me sale un error de broken pipe, sabes de que se trata???  

Escribe el código Captcha que estás viendo

Bases de Datos

  • Stellarium excelente software astronómico para ubicación de planetas, estrellas y galaxias

    Hace un par de años le regalé en su cumpleaños a mi hermanita un telescopio Lobo, en ese tiempo ella estaba muy chica y poco interes le mostró, pero hace unos días me pidió que sacara el telescopio de dónde estaba guardado, para luego empezar a armarlo. Debo confesar que de astronomía solo conozco la luna y el sol, por lo que en la noche que estabamos intentando comenzar a observar las estrellas me preguntó por cada una de ellas, pero prácticamente quedé mal ya que no podía ubicar ni siquiera a marte o jupiter.

    Por lo que me di a la tarea de buscar un software que me permitiera tener esa información, primero encontré un software llamado "Starry Night" pero el detalle fué que es propietario y había que pagar una licencia.

    El siguiente software que hallé en sourceforge.net fué gSky, un software que te muestra la ubicación en coordenadas de los astros, planetas y satélites que estuvieran en cierta posición del azimuth, el detalle es que no te los mostraba gráficamente.

    Siguiendo buscando encontré Cartes du Ciel el cuál al igual que el anterior te mostraba la posición de los planetas, estrellas y demás en un mapa estelar, el detalle es que a pesar de que es gráfico no lo podías ubicar bien en el horizonte.

    Luna Llena 2010
    Al final encontré un software llamado Stellarium el cuál te permite ubicar los planetas, estrellas, satélites, galaxias, nebulosas, etc., desde una posición geográfica del planeta, en este caso solo tuve que dar las coordenadas desde dónde estábamos observando para que en seguida Stellarium comenzara a mostrar las posiciones de cada una de las estrellas que teníamos en el horizonte y asi poder tener más conocimiento de ellas.

    Realmente recomiendo este software para los que se estén adentrando en el mundo de la astronomía, la cuál es bastante interesante y muy cautiva.

    Puede obtenerse el software de stellarium de la siguiente página

    http://sourceforge.net/projects/stellarium/
  • Crea tu propio LiveCD personalizado con remastersys

    Hace unos días un cliente me adquirió un sistema de WebSMS Marketing, este sistema permite enviar múltiples SMS personalizados desde una página web lo cuál facilita enviar cientos de mensajes en un solo click a múltiples destinatarios generando mensajes con Nombre, Apellido, Título. Este sistema de mercadotecnia y publicidad usa los puertos seriales de teléfonos móviles que se conectan por USB, pero esto solo funciona en Linux, por lo que para instalar el sistema es requerido tener previamente Linux instalado.
    En este caso mi cliente no tiene conocimiento de linux, por lo que me vi a la tarea de facilitarle las cosas, para esto primero intenté crear una imagen mediante VirtualBox, pero igual el proceso de instalación y configuración no es tan rápido y amigable para un usuario neófito. Por lo que al final decidí crear un LiveCD basado en una instalación de Ubuntu con lo que ya estaba todo preinstalado y solo reiniciaba con el disco para tener toda la plataforma de mercadotecnia por SMS preinstalada sin tener que modificar nada en su computadora.
    Para esto usé una instalación nueva de Kubuntu dónde hice todo el proceso de configuración de los paquetes necesarios, modificación de archivos de configuración, permisos, crontab, etc., y ya que el sistema estaba a punto solo descargue remastersys para poder crear un ISO de la instalación creada.
    Para poder instalar remastersys es necesario agregar el repositorio a /etc/apt/sources.list
    sudo echo "deb http://www.geekconnection.org/remastersys/repository ubuntu/" >>  /etc/apt/sources.list
    sudo apt-get update
    sudo apt-get install remastersys
     
    Ya que esté instalado remastersys, solo basta ejecutar
    sudo remastersys dist
     
    Con lo que comenzará a crear un ISO de nuestra instalación de Kubuntu, esto es muy práctico para hacer respaldos de todo nuestro sistema.
    Como nota adicional remastersys no guarda en el ISO personalizado los directorios debajo de home, unicamente el de /home/remastersys, por lo que si se deseara tener una configuración de escritorio personalizada habría que copiar tus archivos ~/.* a /home/remastersys/
    Si estuvieras corriendo VirtualBox y de tú instalación virtual desearas generar tú iso y ya no tienes mucho espacio en tu disco duro virtual podrías hacer algo como esto:
    sudo apt-get install smbfs
    sudo rm -rf /home/remastersys
    sudo mount -t smfbs \\servidor_windows_samba\directorio /home/remastersys
    sudo chmod -R 0777 /home/remastersys
     
    Remastersys es una forma rápida y fácil de crear un LiveCD personalizado con tu instalación de Linux. Hay muchas otras formas de hacerlo como Debian from Scratch la cuál es muy recomendable aunque un poco más complicada de generar.
  • Generando reportes en PHP usando plantillas creadas con OpenOffice (WYSIWYG).

    Hace unos días desarrollando un sistema el cuál requiere generar facturas, estuve buscando una manera de poder hacerlo práctico, esto ya que la factura se mandaría a un formato preimpreso, por lo que la información debería coincidir con el formato, lo primero que me recomendaron es usar FPDF el cuál es una librería que funciona en PHP y que es relativamente fácil de usar, digo relativamente porqué hay que usar coordenadas para poder generar el documento lo que la vuelve algo complicada, más aun si se quiere dejar libertad al usuario que genere sus propios formatos.
    Imaginaba que se podía hacer algo con OpenOffice (OO), ya que usa ODF(Open Document Format) el cuál es un formato abierto en XML. Los archivos generados por OpenOffice vienen comprimidos en formato .zip, al descomprimirlos genera varios archivos, de los cuáles el principal es content.xml, el cuál contiene la información que hemos capturado en el archivo, esto aplica para archivos de Hojas de Calculo, Procesador de Textos o una presentación de OO.
    Despues de desmenuzar los archivos de OpenOffice se me ocurrieron varias mafufadas que no tiene caso comentar aquí, pero lo cuál me llevó a encontrar una Librería Abierta llamada TinyButStrong [http://www.tinybutstrong.com/] , la cuál tiene un plugin para OpenOffice llamada TinyDoc [http://tinydoc.unesolution.fr/] que permite rellenar una plantilla de OpenOffice fácilmente y en unas cuantas líneas, lo que nos ahorra mucho trabajo al generar reportes.
    El concepto es muy fácil, definir variables en nuestro documento que luego serían sustiuídas. Por ejemplo si en nuestro documento de OpenOffice pusiéramos en alguna parte:
    [factura.fecha]
    En TinyDoc tendríamos que tener un arreglo que contenga la llave fecha para que la sustituya en OpenOffice
    $_factura = array("fecha"=>"2009-01-01");
     
    De tal forma que ese arreglo lo asignamos al "parser" de plantillas de TinyDoc, algo como lo que se hace en los templates de smarty
    $doc->mergeXmlField('factura', $_factura);
     
    Si queremos listar información por ejemplo el detalle de una factura (productos) usaríamos el método
    $doc->mergeXmlBlock('detalle', $_detalle);
     
    En Open Office usaríamos [detalle;block=table:table-row] para indicar que es un bloque de datos, y luego poner en alguna parte del documento[detalle.cantidad][detalle.descripcion][detalle.preciounitario][detalle.importe] para que liste el contenido del arreglo de arreglos, dónde el arreglo de detalle sería un arreglo como la siguiente manera
          array(
            array(
              'cantidad'    => 2,
              'descripcion'    => 'Adaptador SPA3102',
              'preciounitario'   => 1450.00,
              'importe'  => 2900
            ),
            array(
              'cantidad'    => 3,
              'descripcion'    => 'Modulos FXO',
              'preciounitario'   => 1400.00,
              'importe'  => 4200.00
            ),
            array(
              'cantidad'    => 1,
              'descripcion'    => 'Router Inalambrico WRT54G ',
              'preciounitario'   => 650,
              'importe'  => 650
            ),
            array(
              'cantidad'    => 1,
              'descripcion'    => 'Tarificador Web Asterisk',
              'preciounitario'   => 2500,
              'importe'  => 2500
            ),
          )
     
    Y con esto se sustituiría la información en OpenOffice, respetando el estilo, posición, etc., por lo que tendríamos un reporteador WYSIWYG( Waht You See Is What You Get - Lo que ves es lo que obtienes).
    Por ejemplo aquí muestro como sería el archivo plantilla en OpenOffice usando la "sintaxis" de TinyButStrong, De Lado derecho vemos como quedaría el archivo de OpenOffice despues de que se parseo con TinyButStrong.




    (Click para ver la imagen más grande)
    Un código de ejemplo de como procesar archivos de Open Office con PHP y TinyButStrong sería:
    <?php
    //llamamos a las librerias de formateo de plantillas de Open Office
        include('lib/tinyButStrong.class.php');
        include('lib/tinyDoc.class.php');
    //Creamos un Objeto de la Clase
        $doc = new tinyDoc();
    //Indicamos que OpenOffice esta en formato .zip, en linux hay que verificar que tengamos instalado unzip: sudo apt-get install unzip
        $doc->setZipMethod('ziparchive');
    //Indicamos que el directorio temporal dónde descomprimira el archivo OD* de Open Office
        $doc->setProcessDir('./tmp');
    //Le indicamos el archivo de Open Office que creamos como plantilla
        $doc->createFrom('formato_factura.odp');
    //Indicamos el archivo que escribirá, OpenOffice guarda en content.xml la información capturada en el archivo
        $doc->loadXml('content.xml');
    //Funcion que formateara la plantilla de Open Office
        crea_factura($doc);
    //Indicamos que genere uan descarga del archivo para el usuario
        $doc->sendResponse();
    //Elimina toda la información que fué creada temporalmente
        $doc->remove();

    function crea_factura($doc)
        {
    //En el archivo plantilla de de openoffice tenemos [factura.fecha], [factura.subtotla], [factura.iva], [factura.total], [factura.totaltext]
    //Lo que hace la clase es cambiar la información por la que asinemos aquí, si vemos asignamos el arreglo a factura y el método usado es mergeXmlField
        $doc->mergeXmlField('factura',
          array(
            'id'         => '1',
            'fecha'       => date('Y-m-d'),
            'subtotal'      => 10250,
            'iva'        => 1537.5,
            'total'   => 10787.5,
            'totaltext'   => 'Diez Mil Setecientos Pesos Cincuenta Centavos',
          )
        );
    //Al igual que en factura a cliente le asignamos el arreglo de cliente que tiene las llaves que seran sustituidas en la plantilla
    //usamos el metodo mergeXmlField ya que es un arreglo unidimensional
        $doc->mergeXmlField('cliente',
          array(
            'id'         => '1001',
            'nombre'       => 'OaxRom SA de CV',
            'direccion'      => 'Encuentranos en http://www.oaxrom.com',
            'rfc' => 'OAX090101C45'
          )
        );
    //Este método es interesante, ya que nos permitirá mostrar listados en la plantilla
    //En la plantilla tenemos [detalle.cantida] [detalle.descripcion][detalle;block=table:table-row] [detalle.preciounitario] [detalle.importe]
    //Usando la funcion mergeXmlBlock, podremos listar información de un arreglo de arreglos en forma de listas, esto es práctico cuándo se intenta
    //mostrar informacion de productos en una factura por ejemplo, donde el numero de productos puede ser 1 o varios, esto lo que comunmente se llama detalle
        $doc->mergeXmlBlock('detalle',
          array(
            array(
              'cantidad'    => 2,
              'descripcion'    => 'Adaptador SPA3102',
              'preciounitario'   => 1450.00,
              'importe'  => 2900
            ),
            array(
              'cantidad'    => 3,
              'descripcion'    => 'Modulos FXO',
              'preciounitario'   => 1400.00,
              'importe'  => 4200.00
            ),
            array(
              'cantidad'    => 1,
              'descripcion'    => 'Router Inalambrico WRT54G ',
              'preciounitario'   => 650,
              'importe'  => 650
            ),
            array(
              'cantidad'    => 1,
              'descripcion'    => 'Tarificador Web Asterisk',
              'preciounitario'   => 2500,
              'importe'  => 2500
            ),
          )
        );
    //Ya que la clase asigna los valores, guarda la información
        $doc->saveXml();
                /*
                $doc->loadXml('styles.xml');
                $doc->mergeXmlField('header',
                  array(
                    'title' => 'made with tinyDoc and',
                    'img'   => 'images/samples/openoffice-by-benjamin-bois.png',
                  )
                );
                $doc->mergeXmlField('footer',
                  array(
                    'signature' => 'image credit : Benjamin Bois',
                  )
                );
                $doc->saveXml();
             */

    //cerramos el archivo
        $doc->close();
        }
    ?>
     
    He subido un proyecto de ejemplo a http://files.mexrom.net
    entra con login:invitado y password:invitado
    Entra a la carpeta TinyButStrong y descarga el archivo factura.zip
    Descomprime la carpeta en algún directorio de tú servidor web y desde tu navegador abre por ejemplo:
    http://localhost/factura/formato_factura.php
    Y esto debería generarte un archivo de OpenOffice como muestro en la parte derecha de la imagen de arriba.
    Con tinyDoc es fácil crear reportes en PHP y obteniendo datos de MySQL, solo es cuestión de crear la plantilla y listo.. face-smile.png
    Puedes obtener más información en :
    http://tinydoc.unesolution.fr/
  • Configurando Asterisk para guardar los registros del CDR en MySQL

    Por default Asterisk guarda los registros de llamadas en un archivo llamado Master.csv el cuál es un archivo de texto separado por comas, pero para otros fines a veces es necesario tenerlo en una base de datos para su posterior consulta, por ello pongo aquí un tutorial de como conectar Asterisk a MySQL para guardar los CDRs.
    Sobre entendiendo que ya se tiene instalado Asterisk, MySQL y todas las librerías requeridas continuamos.
    Por cuestión de licencias de MySQL, Asterisk ya no incluye la opción de guardar los registros en una base de datos de MySQL, por lo que ahora esa opción viene en Asterisk-addons el cuál se tiene que bajar para la versión de Asterisk a usar y compilarla.
    wget http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-addons-1.4.9.tar.gz
    sudo tar -xzvf asterisk-addons-1.4.9.tar.gz
    cd asterisk-addons-1.4.9
    #Ya que se descargue y se descomprima la versión de Asterisk Addons se tendrán que editar los siguientes archivos
    sudo editor cdr/cdr_addon_mysql.c
    #agregar al principio la siguiente línea tal como está
    #define MYSQL_LOGUNIQUEID
    sudo editor cdr/Makefile
    #agregar al final la siguiente línea tal como está
    CFLAGS+=-DMYSQL_LOGUNIQUEID
    #ahora si compilamos asterisk-addons
    sudo make clean && sudo ./configure && sudo make && sudo make install
    #si es una instalación nueva tendrías que ejecutar despues sudo make samples, si no no es recomendable para que no borre configuraciones ya realizadas.
    #si todo salió bien en la compilación ahora edita el archivo
    sudo editor /etc/asterisk/modules.conf
    # y agrega al final
    load => cdr_addon_mysql.so

    #ahora crea un usuario con su password y una base de datos de mysql que será para el cdr de asterisk
    mysql -u root -p
    create database asteriskcdrdb;
    grant all privileges on asterisk.* to asterisk@localhost identified by "password";
    flush privileges;
    exit;
    sudo editor asterisk.sql
    # crea un archivo y agrega lo siguiente
    CREATE TABLE `cdr` (
    `calldate` datetime NOT NULL default '0000-00-00 00:00:00',
    `clid` varchar(80) NOT NULL default ,
    `src` varchar(80) NOT NULL default
    ,
    `dst` varchar(80) NOT NULL default ,
    `dcontext` varchar(80) NOT NULL default
    ,
    `channel` varchar(80) NOT NULL default ,
    `dstchannel` varchar(80) NOT NULL default
    ,
    `lastapp` varchar(80) NOT NULL default ,
    `lastdata` varchar(80) NOT NULL default
    ,
    `duration` int(11) NOT NULL default '0',
    `billsec` int(11) NOT NULL default '0',
    `disposition` varchar(45) NOT NULL default ,
    `amaflags` int(11) NOT NULL default '0',
    `accountcode` varchar(20) NOT NULL default
    ,
    `uniqueid` varchar(32) NOT NULL default ,
    `userfield` varchar(255) NOT NULL default

    );
    ALTER TABLE `cdr` ADD INDEX ( `calldate` );
    ALTER TABLE `cdr` ADD INDEX ( `dst` );
    ALTER TABLE `cdr` ADD INDEX ( `accountcode` );

    #ahora ejecutemos el script de sql
    mysql -u asterisk -p asteriskcdrdb < asterisk.sql
    #ahora solo falta editar la conexión de asterisk a mysql, para eso editar el siguiente archivo
    sudo editor /etc/asterisk/cdr_mysql.conf
    #aqui editar los siguientes valores
    [global]
    hostname = localhost
    dbname=asteriskcdrdb
    table=cdr
    password = password
    user = asterisk
    port=3306
    sock=/var/run/mysqld/mysqld.sock
    userfield=1
    #es importante que en sock= asignes  dónde mysql coloca ese arhivo en Debian y ubuntu por default lo pone en /var/run/mysqld/mysqld.sock
    #Ahora ya teniendo casi todo listo solo inicia asterisk
    sudo asterisk start
    #si usas freepbx entonces
    sudo amportal restart
    #verificamos que se haya cargado el módulo de mysql para asterisk
    sudo asterisk -rvvv
    PhylevnMobile*CLI> module show like mysql
    #y debería mostrar algo como lo siguiente
    Module                         Description                              Use Count
    cdr_addon_mysql.so             MySQL CDR Backend                        0
    app_addon_sql_mysql.so         Simple Mysql Interface                   0
    res_config_mysql.so            MySQL RealTime Configuration Driver      0
    3 modules loadedI>
    #ahora vemos el status de la conexión de MySQL
    PhylevnMobile*CLI> cdr mysql status
    #y mostraría algo como lo siguiente
    Connected to asteriskcdrdb@localhost, port 3306 using table cdr for 1 hours, 1 minutes, 0 seconds.
      Wrote 1 records since last restart.
        -- Registered IAX2 '300' (AUTHENTICATED) at 127.0.0.1:32768
    #Si dice Not Connected entonces verificar los parámetros de conexión a la base de datos e igual checar que la base de datos esté dada de alta.
    #salimos
    PhylevnMobile*CLI> exit
    #ahora marcamos algún número desde un Softphone o teléfono IP para verificar que esté trabajando.
    #Checamos el registro de la base de datos
    mysql .u asterisk -p asteriskcdrdb
    mysql> select * from cdr;
    +---------------------+-------------+-----+--------+-----------+------------------+
    | calldate            | clid        | src | dst    | dcontext  | channel
    +---------------------+-------------+-----+--------+-----------+------------------+
    | 2009-07-21 21:36:44 | "1103" <Support> | 1103 | vmu101
    +---------------------+-------------+-----+--------+-----------+------------------+
    1 row in set (0.00 sec)
     
  • Curso de Voz sobre IP para implementación de Asterisk en un entorno Empresarial.

    Curso de Voz sobre IP con Asterisk PBX sobre Linux

    Objetivos:

    • Qué el asistente comprenda desde los conceptos básicos de Telefonía Tradicional y Voz Sobre IP hasta conocimientos avanzados de telefonía IP.
    • Conozca como instalar y configurar Tarjetas de Telefonía Sangoma & Digium.
    • Sepa diferenciar el uso de los diversos protocolos de comunicación.
    • Conozca la diferencia y uso de los diversos códecs.
    • Integrar nuevas aplicaciones alrededor de Asterisk.
    • Configurar las aplicaciones básicas de un conmutador IP.
    • Configurar extensiones y manejar el dialplan de Asterisk.
    • Configuración de IVRs, Grupos de marcación, DISAs, FollowMe, etc.,
    • Ruteo de llamadas por diveras tecnologías.
    • Instalar un Administrador Gráfico para Asterisk
    • Programación de aplicaciones con Asterisk Gateway Interface
    • Monitoreo de llamadas
    • Integración de aplicaciones desarrolladas con el Asterisk Manager Interface
    • Detección de fallos
    • Integración de aplicaciones externas con Asterisk
    • Integración de vTiger CRM con Asterisk
     Curso de Introducción a la plataforma Linux.

    Se provee un curso de introducción opcional que consta de 6 horas previas al curso de VoIP para que los asistentes nuevos en Linux puedan comprender aun más los aspectos fundamentales del Sistema Operativo Linux, plataforma sobre la cuál se integra la tecnología de Asterisk VoIP y conozcan el entorno sobre la cual se implementa Asterisk PBX. 

    Temario del curso de Linux Core

    ¿ Qué es Linux ?

    Obteniendo Linux

    Distribuciones Linux

    Instalación de Linux

    Sistema de Archivos de Linux

    Comandos principales

    Permisos de usuarios y accesos de archivos.

    Ejecución de aplicaciones.

    Instalación de paquetes.

    Compilación e instalación de aplicaciones medante código fuente.

    Manejo de editor de texto en linux.

    Edición de archivos de configuración.

    Configuración de servicios de arranque en Linux.

    Registros y Mensajes del Sistema.

    Detección de hardware.

    Monitoreo de sistema(CPU, RAM, Disco Duro).

    Configuración de Redes en Linux. 

    Temario del Curso de Implementación de Asterisk VoIP

    SESIÓN 1 

    Teoría

    Conceptos Básicos de Telefonía Tradicional.

    Terminología de la Telefonía tradicional.

    Concepto básicos de Voz sobre IP.

    Situación Actual de la Telefonía Tradicional en México

    ¿ Qué es la Telefonía IP ?

    Ventajas de Implementación de Telefonía IP en las Empresas.

    Diferencia entre Voz sobre IP vs Telefonía IP.

    Términos y Aspectos legales en México

    Protocolos de Voz sobre IP

    Codecs de Voz sobre IP

    ¿ Qué es Asterisk PBX?

    Aplicaciones de un Conmutador de Voz sobre IP basados en Asterisk PBX.

    Practica

    Instalación de Servidor Linux

    Configurando de usuarios

    Configuración del sistema de paquetes y repositorios de Linux.

    Configurando servicio de consola remota(SSH) para acceso remoto.

    Instalación de paquetes requeridos para Asterisk y FreePBX.

    Descarga de código fuente de aplicaciones requeridas para instalación de Asterisk PBX.

    Compilación de paquetes requeridos.

    Instalación de Paquetes de Conmutador de Voz Sobre IP con Asterisk PBX.

    Instalación de Drivers DAHDI o ZAPTEL para tarjetas Sangoma ó Digium.

    Configuración de tarjetas con DAHDI y ZAPTEL.

    Configuración de opciones generales de zapata.conf y dahdi.conf

    Configuración de grupos y canales de puertos FXO

    Instalación de Gateway para desarrollo de Aplicaciones de Voz Sobre IP.

    Instalación de Sonidos en español para IVR.

    Instalación y Configuración de Administrador Web FreePBX para Asterisk PBX.

    Actualización e instalación de nuevos módulos de FreePBX.

    Actualización e instalación de módulos no oficiales de FreePBX

    Esquema de archivos de configuración de FreePBX y Asterisk PBX.

    Edición de Archivos Generales de configuración de Asterisk PBX.

    Edición de archivos de configuración de Usuarios y Extensiones de Asterisk PBX.

    Configuración de Softphone en Linux, Windows y PocketPC como extensiones del conmutador de VoIP

    Evaluación de la Sesión

    Retroalimentación

    SESION 2

    Practica

    Configuración de Planes y Reglas de Marcación en archivos de configuración de Asterisk PBX.

    Configuración de Equipos FXS como extensiones de Conmutador VoIP.

    Configuración de Puertos FXO de SPA3102 como líneas de salida PSTN

    Configuración de Puertos FXO de tarjetas como líneas de salida PSTN.

    Configuración de dispositivo PAP2 para conexión de Fax.

    Consideraciones para Fax sobre IP.

    Configuración de Correo de Voz para extensiones.

    Configuración de conexión a un proveedor VoIP para realizar y recibir llamadas desde la red PSTN.

    Instalación de Códecs g729.

    Configuración de servicio DID(Número telefónico vía VoIP) con Asterisk PBX.

    Configuración de Ruteo de llamadas Entrantes al conmutador de VoIP.

    Configuración de Ruteo para llamadas Salientes del Conmutador de VoIP.

    Configuración de password y pins para llamadas salientes.

    Configuración de música de fondo para diversos contextos y grupos de marcación.

    Configuración de Follow ME.

    Configuración de Call Back.

    Configuración de Grupos de Marcación.

    Grabación de llamadas.

    Instalación de aplicación para revisión de llamadas grabadas.

    Implementación de Monitoreo y susurro de llamadas.

    Grabación de Mensajes para IVR y otros servicios del conmutador de Voz Sobre IP.

    Configuración de grupos de toma de llamadas.

    Transferencia y Toma de Llamadas

    Evaluación de la Sesión

    Retroalimentación

    SESION 3

    Práctica

    AudioConferencia en Asterisk PBX.

    VideoConferencia en Asterisk PBX

    Configuración de Acceso Remoto para Marcación Directa ( DISA ).

    Programación de AGI para implementación de DISA personalizado.

    Configuración de Ruteo de Llamadas por Horarios de Marcación.

    Configuración de Aplicaciones Interactivas de Voz ( IVR ).

    Configuración de dispositivo USB e integración con FreePBX para envío de SMS desde aplicación web.

    Configuración de Colas de Llamadas.

    Revisión de Códigos de Marcación de Asterisk.

    Revisión del Panel de Marcación de FreePBX.

    Modificación de base de datos de CDR de Asterisk PBX.

    Configuración y programación de CDR.

    Modificación del sistema de reportes CDR de FreePBX.

    Uso de la consola para depuración de eventos de Asterisk

    Conociendo las opciones de la consola de Asterisk

    Recarga de funciones de Asterisk

    Monitoreando canales en Asterisk

    Conociendo el log de Asterisk

    Detección de problemas y fallos en Asterisk.

    Instalación de IAXModem & Hylafax como Fax Virtual

    Instalación y Configuración de AvantFax como Administrador Web de Faxes.

    Configuración de Hylafax para envío de Fax desde Aplicaciones Windows.

    Evaluación de la Sesión

    Retroalimentación

    SESION 4

    Práctica

    Instalación del FrameWork de PHP AGI

    Que es un AGI

    Qué es AMI

    Instalación de Festival y parlante en español

    Programación AGI(Asterisk Gateway Interface) demo de interfaz entre Asterisk y Aplicación LAMP

    Ejecución de Aplicaciones desde llamadas telefónicas con Asterisk

    Desarrollo de aplicaciones VoIP haciendo uso de AMI(Asterisk Manager Interface)

    Programación de AMI para monitoreo de llamadas

    Programación de AMI para interfaz con sistema de tarificación de llamadas

    Integración de aplicación Click to Call.

    Configuración de WebPhone

    Integración de sistema de detección de movimiento con Asterisk.

    Configuración de Marcaciones Internas para Accesos a Diversas Aplicaciones VoIP desarrolladas.

    Integración de AsterCRM con Conmutador de Voz sobre IP.

    Tarificador de llamadas

    Implementación de un Conmutador de Voz sobre IP para un escenario real.

    Evaluación de la Sesión

    Retroalimentación

    Material Entregable:

    Disco con todos los paquetes a usar en el curso de implementación del conmutador de Voz sobre IP.

    Distribución de Linux Server & Linux Desktop.

    Libro Electrónico El Futuro de la Telefonía.

    Documentación sobre el proceso de instalación de Asterisk VoIP.

    Presentación del curso de Voz sobre IP.

    Cuenta VoIP con 10 Dlls de Crédito & DID para prueba de llamadas vía VoIP.

    Teléfono VoIP Aastra 6730i, ATA SPA3102 o Tarjeta X100P 1 Puerto FXO.

    Lugar:

    Por definir por parte de los asistentes

    Fecha y Horarios del curso:

    Fecha y Horario: Por definir por parte de los asistentes

    Límite de Asistentes:

    Por definir

    Adicionales:

    Cualquier duda posterior a la fecha del curso podrá atenderse vía correo electrónico o messenger para atender dudas que hayan salido con respecto algunos de los temas, instalación o configuración de los temas vistos en el curso.

    Inversión:

    Cotizar el costo mediante el sistema de cotizaciones, por favor regístrese en nuestro sistema y seleccione Curso Especializado de Asterisk PBX para que le llegue a su correo información de curso y costo.

    50 % Antes del curso y el resto previo al inicio del curso.

    Descuentos:

    A partir de 3 Personas Inscritas hay un descuento del 10% sobre el costo original.

    5 Personas o más 20% de Descuento

    10 Personas o más 30% de Descuento.



    Contacto: http://oaxrom.com/index.php?option=com_contact&view=contact&id=1&Itemid=44
  • Script AGI para conectar con sistema de tarificacion AsterBilling

    Asterbilling es un software que permite integrar un tarificador a Asterisk basado en prefijos, longitud del número de marcado, entre otras cosas, muy apto para ser usado en casetas telefónicas, aparte que tiene un sistema de monitoreo para cuándo se marque un número muestre el tiempo marcado, el número, etc y de ahi mismo imprimir un ticket.
    Como plugin adicional para Asterbilling hice un script en php que lo que hace es consultar desde un teléfono el costo de las llamadas desde un cabina en específica, de tal forma que usando festival te regresa de forma hablada la fecha marcada, el tiempo de la llamada, el número marcado y el costo total de la llamada en base a la tarifa aplicada.
    Este script también permitiría imprimir un ticket en una impresora de tickets conectada al puerto serial, solo bastaría crear un archivo con la información y mandarlo al puerto lpt.
    #!/usr/bin/php -q
     <?php
    //llamamos a las librerias de phpagi
      require("phpagi/phpagi.php");
    //activamos la bandera de enviar todo lo que se realice a consola como modo depuracion
      error_reporting(E_ALL);
    //creamos una instancia de la clase AGI
     $agi = new AGI();
    //generamos el comando Answer de Asterisk, este comando siempre lo ejecutamos al inicio de un AGI
     $agi->answer();
    //Este demo consultaria informacion en una base de datos y regresaria la informacion de forma hablada por lo que generamos una conexion a la base de datos de sql
     $conexion = mysql_connect("localhost","astercc","astercc") or die("Error: El servidor no puede conectar con la base de datos");
    //Referenciamos el cursor a la base de datos
     mysql_select_db("astercc",$conexion);
    //obtenemos el caller id de quien realiza la llamada
     $_cid = $agi->parse_callerid();
    //enviamos un mensaje de voz por medio de festival que esta configurado en idioma espanol
     $saludo_hora = (date("H")<12)?"Buenos Dias!"<img src="plugins/Emoticons/images/face-sad.png" border="0" alt="face-sad.png " width="16" height="16" />(date("H")<19)?"Buenas tardes!":"Buenas Noches!");
           
             $agi->text2wav("Hola $saludo_hora");
              do{
                    $agi->text2wav('¿Que cabina desea tarificar? 0 para salir');
           
                    //enviamos un beep y esperamos 20 segundos en la espera de una respuesta
                    $_result = $agi->get_data('beep', 5000, 20);
                    //obtenemos la informacion introducida desde el telefono
                    $cabina = $_result['result'];            
                       if($cabina!="" and $cabina!="0"){
                                 $query = "select c.id, c.calldate, c.src, c.dst,  c.didnumber, c.duration, c.billsec, c.disposition, c.calltype,  c.userfield,
                                                            m.dialprefix, m.numlen,  m.destination, m.connectcharge, m.initblock, m.rateinitial, m.billingblock
                                                            from mycdr c, myrate m  
                                                                    where c.src='$cabina' and c.disposition like '%ANSWERED%'
                                                                            and c.userfield='UNBILLED'
                                                                            and (c.dst like concat(m.dialprefix,'%') or length(c.dst)=m.numlen)
                                                                            and (c.groupid=m.groupid or m.groupid=0)
                                                                            and (c.resellerid=m.resellerid or m.resellerid=0)
                                        order by
                                                    "
    ;
              //select c.id, c.calldate, c.src, c.dst,  c.didnumber, c.duration, c.billsec, c.disposition, c.calltype,  c.userfield,m.dialprefix, m.numlen,  m.destination, m.connectcharge, m.initblock, m.rateinitial, m.billingblock from mycdr c, myrate m where c.src='102' and c.disposition like '%ANSWERED%' and c.userfield=UNBILLED and (c.dst like concat(m.dialprefix,'%') or length(c.dst)=m.numlen) and (c.groupid=m.groupid or m.groupid=0) and (c.resellerid=m.resellerid or m.resellerid=0)
                    $agi->verbose($query);
                                $_result = mysql_query($query);
                                //verificamos si existe un resultado
                    $total = 0;
                    $subtotal = 0;
                    $ticket = "";
                    $count = 1;
                                 while($_re = mysql_fetch_array($_result)) {
                                           $subtotal = $_re[13];
                           if($_re[6]>$_re[14]){
                                $charge_additional =  (ceil( ($_re[7]-$_re[14])/$_re[16]) )*$_re[15];
                                $subtotal += $charge_additional;
                                           }
                           $total += $subtotal;
                                           $ticket .= " llamada $count.
                                        Fecha: $_re[1].
                                        Tiempo de la llamada: $_re[6] segundos.
                                        Numero Marcado: $_re[4].
                                        Tarifa aplicada: $_re[destination].
                                        Costo: $subtotal pesos.."
    ;
                                 }
                     if($total>0){
                        $agi->text2wav("Total a pagar $total pesos. Desglose : ".$ticket." Total a pagar: $total pesos");
                        $agi->text2wav("Desea imprimir el ticket?Presione 1 para Aceptar. Otro para salir");
                        $_result = $agi->get_data('beep', 5000, 20);
                        $print = $_result['result'];
                        if($print ==1){
                            $ticket = str_replace(".",".\n", $ticket)."\n\nTotal a pagar: ".$total." pesos";
                            //imprimir ticket
                                //guarda archivo
                                //manda archivo a LPT
                                //elimina archivo impreso
                            //guardar registro
                        }
                     }else{
                         $agi->text2wav("No hay llamadas para tarificar en la cabina $cabina!");
                     }
                       }
             }while($cabina != '0');
         $agi->text2wav("Hasta luego. $saludo_hora");
    //al finalizar el script del AGI siempre es recomendable ejecutar esta funcion para no dejar el canal abierto.
      $agi->hangup();
     ?>
    //*****
     
  • Como ver las consultas que realiza una aplicacion propietaria en una base de datos libre..

    Hace unos días me contactó una persona preguntándome sobre una solución de toma de inventarios para dispositivos móviles que liberé de forma gratuita hace un par de años en internet de la cuál ya ni me acordaba, esta aplicación de lo que recuerdo es que permitía capturar 5 campos aparte de código y cantidad en una toma de inventarios muy básica para dispositivos con Windows Móbile, avanzando en la plática le sugerí mejor una solución más profesional que ofrece una empresa que distribuye terminales portátiles.
    Esta persona después me volvió a contactar ya que a dónde lo mandé le preguntaron si su sistema soportaba importación de datos en formato csv, txt, xls, entonces él le pregunto al proveedor de su sistema administrativo y le dijo que si, pero que era un sistema de importación de datos que no era compatible con la solución de los móviles, su proveedor le dijo que podrían hacerle un desarrollo para que el sistema que tiene pudiera importar datos csv(algo muy simple), pero se vino de espaldas cuándo le dieron el costo del desarrollo por ese módulo personalizado de importación de datos.
    Preguntándole más sobre su sistema pude saber que la base de datos que está detras de ese sistema propietario es MySQL, una base de datos libre, por lo que se me ocurrió algo para saber como el pudiera importar su información sin tantos dolores de cabeza.
    La idea era que hiciera un registro de inventarios para saber que tablas y que consultas se realizaban al hacer la operación, la forma de saber las consultas es mediante una forma muy llana y simple, habilitando el log de mysql.
    Generalmente el registro de transacciones de mysql debe estar desactivado, por cuestiones de performance en la base de datos, pero para este caso solo bastó editar el archivo de configuración my.cnf en la línea
    log=PATH_DEL_LOG
    Y reiniciar MySQL..
    Con esto el realizó el registro de inventarios y solo revisando el archivo log de mysql se observa el usuario, la fecha, hora y consultas realizadas, de tal forma que fué una manera rápida de saber como esa aplicación propietaria afectaba los inventarios y con lo cuál ya podría desarrollarse una simple interfaz de importación de datos csv para que sea compatible con el sistema de toma de inventarios para dispositivos móviles.
    Obviamente despues de verificar las transacciones de mysql, se volvió a desactivar el log para no afectar el rendimiento de MySQL.
Anterior página 1 2 3 Siguiente página
27 entradas

Emblemas

Energizado por Jaws Project
Soporta RSS2
Energizado por Software Libre
Energizado por Mozila Firefox
Energizado por Ubuntu Linux
Energizado por PHP
Energizado por Apache Web Server
Energizado por MySQL
Energizado por SQLite
atom

¿ Where The Hell Am I ?

Mi Flickr







Aquí Mis Mejores Fotos

Eventos

Encuesta

¿Que medio de comunicación usas más ?

Comentarios Recientes