Hagamos que México crezca..

Prefiere el consumo de lo Hecho en México

Visitantes








Conversación

  • 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  
  • Ben: Welcome to visit www.vogue4biz.com and www.seekjersey.com! Wholesale Jordan Shoes and NFL/NHL jerseys!New Arrival ! Free Shipping !
    Consequently, a Avirex jacket variety evolved into winner fashion4biz already in the market, mainly with their variety of air travel puma shoes women jackets which in turn for the most part mimics those of journey outdoor jackets put on around WWII. Due to its results, Avirex make have in addition enhanced by jackets to other common attire outlines including t shirts, hoodies, along with jeans.
    A great number of completely new attire lines also gained plenty of celebrity inside entertainment world. To its captivating pattern in addition to level of quality attire, Avirex includes received its own head connected with celebrity followers which include: Ruben Travolta, Will certainly Henderson, Puffy Hair combs, Chad Good ole', Shaquille O'Neal, Busta Rhymes,, puma shoes ladies Sylvester Stallone, Missy Elliott, Eminem, Nas, All 5, Procedure Guy,, Make Nubian, Lmost all Awesome L, David Cena, as well as Georgio Armani. Start off your individual from suppliers avirex company by www.vogue4biz.com
    Avirex regarding todayIn women s puma shoes 2008, this Avirex make has been bought in 3 entire ladies puma shoes suede puma shoes world districts, United states of america, European countries puma shoe sale along with The japanese. A brand new owner of Avirex brand in the us cat puma shoes can be Draw Ecko Corporation. According to a lot of people, each one districts possess their own libraries regarding Avirex garments range. Not really a pair of parts get identical types associated with outfits. His or her just likeness is with their particular usage of brand.
    Even puma ladies shoes so, the availability associated with flight handling outdoor jackets were quit afterwards that year. In line with Mark, all of Avirex printed government and timeless apparel had been discontinued along with used a new Clymans firm, Cockpit U . s .. Start out your own from suppliers avirex company by Sevenwholesale.com.  
  • 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???  
  • Jose: Heyu como podria funcionar con el CM15?
    Gracias  

Escribe el código Captcha que estás viendo

