#ContraElSilencio

#ContraElSilencio





No a la supresión de la libertad de expresión en internet que pretende realizar el gobierno arbitrario de Enrique Peña Nieto en México

Software

  • ¿ Como desensamblar en linux ejecutables desarrollados en Visual Studio .Net ?

    Hace unos días leí que Microsoft había violado la GPL, pues tomó el código de una aplicación para generar ISOs de su nuevo sistema Windows 7 , la cuál el código es libre bajo la licencia GPLv2, y Microsoft lo que hizo fué tomar el código, crear una nueva aplicación cerrar el código y venderlo.
    Pero no contaba que un internauta desensamblaría su nueva aplicación y encontrara similitud entre él código de la aplicación libre y la "nueva" aplicación de Microsoft.
    Por ello estuve buscando una aplicación que desensamblara las aplicaciones .Net solo para probar ya que también desarrollo en .Net, pero en este caso estuve buscando una que funcionara en Linux, ya que eso de entrar a Windows me da flojera, por lo que buscando en los repositorios de Ubuntu me encontré con DotGnu y pnet-dev, por lo que solo hice un
    sudo apt-get install pnet pnet-dev pnet-ctools pnet-assemblies
    Y con eso ya tenía instalado el desensamblador para .Net.
    Por lo que solo bastó ejecutar
    ildasm MiAplicacionEnPuntoNet.Exe
  • ¿ Como verificar si hay un proceso corriendo y si no ejecutarlo ?

    Hace unos días un amigo me envío un correo pidiéndome que le indicara como ejecutar un script que estuviera checando constantemente si un proceso esta ejecutándose y si no que el script lo ejecutara.
    Para esto le envíe el siguiente ejemplo y lo posteo por aquí por si alguien le fuera de utilidad..
    #ejecutamos este comando para crear un directorio#
    sudo mkdir /scripts
    #editamos el script#
    sudo editor /scripts/script.sh
    #***colocar lo siguiente dentro del script**#
    #/bin/bash
    if [[ ! `pidof -s nombre_del_proceso` ]]; then
         sudo /ruta_del_proceso/nombre_del_proceso
    fi
    #****Hasta aqui***#
    #ejecutar este comando para asignar permisos de ejecución
    chmod +x /scripts/script.sh
    #Por ejemplo que el script anterior lo guardáramos en /scripts/script.sh
    Para que este script se ejecute y verifique cada x tiempo si asterisk esta arriba hay que ponerlo en el archivo de /etc/crontab
    #ejecutar
    sudo editor /etc/crontab
    #agregar al final del archivo lo siguiente

    #     m     h     dom mon dow user  command
    1/10  *     *     *     *               root    /scripts/script.sh
    #***hasta aqui*******

    #lo anterior indica que el escript se ejecutará cada 10 minutos todas las horas y todos los días del mes, el usuario que lo ejecutará es root y el ecript está en /script/script.sh
    #despues guardar los cambios en /etc/crontab y luego reiniciar ejecutando
    sudo /etc/init.d/cron  restart
     
  • 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/
  • La verdadera historia de internet

    Los domingos en canal 22 está pasando un buen documental titulado "La Verdadera Historia de Internet", anteriormente hablaron de IBM, Microsoft, Google y este domingo se aventaron la historia sobre napster, myspace, facebook, youtube, craiglist y wikipedia, de verdad que está bastante interesante el documental, ya que trata sobre como fué evolucionando el internet a traves de los años hasta la revolución digital que se vive en estos días.
    Pueden empezar a ver desde el primer capítulo en youtube en la siguiente URL:
    http://www.youtube.com/watch?v=nH0cby2lMk8
  • Modificando la barra de direcciones de Firefox 3.X para hacerla funcionar como Firefox 2.X

    Hace tiempo instalè Firefox 3.0 pero desde que lo instalè algo que no me gusto de esta versiòn fuè su nueva barra de direcciones, a muchos les parece novedoso y bonito, lo novedoso si lo es, pero para mi no es tan bonito, esto porquè la nueva barra de firefox permite hacer bùsquedas en el historial o los bookmarks de las palabras que pongamos en el navegador, quizà para muchos esto les funcione pero en mi caso no, ya que siempre inicio poniendo en la barra de direcciones el principio del url.

    Entonces por ejemplo si pusiera phylevn, para buscar phylevn.binniza.com, con la actual barra de firefox 3 me listaría todas las páginas dónde tengo las URL o tìtulos de las páginas lleven phylevn como flickr.com/phylevn, youtube.com/phylevn, twitter/phylevn, etc., pero esto no es práctico ya que solo busco la url que empieza con phylevn.

    Por lo que buscando en internet encontré en un foro que la forma fácil y rápida de asemejar la barra de direcciones de firefox 3 a la versiòn 2 es editando la configuraciòn, para esto solo basta escribir en la barra de direcciones:

    about:config

    Y en seguida buscar

    browser.urlbar.default.behavior;1
    browser.urlbar.matchBehavior;1

    Y cambiar sus valores a

    browser.urlbar.default.behavior;17
    browser.urlbar.matchBehavior;3

    Con esto ya tenemos una barra al estilo de Firefox 2.

    Por cierto si no has probado Firefox aún como navegador web ¿ Qué esperas ?

    Obtenlo de la siguiente URL:




    http://download.mozilla.org/?product=firefox-3.5.6&os=win〈=es-MX


  • Como actualizar Sistema Operativo de Symbol Motorola MC9090

    Hace unos días me contactaron para ver si podía instalar una aplicación .Net CF para Windows CE 4.2 en una terminal portátil con Windows CE 5.0, el detalle al hacer la instalación es que el desarrollo tenía librerías desarrolladas para CE 4.2 por lo que no era posible ejecutar la aplicación en Windows CE 5.0, entonces había 2 opciones migrar el desarrollo hacia 5.0 ó conseguir alguna terminal con Windows CE 4.2.
    En el primer caso los que me contactaron no tenían el código fuente ya que la empresa que les desarrolló la aplicación no les dió el código fuente, una de las razones del porqué usar Software Libre, esto ya que en mi caso cuándo hago desarrollos entregó el código fuente a la empresa que le programo. En la segunda opción de conseguir terminales con Windows CE 4.2 el detalle es que estas terminales se dejaron de producir hace algunos par de años y salió la versión de MC9090 con Windows CE 5.0. Afortunadamente es posible hacer un downgrade de Windows CE 5.0 a Windows CE 4.2 y que es básicamente lo que comento a continuación.
    Antes que nada primero obtener los siguientes archivos de la página de Motorola (Antes Symbol Technologies).
  • Imagen de Windows CE 4.2 para MC90xx

    90xxc42OS010007.bgz
  • Imagen del Platform de MC90xx

    90xxc42Plat018.hex
  • Imagen de Application del MC90xx

    90xxc42App32M018.bgz
  • Tabla de Particiones de la MC90xx

    90xxc42PT32M018.hex
    Symbol Motorola MC9090 con Windows CE 5.0
    Se puede usar las imágenes Splash Screen de algunas otras versiones..
    http://software.symbol.com/detail.cfm?prod=1765
    Ya que se obtengan los archivos mencionados, conectar la cuna de la terminal a la corriente eléctrica, esto es muy importante al igual que asegurarse que no haya una desconexión eléctrica durante el proceso de instalación de las imágenes en la memoria EEPROM de la terminal, ya que podría dejar temporalmente como un buen pisapapeles a la terminal hasta que sea enviada al soporte de Symbol.
    Reiniciar la terminal en modo IPL(Initial Program Loader), para esto sacar la batería de la terminal, presionar el botón del scanner y el botón de power al mismo tiempo, mantenerlos presionados, y conectar la terminal a la cuna. Si todo salió bien se debería ver el menú de IPL, si es así soltar los botones anteriores.
    Ahora conectar el cable usb de la cuna a la PC, aquí es importante que previamente se haya cargado el "Device Configuration Package" , al conectar el cable USB a la PC pedirá unos drivers, estos buscarlos en el directorio dónde se instaló el DCP.
    Ya que se hayan instalado los drivers del cable USB entonces mediante DCP cargar los archivos .hex a la terminal portátil.
    En el Menú del IPL cargar las imagenes en el siguiente orden:
  • Partition Table
  • Windows CE 4.2 Image
  • Platform Image
  • Application Image
  • Splash Screen
    En el programa DCP seleccionar los archivos correspondientes y en el puerto de conexión seleccionar el puerto USB para hacer el envío a la terminal de las imágenes de los archivos .hex, es importante que durante el envío no se desconecte el puerto USB de la cuna ni tampoco se desconecte de la correinte eléctrica.
    Cuándo se termine de hacer el procedimiento seleccionar del menú IPL la opción de reiniciar, y si todo salió bien se tendría instalado Windows CE 4.2 en vez de Windows CE 5.0 en la terminal portátil MC9090.
    Como recomendación para los que contratan desarrollos de aplicaciones para Terminales Portáiles es que les incluyan el código fuente y si es posible que los desarrollos incluyan versiones para diversos sistemas operativos de Windows Mobile, .Net CF permite entregar versiones para Pocket PC hasta Windows Mobile, incluyendo Windows CE 4.X y Windows CE 5.X. También hay que analizar el ciclo de soporte incluído en las terminales a utilizar.
  • iMest Aplicacion Web para envio de SMS con Gnokii

    No teniendo otra forma de colaborar con México en esta situación de alerta nacional y para con mi gente más que con lo poco que sé que de programación, hoy he liberado una versión beta de un software llamado iMest que permite envío de SMS múltiples por tipos de contactos desde una página web.
    Este software queda licenciado bajo la GPL lo que indica que cualquiera puede descargarlo, usarlo sin costo alguno, modificarlo y distribuirlo entre otras ventajas del Software Libre
    La intención de este software es que diversas personas, empresas y organizaciones puedan tener una base de datos de las personas relacionadas con la entidad y asi puedan enviarle información a sus teléfonos celulares casi de manera instantánea y personalizada usando como gateway sms algun teléfono Nokia, de tal forma que puedan informarse sobre diversas contigencias.
    El proyecto puede descargarse desde la siguiente URL
    https://sourceforge.net/projects/binnizawebsms/
    Pueden verse algunos screenshots desde la siguiente URL:
    https://sourceforge.net/project/screenshots.php?group_id=260344
    Para mayor información sobre el uso, requerimientos, instalación y configuración del software vaya a la siguiente página:
    http://phylevn.binniza.com/index.php?page/Binnita_NetApps_iMest_WebSMS
    Espero este software pueda serle útil a alguien.
    Cómo cualquier beta este software debe tener gran cantidad de errores y horrores de programación, se aceptan comentarios, sugerencias y tips de programación.
    Cualquier duda sobre la instalación y configuración del software siéntanse en la libertad de hacérmela saber y a vuelta de correo poder darles una respuesta.

    Phylevn

    Binniza NetApps

    México D.F.

    Abril 2009
  • 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
  • Instalando Flash 10 para mejor uso del CPU

    Instalando Red5 como base para instalar un sistema de videoconferencia web, en el tutorial de instalación veo que recomiendan usar Flash 10 en Linux ó MacOS esto para mejor rendimiento del CPU sobre aplicaciones Flash, esto ya que comúnmente al abrir una página de youtube por ejemplo el consumo de CPU se disparaba al monitorearlo en la consola de Linux, por lo que decidí actualizar la versión de flash al pre-release del plugin de Flash 10.
    Lo primero que hay que hacer es obtener el prerelease de Flash 10 de la siguiente url:
    http://www.adobe.com/go/getflashplayer
    mkdir ~/software/
    cd ~/software/software
    wget http://fpdownload.macromedia.com/get/flashplayer/current/install_flash_player_10_linux.tar.gz
    cd /usr/src
    sudo tar -xzvf ~/software/install_flash_player_10_linux.tar.gz
    cd install_flash_player_10_linux
    whereis firefox
    firefox: /usr/bin/firefox /etc/firefox /usr/lib/firefox /usr/share/firefox /usr/share/man/man1/firefox.1.gz
    #El directorio de firefox es /usr/lib/frefox
    #cerrar firefox ó el navegador que se usa
    #ejecutar el instalador de flash 10
    sh ./install_flash_player
    #Y aceptar la instalación y la licencia
    #luego introducir el directorio de firefox ó el navegador que se usa
    #aceptar nuevamente la instalación y listo
    #reiniciar firefox abrir algunapágina con flash y ya debería verse en propiedades de flash que se usa la versión 10.
     
  • 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();
     ?>
    //*****
     
  • Anterior página 1 ... 4 5 6 ... 15 Siguiente página
    143 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

    Comentarios Recientes