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:
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
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
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.
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.
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:
--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.
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í:
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
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.
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.
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 :
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.
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
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:
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.
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.
Entrando al sitio de Siestta.org veo que ya está una nueva versión de este software para administración de escuelas, ya antes había revisado la versión 2.0, aunque era funcional le faltaban muchas cosas para se adaptable a una escuela.
Siestta 3.0 es un sistema de administración vía web que tiene las siguientes características:
Maestros pueden administrar todos los datos de sus alumnos y lecciones en una forma completa.
Informacion notable para familias puede ser ofrecida en una forma individual. También hay una nueva forma para comunicar familias con maestros y familias con escuela.
Alumnos pueden tambiénver sus datos particulares y crear actividades también.
Finalmente la administración de la escuela tiene una plataforma para administrar todos los datos y reportes que ellos quieran.
El autor de Siestta 3.0 es Ramón Castro quién implarte clases de Economía en un Instituto de Educación Secundaria en Socuéllamos, una localidad situada en el centro de La Mancha, famosa gracias a la gran obra universal “Don Quijote de La Mancha“.
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
Comentarios Recientes