Programacion

  • Procedimiento para instalación de Software WebSMS Beta.

    Procedimiento para instalar el software OaxRom WebSMS Beta en Linux

    Este software puede obtenerse desde el sitio de SourceForne.Net en la siguiente URL:
    https://sourceforge.net/projects/binnizawebsms/files/OaxRom%20WebSMS%20iMest%200.03%20Beta/sms.zip/download

    #INSTALACION DE OAXROM WEB SMS EN UBUNTU LINUX
    #actualizamos el repositorio de Ubuntu
    sudo apt-get update
    #instalamos las dependencias del software
    sudo apt-get install --yes apache2
    sudo apt-get install --yes php5 php5-cli php5-mysql php-pear libapache2-mod-php5 php5-curl php5-gd php-db
    #al instalar el servidor de Base de Datos pedirá una contraseña, introducir "ubuntu" sin comillas o alguna otro password para acceso al servidor que se usará más adelante
    sudo apt-get install --yes mysql-client-5.0 mysql-server-5.0 libmysqlclient15-dev
    sudo apt-get install --yes libgnokii3 libgnokii3-dev  gnokii  gnokii-common gnokii-cli gnokii-smsd  gnokii-smsd-mysql
    sudo apt-get install --yes unzip
    #entramos al directorio web
    cd /var/www
    #obtenemos el software desde internet
    Ir al sitio del proyecto en https://sourceforge.net/projects/binnizawebsms/ y obtener la última versión disponible de OaxRom WebSMS
    #descomprimimos el archivo
    sudo unzip sms.zip
    #accedemos al directorio
    cd sms
    #creamos la base de datos para el WebSMS
    mysql -u root -p
    #password: es el que se introdujo cuándo se instaló mysql en este caso:ubuntu
    #Asignar password
            create database NOMBREBASEDEDATOS;
            grant all privileges on NOMBREBASEDEDATOS.* to USUARIO@localhost identified by "SUPERSECRETO";
            flush privileges;
            exit
    mysql -u USUARIO -pSUPERSECRETO NOMBREBASEDEDATOS < imest.sql
    #configurar en el siguiente archivo los parámetros de nombre de base de datos, usuario y password
    sudo editor includes/config.php
    #creamos el archivo dónde recibiremos los archivos csv de contacto que importemos
    mkdir csv
    #copiamos el directorio cron que contiene un script para monitorear constantemente los envíos de SMS programados
    sudo cp -rf  cron csv
    #buscamos el usuario del servidor web apache
    ps aux | grep apache
    #esto podría regresarnos "www-data"  en la primera línea sin las comillas, ese valor lo usaríamos a continuación
    #www-data  8284  0.0  0.4  28404  4388 ?        S    14:46   0:00 /usr/sbin/apache2 -k start
    #asignamos el  usuario y grupo del usuario del servidor web a la carpeta creada para que tenga permisos de escritura la aplicación WebSMS
    sudo  chown -R www-data:ww-data csv
    #ponemos al usuario web apache dentro del grupo de usuarios que tienen permiso de usar los puertos módem, esto para enviar sms por los usb de los teléfonos
    sudo editor /etc/group
    #buscamos dónde diga dialout y agregar ",www-data" sin las comillas, en este caso dice phylevn pero el valor cambia al usuario del sistema
    dialout:x:20<img src="plugins/Emoticons/images/tongue.png" border="0" alt="tongue.png " width="16" height="16" />hylevn
    #por
    dialout:x:20<img src="plugins/Emoticons/images/tongue.png" border="0" alt="tongue.png " width="16" height="16" />hylevn,www-data
    #guardamos, para el caso del editor nano presionando CTRL+O,ENTER para aceptar y luego presionamos CTRL+X para salir.
    #modificamos la configuración de PHP
    sudo editor /etc/php5/apache2/php.ini
    #buscamos los siguientes valores en el archivo y le ponemos los valores aquí mencionados, para buscar en el editor presionar Ctrl +W y teclear default_charset para ir a donde estuviera la linea buscada, igual para las siguientes opciones
    default_charset = "utf8"
    magic_quotes_gpc = off
    upload_max_filesize = 32M
    max_execution_time = 900
    max_input_time = 900
    memory_limit = 128M
    #ya que se editen estos valores, presionar CTRL+O y ENTER para guardar, luego CTRL+X para salir.

    #reiniciamos el servidor web
    sudo /etc/init.d/apache2 restart
     
    *************

    Probando el software de envío de SMS

    *************

    Abrimos un navegador web a la dirección IP de la máquina dónde se instaló el software de envío de SMS

    #por ejemplo si el servidor está sobre la misma máquina que se está usando:

    http://localhost/sms/

    #Si estuviera en alguna otra máquina

    http://DIRECION_IP_DEL_SERVIDOR/sms

    #Pedirá un login y password, por default es :

    login:admin

    password:admin

    Para probar el envío de SMS:

    Conectar un teléfono por USB, los Nokia funcionan bien.

    Cuándo se conecta el teléfono en Linux lo detecta como un puerto TTYACM0

    Esto se puede verificar tecleando el comando "dmesg" y podría darnos algo como lo siguiente

    [28833.199893] cdc_acm 4-1:1.1: ttyACM0: USB ACM device

    Para que el sistema detecte el puerto conectado ir a configuración y seleccionar detectar puerto, si lo lista entonces todo va bien, de lo contrario reintentar


    Al momento de detectar el puerto por default crea un archivo de configuración en el directorio csv

    Si detectó el puerto ahora se puede enviar el mensaje sms, para esto ir a

    Mensajes SMS -> Solo un Mensaje


    El introducir un número de celular,

    un texto,

    seleccionar el archivo de configuración por dónde se desea enviar el SMS, en este caso solo está el que se creó anteriormente,

    introduzca las letras para validación y presione enviar.


    El sistema enviaría en automático el mensaje SMS al número introducido, verificar que haya llegado correctamente


    *************

    INFORMACION ADICIONAL

    *************

    Si por alguna razón no envía los sms, puede ser que linux no le esté permitiendo al usuario apache usar gnokii, para esto editar el archivo<br>
    sudo editor /etc/sudoers<br>
    y agregar
    www-data ALL=NOPASSWD: gnokii
    esto para que al usar sudo gnokii linux se salte el password y le deje ejecutar el software

     
    *************

    GNOKII

    *************

    #archivo de configuración de gnokii
    #El sistema permite leer diversos archivos de configuración de Gnokii de tal forma que es posible usar diversos móviles para enviar SMS desde la aplicación web.
    #Cada teléfono es detectado como un puerto serial por Linux, por ejemplo si se detecta el siguiente puerto /dev/ttyACMO el archivo configurado csv/gnokiiNokia3500 contendría lo siguiente:
    [global]
    port = /dev/ttyACM0
    model = AT
    connection = serial
    debug=on
    #Y asi sucesivamente se pueden configurar diversos teléfonos, el sistema en base al archivo de configuración detectará las configuraciones y las usará para enviar SMS.
     
    *************

    Programación para fecha de envío de mensajes.

    *************

    csv/cron.sh
    #Archivo que se pondrá en cron para que cada hora se ejecute y verifique si ya se ejecutó cron.php, si no se ha ejecutado lo ejecuta.
    #Aquí hay que editar el directorio dónde se instaló cron.php
    csv/cron.php
    #Archivo que consulta la base de datos y verifica que mensajes tienen fecha anterior a la actual y que no han sido enviados para poder empezar a enviarlos usando gnokii
    #En este archivo hay que configurar la ruta del archivo init.php y sms.php
    #Es importante que el directorio de cron se encuentren fuera del directorio web.
    #Para que el sistema verifique los mensajes a enviar periodicamente editar el siguiente archivo :
    sudo editor /etc/crontab
    #Y agregar al final la siguiente línea
    0       *       *       *       *   root    php  -q /var/www/sms/csv/cron.php
    #presionar CTRL+O luego ENTER para guardar
    #reiniciamos el servicio de programador de tareas
    sudo /etc/init.d/cron restart
    #con esto el sistema monitoreará cada hora los mensajes SMS por enviar

     
    *************

    Configuración de APACHE para enviar SMS desde página web.

    *************

    find /etc/apache2/ -type f| xargs grep "User "
    #Posiblemente nos regrese www-data.
    #Este usuario hay que ponerlo dentro del grupo de dialout
    $sudo editor /etc/group
    #agregar al grupo dialout el usuario www-data.
    dialout:x:20:gsmsms,www-data
    #reiniciar apache
    sudo /etc/init.d/apache restart
     
    *************

    Modificando la configuracion

    *************

    sudo editor includes/config.php
     
    $sqlDb = "imest";
    $sqlUser = "imest";
    $sqlPassword = "imest";
    $sqlServer = "localhost";
    $appID = "jUi109-HJikL";
    $appKey = "7Uy-L09P;=lIkH";#permite usar el sistema para enviar SMS desde otras aplicaciones con C# mediante metodos POST como por ejemplo la librería webstream ó curl.
    define('CSV_PATH','/var/www/sms/csv/'); #Directorio dónde se almacenarán los registros CSV importados para importar contactos.
    $dir_fuentes = "/var/www/sms/includes/fonts/"; # si se instaló en otra parte el servidor reeeditar la ruta correspondiente en esta parte
    define('CONFIG_PATH','/var/www/sms/csv/'); #Directorio dónde se encuentran los archivos de configuración de los dispositivos de gnokii.
    define('CONFIG_FILE','gnokii'); #archivos de configuración de gnokii que contengan en el nombre de archivo la cadena configurada. por ejemplo /csv/gnokiiNokia3500, /etc/gnokii6130, etc.
     
    http://www.oaxrom.com
    México, D.F. 2009
  • ¿Como enviar correos usando SMTP en formato HTML ?

    Hace unos días un amigo me contactó para preguntarme si sabía como enviar correos en formato HTML usando el protocolo SMTP, por lo que me acordé que hace unos 5 años desarrollé un sistema de cotizaciones vía web para la empresa dónde trabajaba, ahí enviaba correos mediante SMTP para informar de las cotizaciones que generaban los clientes desde la aplicación web.
    Por lo que pongo aquí la clase que usé y que es muy fácil de usar, este código requiere de PHP PEAR Mail, el código está algo sucio pero es funcional
    <?php
    require_once "Mail.php";
    require_once "Mail/mime.php";
    class Correo{
        private $_mail_data = array();
        private $to = "";
        private $subject = "";
        private $body = "";
        private $smtpout = null;
    //SMTPLOGIN, SMTPPASSWORD, SMTPSERVER, SMTPPORT, MAILFROM
        public function  __construct( $vlogin, $vpassword, $vserver="smtpout.secureserver.net", $vport="80", $vfrom= "") {
            $this->_mail_data =  array (
                'host' => $vserver,
                'auth' => true,
                'username' => $vlogin,
                'password' => $vpassword,
                'port'=>$vport
            );
            $this->crlf = "\n";
            $this->from = $vfrom;
            $this->smtpout = Mail::factory('smtp', $this->_mail_data);
        }
    //Envía un correo en Texto Plano
        public function sendTextMail($to="", $subject="", $body="", $vfrom=""){
                $_headers = array (
                    'From' => ( ($vfrom!="")?$vfrom: $from),
                    'To' => $to,
                    'Subject' => $subject);
            //print_r ($this->_mail_data);
            $this->smtpout->IsHTML(true);
            $mail = $this->smtpout->send($to, $_headers, $body);
            return !(PEAR::isError($mail));
        }
    //Envía un correo como HTML
         public function sendmail($to="", $subject="", $body="", $vfrom=""){
             $_headers = array (
             'From' => ( ($vfrom!="")?$vfrom: $from),
             'To' => $to,
             'Subject' => $subject);
            $mime = new Mail_mime($this->crlf);
            $mime->setHTMLBody($body);
    //        $mime->addAttachment($file, 'text/plain');
            //do not ever try to call these lines in reverse order
            $body = $mime->get();
            $_headers = $mime->headers($_headers);
            $mail = $this->smtpout->send($to, $_headers, $body);
            return !(PEAR::isError($mail));
        }
    }//fin de la clase
    //Objeto de la clase
            $correo = new Correo("SMTPUSER", "SMTPPASSWORD", "smtpout.secureserver.net", "80", "SMTPFROM");
    //Envio de correo en formato HTML
            $correo->sendmail("CORREODESTINATARIO@gmail.com", "SUBJECT", "MENSAJE_EN_FORMATO_HTML", "MAIL_FROM");
    ?>
     
    Por default pongo el servidor de correos de godaddy.
    Espero pueda serle útil a alguien más.
  • ¿ Como modificar el reporte de registro de llamadas de FreePBX ?

    Hace algunos días un cliente me solicitó poder visualizar en el reporte de llamadas que viene con FreePBX información adicional. De inicio el reporte muestra los siguientes datos:

    Calldate,Channel, Source, Clid, Dst, Disposition, Duration

    La tabla de CDR en la base de datos contiene los siguientes campos

    +-------------+---------------+------+-----+---------------------+-------+
    | FIELD       | Type          | NULL | KEY | DEFAULT             | Extra |
    +-------------+---------------+------+-----+---------------------+-------+
    | calldate    | datetime      | NO   | MUL | 0000-00-00 00:00:00 |       |
    | clid        | varchar(80)   | NO   |     |                     |       |
    | src         | varchar(80)   | NO   |     |                     |       |
    | dst         | varchar(80)   | NO   | MUL |                     |       |
    | dcontext    | varchar(80)   | NO   |     |                     |       |
    | channel     | varchar(80)   | NO   |     |                     |       |
    | dstchannel  | varchar(80)   | NO   |     |                     |       |
    | lastapp     | varchar(80)   | NO   |     |                     |       |
    | lastdata    | varchar(80)   | NO   |     |                     |       |
    | duration    | int(11)       | NO   |     | 0                   |       |
    | billsec     | int(11)       | NO   |     | 0                   |       |
    | disposition | varchar(45)   | NO   |     |                     |       |
    | amaflags    | int(11)       | NO   |     | 0                   |       |
    | accountcode | varchar(20)   | NO   | MUL |                     |       |
    | uniqueid    | varchar(32)   | NO   |     |                     |       |
    | userfield   | varchar(255)  | NO   |     |                     |       |
    | billed      | char(1)       | NO   |     |                     |       |
    | price       | decimal(10,6) | NO   |     | 0.000000            |       |
    +-------------+---------------+------+-----+---------------------+-------+
     


    Para poder hacer las modificaciones correspondientes editar el siguiente archivo

    sudo editor /var/www/DIRECTORIOFREEPBX/admin/cdr/call-log.php

    Buscar despues de /* --AMP Begin-- */

    Ahí hay que buscar el arreglo $FG_TABLE_COL[]

    Por ejemplo si queremos agregar al final información del PIN que usa el usuario para hacer llamadas entonces pondríamos despues de $FG_TABLE_COL[]=array ("Duration", "duration", "6%", "center", "SORT", "30", "", "", "", "", "", "$minute_function"); lo siguiente

    $FG_TABLE_COL[]=array ("AccountCode", "accountcode", "8%", "center", "", "10");
     


    Dónde AccountCode será el titúlo de la columna, el campo relacionado a la tabla CDR, 8% el tamaño de la columna, "center" alineación del texto, Enseguida iría SORT si este campo se pudiera usar para odernar la tabla, "10" número de carácteres a mostrar del campo.

    Adicionalmente al ejemplo anterior hay que agregar el campo accountcode a la variable de los campos de la consulta

    $FG_COL_QUERY='calldate, channel, src, clid, dst, disposition, duration';
     


    Quedaría así

    $FG_COL_QUERY='calldate, channel, src, clid, dst, disposition, duration, accountcode';
     


    Solo bastaría guardar el archivo y acceder al reporte de llamadas para visualizar los cambios.
  • Desarrolladores de Facebook por liberar convertidor de PHP a C++

    En lo que compilo una instalación de Asterisk me meto a barrapunto a leer las noticias sobre software libre, tecnología y demás, y entre la cantidad de notas veo una que me llama la atención que trata sobre que los desarrolladores de facebook están por liberar un convertidor de código de PHP a C++.

    El convertidor tendría el nombre de HipHop for PHP , al ver la noticia como siempre están los que se rasgan las vestiduras por si es bueno o malo este software, a mi parecer me parece bastante interesante por los siguientes puntos:


  • Si ya tienes un software hecho en PHP, y quieres mejorar su rendimiento no tienes que desarrollarlo nuevamente en C++ desde cero.
  • Al poder convertirse a C++, el rendimiento aumenta, ya que no es lo mismo un intérprete que un compilador.
  • Es mucho más fácil desarrollar un software en PHP y luego pasarlo a C++
  • Al usar C++ tu código sería compilado y no tendrías un código en PHP que pudiera ser alterado despues de terminado.
  • La depuración es más fácil

    Y asi puedo enumerar sin fin de posibles facilidades, por lo mientras ya estoy esperando probarlo con un par de aplicaciones que tengo en mente. face-smile.png
  • ¿ Como generar PDFs de páginas web dinámicas ?

    Hace algunos 6 años trabajé para una compañía que distribuye equipo de Symbol Motorola, recuerdo que en ese tiempo la gente de ventas hacia las cotizaciones a mano a veces en una hoja de excel otras en word, por lo que se me ocurrió desarrollarles un sistema de cotizaciones de tal forma que los clientes podían entrar al sitio web, validarse y desde ahí elegir los productos que requerían cotizar.

    En ese tiempo me surgió el detalle de saber de como generar PDFs al vuelo de las cotizaciones generadas por los clientes, ya que los clientes al seleccionar sus productos y presionar el botón de cotizar, el sistema lo que hacía era enviarles una liga a su correo desde dónde podían bajar el PDF directamente.

    Para esto eché mano de htmldoc el cuál es un software que permite generar PDF de archivos HTML, al igual convertir PS a PDF y viceversa.

    Lo que hice básicamente fué pasarle la url a htmldoc del script php con los parámetros para generar la cotización, de tal forma que htmldoc leía el archivo html generado por PHP y lo convertía a PDF, y solo modificaba los encabezados para que el usuario obtuviera un archivo a guardar.


    Lo primero fué poner en un script php el encabezado que debería mandar, que indicara que es un archivo PDF y que lo mandaría como cotización-seguido del número de cotización correspondiente, y que lo enviara como archivo adjunto para que el navegador pidiera que se guardara en un archivo o se mostrará, tal como cuándo le picas a un archivo para descargar.

    header("Content-Type: application/pdf");
    header("Content-Disposition: attachment; filename=\"cotizacion-$_GET[num_quote].pdf\"");
     


    Abajo del script mandaba una llamada al sistema que solicitaba ejecutar htmldoc con los parámetros adecuados, tal como se muestra en el siguiente código:

    passthru("htmldoc --format pdf --left 1.5cm --right 1.0cm --top 1.5cm --bottom 1.0cm " .
        "--headfootsize 8   --footer '/D' --jpeg '90' --links  " .
        "--logoimage '".DIR_IMAGES."pdf.png' --linkcolor '#0000FF' " .
        "--size 'a4' --fontsize 10 --charset 8859-15 " .
        "--webpage \"HTTP://URL_DEL_SCRIPT/PHP?QUE_GENERA_LA_COTIZACION\"  ");
     


    los parámetros son los siguientes:
  • htmldoc binario del convertidor de html a pdf
  • --format pdf: formato a convertir el archivo html
  • --left 1.5cm --right 1.0cm --top 1.5cm --bottom 1.0cm : márgenes del documento
  • --headfootsize 8: tamaño del encabezado y pie de página
  • --footer '/D' : indica que pondrá la fecha en el pié de página
  • --jpeg '90' : comprensión de las imágenes
  • --links : activación de links
  • --logoimage '".DIR_IMAGES."pdf.png': colocará el logo en la parte superior de la página
  • --linkcolor '#0000FF' : color de las ligas
  • --size 'a4' : tamaño del documento
  • --fontsize 10: tamaño de letra del documento
  • --charset 8859-15 : conjunto de caracteres a usar
  • --webpage liga del documento html a convertir a formato PDF

    Con esto lo que hacía es que primero el script php generaba la cotización en base a lo requerido por el cliente, htmldoc convertía el documento a pdf y el encabezado que se mandaba al navegador indicaba que ese archivo generado se descargara o se mostrara en el navegador.
  • Cambiar la tabla y base de datos del CDR de FreePBX y Asterisk para un nuevo sistema de Tarificación Telefónico

    En OaxRom Mobile Computing hemos modificado un sistema de tarificación telefónico el cuál está basado en AsterBilling. La modifiación la hemos realizado ya que AsterBilling requiere licencias en la parte de monitoreo de llamadas, pero la parte de la interfaz web del tarificador es OpenSource y es la parte del software que utilizamos para que muestre los datos en base al CDR de Asterisk directamente. Entre otras ventajas que hemos añadido al nuevo software de tarificador para Asterisk PBX que hemos desarrollado y que pronto liberaremos el código es que permite enviar el costo de la llamada en tiempo real a la pantalla de teléfonos SIP que soporten SIP MESSAGE.

    Continuemos con el tema del post. En este caso hemos usado FreePBX como entorno de configuración de Asterisk, pero como FreePBX trae su propia base de datos y tabla para el manejor de CDR, en este caso fué necesario modificar esta configuración para poder apuntar a la base de datos del software del tarificador que concentra al sistema de tarificación telefónica junto con el CDR de Asterisk y de FreePBX.

    Primero para modificar la configuración del CDR de Asterisk es necesario seguir los siguientes pasos descritos en un post anterior aquí:

    http://phylevn.mexrom.net/index.php/blog/show/Configurando-Asterisk-para-guardar-los-registros-del-CDR-en-MySQL.html

    Ya que se hayan hechos los cambios en Asterisk quedaría hacer los cambios sobre FreePBX tal como se indica a continuación.

    Editar el archivo amportal.conf
    sudo editor /etc/amportal.conf
    Agregar las siguientes líneas
            CDRDBHOST=localhost
            CDRDBPORT=3306
            CDRDBUSER=USERTARIFICADOR
            CDRDBPASS=PASSWORDTARIFICADOR
            CDRDBNAME=DBNAMETARIFICAODR
            CDRDBTYPE=mysql
            CDRDBTABLENAME=cdr
    Con esto solo basta aplicar los cambios en freepbx
    /usr/src/freepbx*/apply_conf.sh
    Y por último reiniciar asterisk
    sudo amportal restart
     
    Ahora solo hay que ver la base de datos y verificar que el contenido se muestre en los reportes de FreePBX.

    Aquí vemos el contenido del CDR de FreePBX & Asterisk

    CDR de FreePBX enlazado a Asterisk y Sistema de Tarificación Telefónico


    Y en el tarificador podemos ver las llamadas tarificadas para la cabina 103 que es desde dónde se originaron las llamadas, para esto desde el sistema de tarificación habilitamos que tarifique llamadas con longitud de destino de 3 digitos y el costo de cargo de conexión es por 2 pesos por los primeros 60 segundos y 1 peso adicional por 60 segundos adicionales.
    Captural de Pantala de Interfaz Web de Caseta Telefónica Cabina 103
  • Nueva versión de MonoDevelop 2.2 ha sido liberada

    Hace unos días por error borré los binarios de una aplicación que me permitía generar licencias para un sistema de toma de inventario para terminales portátiles que se desarrolló, pero por un error de selección borré el instalador y la aplicación. Por lo cuál me salió una urgencia de generar unas licencias ante la petición de más licencias por parte de un cliente, por lo que necesitaba compilar el código del generador de licencias para poder ejecutar el generador, el detalle fué que no tenía instalado Visual Studio .Net en la máquina, pero como dicen en mi pueblo "a falta de pan tortilla" por lo que entré a la página de MonoDevelop a buscar la versión de Mono lidereada por el compatriota mexicano Miguel de Icaza.



    Mono es un software open source que es como un .Net multiplataforma (Windows, Linux, MacOSX, Solaris, etc, etc.). Prácticamente incluye casi todas las características de .Net y la ventaja que tiene es que se puede desarrollar en diversos lenguajes(C#, Java, PHP, Python, Perl, Visual Basic, etc).

    Lo lindo de Mono es que me permitió compilar mi código de generador de licencias permitiéndome tener el ejecutable sin mover nada al código fuente, de tal forma que despues de decargar Mono, instalarlo y compilar mi código en unos minutos tenía el ejecutable de mi generador de licencias y así poder darle a mi cliente las licencias para la aplicación de toma de inventarios para sus equipos terminales portátiles PPT8800 e Intermec CK31.

    Mono Puede descargarse de la siguiente página:

    http://www.monodevelop.org
  • Como cambiar de formato las voces pregrabadas en Asterisk Ej. de GSM a Ulaw

    Hace unos días instalé un Conmutador de Voz sobre IP basado en Asterisk para un cliente, todo jaló bien, su tarjeta Digium de 4 Puertos FXO, su IVR, DISA, Grupos de Marcación, recepción y envío mediante fax virtuales, etc., pero al final había un solo detalle, las voces pregrabadas de Asterisk no se escuchaban bien, esas voces que te dicen que "la extensión no está disponible", "marcación incorrecta", etc, etc. se escuchaban bajas y con mucho ruido.

    Al revisar los Teléfonos VoIP que estaban usando en la configuración noté que solo soportaban los códecs ulaw, alaw, g729 y g723, por lo que de ahí se derivaba el detalle, ya que las voces pregrabadas estaban en formato GSM, entonces asterisk al realizad transcoding de GSM a g711u(ulaw) al parecer el teléfono no lo aceptaba tan bien que por ello se generaba la poca calidad de las voces pregrabadas.

    Para esto no se me ocurrió más que convertir las voces de GSM a ulaw haciendo uso de asterisk mediante el comando :

    rasterisk -x "file convert archivo_origen.gsm archivo_final.ulaw"
     


    Para esto hice un script en PHP que convirtiera al vuelo los más de 1000 archivos en formato gsm, para pasarlos a formato ulaw.

    El script es el siguiente:

    #!/usr/bin/php5
    <?
            //ejemplo de uso : astconvert.php *.gsm .ulaw /var/lib/asterisk/sounds/es
            if($argv[1]!=""){
                    $extension = $argv[1];
                    $extension_salida = $argv[2];          
                    ($argv[3]=="")? $soundsDir = "/var/lib/asterisk/sounds/es_ulaw":$soundsDir = $argv[3];
                    $command = "find $soundsDir -iname \"$extension\" ";
                    exec($command, $_result);
                    $count=0;      
                    foreach($_result as $file){
                            $extension = str_replace("*", "", $extension);
                            $out_file = str_replace($extension, $extension_salida, $file);
                            $command =    "rasterisk -x \"file convert $file $out_file\" ";                        
                            echo $count++." : ".$command."\n";
                            exec($command);
                    }
            }
    ?>
     


    Básicamente como se usa el script es de la siguiente forma

    astconvert.php <*.FORMATO_A_BUSCAR> <.FORMATO_A_CONVERTIR> <DIRECTORIO_DONDE_BUSCAR>
    astconvert.php *.gsm .ulaw /var/lib/asterisk/sounds/es
     


    Con esto básicamente ya podremos convertir nuestros archivos GSM a ULAW, de tal forma que podría sacarnos de un apuro como el que me salió aquella mañana en las oficinas de mi cliente.

    Solo como recomendación es necesario tener permisos de escritura sobre el directorio dónde se va hacer la conversión de formato.
  • 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.
  • Exportando una tabla de MySQL a Archivo CSV

    Hace un rato un amigo me preguntó de como podía rápidamente exportar los datos de una tabla de contactos a un archivo CSV, le comenté que hiciera un script en PHP, pero también le comenté que había una forma de hacerlo directamente desde la línea de comandos solo que en ese momento no recordaba como, por lo que estuve buscando en mi cuaderno de notas y tips dónde tenía anotado el comando y aquí lo pongo por si alguien más en ocasión alguna pudiera servirle:
    mysql -u USUARIO -pPASSWORD NOMBRE_BASE_DATOS -B -e "select * from TABLA_A_EXPORTAR;" | sed 's/\t/","/g;s/^/"/;s/$/"/;s/\n//g' > NOMBRE_DEL_ARCHIVO.csv
     
    En el anterior comando solo basta cambiar lo que está en mayúsuclas por los datos reales para que genere el archivo en formato CSV con los campos que contiene la tabla de MySQL.
  • 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