Hagamos que México crezca..

Prefiere el consumo de lo Hecho en México

Visitantes








Conversación

  • Elvin: Estimado ando muy preocupado me compre el USRP2 y las tarjetas de GSM cuando me entere que no trabaja openbts con usrp2, help me :(  
  • Phylevn: Si claro, hay un software israelí que es gratuito no recuerdo como se llama, solo tienes que compilar asterisk-addons para que también guarde en el CDR el ID de la llamada para asi despues relacionarla con la grabación.  
  • Cesar: Que ta amigo... sobre la pregunta de ligar una extencion a una troncal o hice con customcontext en freepbx.
    solo tengo una duda, hay algun plugin para freepbx para poder monitorear las llamadas grabadas como en elastix?
    gracias.. y saludos  
  • Sergio: Hola!!
    Oie al parecer hay errores en las entradas sobre la Facturacion Electronica del SAT, hace unos dias lei los Post y hoy YA NO PUEDO ENTRAR, me marca que la pagina no se encontro.
    Gracias  
  • Conmutador IP: @Max: Para que tu Tel IP haga y reciba llamadas necesitas configurarlo, si tu teléfono usa el protocolo SIP entonces necesitas configurar usuario, password, dominio o proxy, outbound proxy en algunos casos y puerto que el default es 5060, estos datos te los da el proveedor IP con los que contrates el servicio como puede ser Alestra en México, o callcentric.com en estados unidos por ejemplo  
  • Max: hola tengo una duda, tengo un telefono IP pero nose si se requiere alguna configuracion para que trabaje con el modem de infinitum, es decir que tengo q hacer para que pueda hacer y recibir llamadas con el.
    espero puedas ayudarme  
  • Phylevn: Si lo puedes hacer, busca lo que son los contextos en asterisk.  
  • Cesar: Que tal, si me funciono, solo que curiosamente con no-ip o ddns solo fuinciona cuando son isp diferentes, aquí en Nayarit, Telmex y Megacable, si lo hago solo con Megacable debo poner la ip de la der de Megacable, 10.163.x.x no tengo idea por que solo así funciono... Otra duda, en asterisk se puede hacer que por ejemplo la extensión 500 solo use la troncal 1 y todas las demás extensiones utilizen otra troncal? Esto sin teniendo el mismo plan de marcado en ambas troncales, es decir, poder hacer que una troncal y una extensión estén vinculadas para hacer llamadas.  
  • Angel Reyes: Hey Filein,
    Quiero conversar contigo sobre una oportunidad de negocio. ¿me pasas tu email?
    Saludos.  
  • Comutador IP: @Cesar: Si es posible, solo requieres poner el puerto SIP de tu Conmutador IP Asterisk en una IP Pública, puedes usar DynDNS para este caso junto con DDClient y ya solo el SPA lo apuntas a la IP Pública de tu conmutador IP Asterisk siguiendo los mismos pasos de configuración de siempre. Eso es todo.  

Escribe el código Captcha que estás viendo

Bases de Datos

  • Como hacer llamadas en automático usando AMI y el comando originate en Asterisk PBX

    Muchos amigos me han preguntado como lanzar llamadas en automático a través de Asterisk, aparte que es muy común que en diversos foros salgan este tipo de preguntas. Por ello aquí posteo un código muy simple hecho en PHP que permite marcar a un número para luego enlazarlo a un AGI, Un grupo de marcación, grupo de extensiones, IVR, etc.,
    <?
    #Direccion IP del Servidor de Asterisk Manager
                    $strHost = "localhost";
    #Usuario dado de alta en el Asterisk Manager definido en /etc/asterisk/manager.conf o /etc/asterisk/manager_custom.conf
                    $strUser = "cloudvoox";
    #Password del usuario del Asterisk Manager  definido en /etc/asterisk/manager.conf o /etc/asterisk/manager_custom.conf
                    $strSecret = "cloudvoox";
    #especificamos el contexto
                    $strContext = "from-internal";
    #indicamos el tiempo de espera de la marcación
                    $strWaitTime = 45;
    #La prioridad para colocar la llamada
                    $strPriority = 1;
    #maximo de reintentos
                    $strMaxRetry = "2";
    #Extensión a dónde mandaremos la llamada realizada, previamente debemos definirla extension en /etc/asterisk/extensions_custom.conf, esta puede ser un AGI, un Grupo de marcación, IVR, Extension, Cola de llamadas, etc.
                    $number="1997";
    #A partir de aquí podemos crear un ciclo que lea diversos números a marcar, por ejemplo podría ser un mysql_fetch_array que nos obtenga los numeros a marcar y sustituirlos en el número de abajo
    #Aqui podemos enlazar los destinatarios externos ya sean extensiones internas SIP o IAX, o también pueden ser números de la PSTN que salgamos mediante IAX2, SIP, Zaptel o DAHDI
    #En este caso estoy llamando a traves de voipjet al número de la ciudad de México 11689818 (+525511689818)
                    $strChannel =  "IAX2/voipjet/011525511689818";
                    if ($strChannel!="" ) :
                            $errno=0 ;
                            $errstr=0 ;
                            $strCallerId = " WebCall<$number>";
                            $oSocket = fsockopen ($strHost, 5038, $errno, $errstr, 20);
                            if (!$oSocket) {
                                    echo "$errstr ($errno)<br>\n";
                            } else {
                                                                           
                                    fputs($oSocket, "Action: login\r\n");
                                    fputs($oSocket, "Events: off\r\n");
                                    fputs($oSocket, "Username: $strUser\r\n");
                                    fputs($oSocket, "Secret: $strSecret\r\n\r\n");
                                    fputs($oSocket, "Action: originate\r\n");
                                    fputs($oSocket, "Channel: $strChannel\r\n");
                                    fputs($oSocket, "WaitTime: $strWaitTime\r\n");
                                    fputs($oSocket, "CallerId: $strCallerId\r\n");
                                    fputs($oSocket, "Exten: $number\r\n");
                                    fputs($oSocket, "Context: $strContext\r\n");
                                    fputs($oSocket, "Priority: $strPriority\r\n\r\n");
                                    fputs($oSocket, "Action: Logoff\r\n\r\n");
                                    sleep(2);
                                    fclose($oSocket);
                            }
                            if (!isset($_REQUEST['exten'])){
                                    echo "";
                            } else {
                                    echo "$strChannel  enlazando a $number." ;
                            }
                    else :
                            exit() ;
                    endif ;
    ?>
     
    El código anterior es muy fácil de entender, básicamente lo que hace es parametrizar el comando originate del protocolo AMI de Asterisk [ http://www.voip-info.org/wiki/view/Asterisk+Manager+API+Action+Originate ]

    Ahí previamente debemos tener creada la extensión 1997 en el plan de marcación de asterisk, esa extensión es a dónde vamos a mandar las llamadas contestadas, en este caso por ejemplo se puede crear en /etc/asterisk/extensions_custom.conf en caso de que se use freepbx como lo hacemos a continuación

    sudo editor /etc/asterisk/extensions_custom.conf

    #Y agregamos lo siguiente o editamos en caso de que ya exista

    [from-internal-custom]
    include=>asterisk-calls
    [asterisk-calls]
    exten => 1997,1,Answer
    exten => 1997,n,SetMusicOnHold(Publicidad)
    exten => 1997,n,MusicOnHold()
    exten => 1997,n,Hangup
    #guardamos el archivo y reiniciamos el plan de marcación en la consola de asterisk

    sudo asterisk -rvvv

    dialplan reload
     


    Básicamente lo que hicimos en el plan de marcación es poner la música de fondo llamada publicidad, que previamente debimos haberla creada, aquí también puede ser un AGI, o marcar a un grupo de extensiones, IVR, etc.

    Con esto fácilmente podemos subir una lista de números a marcar, para que enseguida ejecutar el script y Asterisk les llame para luego enlazar las llamadas a la extensión 1997 dónde podemos tener cualquier aplicación como puede ser un AGI que haga una encuesta por ejemplo

    También podemos crear un script que genere hilos de llamadas dependiendo del número de canales de voz disponibles en nuestro conmutador de Voz sobre IP.
  • Sistema de cotizaciones de OaxRom Mobile Computing

    En OaxRom Mobile Computing hemos estado trabajando en diversos proyectos últimamente y uno de ellos ha sido nuestro propio sistema de cotizaciones el cuál ya está terminado y solo le hemos estado agregando cada vez más funcionalidades para la parte de administración, pero la parte del cotizador para los usuarios externos ya está terminada en su primera versión.



    Ahora puedes cotizar directamente desde nuestro sitio web http://www.oaxrom.com los productos y servicios que ofrecemos como nuestras soluciones de Conmutador de voz sobre IP CloudVoox, Teléfonos VoIP, Tarjetas Sangoma para puertos FXO & FXS, Telulares IP GSM & Gateways GSM Analogicos, Adaptadores Telefónicos Analógicos(ATAs) Linksys & Atcom, Porteros, Equipos para redes inalámbricas, Software para Call Centers, Tarificadores, etc.

    Posteriormente publicaremos la versión 2.0 del cotizador en AJAX.

    Por ahora hemos estado publicando los productos más comunes, pero poco a poco iremos capturando la información de toda la gama de productos y servicios que ofrecemos, si deseas conocer nuestros productos o servicios date una vuelta en nuestro cotizador y mándanos un feedback de que te pareció la interfaz.

    OaxRom Mobile Computing 2010
  • Cómo Instalar un fax Virtual in Ubuntu Linux con Asterisk, Avantfax, IAXModem y Hylafax

    Tener un Fax Virtual en el conmutador de Voz sobre IP Asterisk representa una gran ventaja para cualquiera, ya que permite el ahorro de papel, tinta y energía eléctrica, al mismo tiempo que permite tener los documentos digitalizados, registrados en una base de datos y hasta redireccionados a un correo electrónico, por lo un fax Virtual representa sin duda una gran funcionalidad.

    Recuerdo que en el 2006 fué mi primer intento de instalar un Fax Virtual con Asterisk, esa vez lo hice con AsterFax el cuál nunca pude instalarlo. Pero desde hace casi 2 años he venido usando la combinación de HylaFax+Iaxmode como solución de fax Virtual y últimamente le he integrado AvantFax como gesto de los faxes desde una aplicación web, por eso pongo a continuación la bitácora que sigo en mis instalaciones esperando serle de utilidad a alguien más.
  • Servidor: Ubuntu Server 8.04
  • Linux Kernel. 2.6.24-26
  • Asterisk: 1.4.X
  • sudo apt-get -y install g++ libtiff-tools libtiff4 libtiff4-dev
    cd ~/asterisk
    wget http://downloads.sourceforge.net/project/iaxmodem/iaxmodem/iaxmodem-1.2.0/iaxmodem-1.2.0.tar.gz?use_mirror=hivelocity
    cd /usr/src
    sudo tar -xzvf ~/asterisk/iaxmodem*
    cd iaxmodem*
    sudo ./configure && sudo make
    sudo cp iaxmodem /usr/bin/
    sudo mkdir -p /etc/iaxmodem
    sudo editor /etc/iaxmodem/ttyIAX0
    #EDIT or ADD
    device /dev/ttyIAX0
    owner uucp:uucp
    mode 660
    port 4570
    refresh 300
    server 127.0.0.1
    peername 300
    secret CL300300
    codec ulaw
    #crear una extension IAX 300
    sudo mkdir -p /var/log/iaxmodem/
    sudo touch /var/log/iaxmodem/ttyIAX0
    sudo touch /var/log/iaxmodem/iaxmodem
    #HYLAFAX
    sudo apt-get -y install gsfonts ghostscript gs-esp
    sudo apt-get -y install hylafax-server
    #ejecutar
    #sudo /etc/init.d/hylafax restart
    sudo /usr/bin/iaxmodem ttyIAX0 &
    sudo /usr/sbin/faxgetty ttyIAX0 &
    #si existiera un fallo con el registro agregar a iax_general la siguiente configuraciòn
    calltokenoptional = 0.0.0.0/0.0.0.0
    maxcallnumbers = 512
    sudo faxsetup
    [yes]
    [port] ttyIAX0
    52
    55
    01
    #Modificar prefijos de marcaciòn y nùmero de fax
    #Aceptar los valores por default indicados
    sudo editor /etc/hylafax/hyla.conf
            #EDIT
            FontMap: /usr/share/ghostscript/8.61/lib/
            FontPath: /usr/share/fonts/type1/gsfonts
    sudo /etc/init.d/hylafax restart
    #Avant FAX
    cd ~/asterisk
    wget http://downloads.sourceforge.net/project/avantfax/avantfax/3.1.6/avantfax-3.1.6.tgz?use_mirror=softlayer
    cd /usr/src
    sudo tar -xzvf ~/asterisk/avantfax*
    cd avantfax*
    sudo aptitude -y install apache2-mpm-prefork apache2-utils apache2.2-common libapache2-mod-php5 php5 php-pear php5-mysql php5-pgsql php5-cli php5-cgi mysql-server netpbm php5-imagick dh-make-php libmagic-dev libungif4g libpng3 sudo libtiff4-dev gs-gpl gsfonts expect php5-dev make php-pear psutils libnetpbm10-dev libungif-bin libungif4-dev php-db php-file php-http php-mail php-mail-mime php-net-smtp php-net-socket php-xml-parser wdiff
    sudo /etc/init.d/mysql restart
    sudo pear channel-update pear.php.net
    sudo pear upgrade-all
    sudo pear install Mail Net_SMTP Mail_mime MDB2_driver_mysql MDB2_driver_pgsql
    sudo pecl install fileinfo
    sudo /etc/init.d/apache2 restart
    sudo chmod -R 0770 avantfax/includes/templates/admin_theme/templates_c/ avantfax/includes/templates/admin_theme/cache/ avantfax/includes/templates/main_theme/templates_c/ avantfax/includes/templates/main_theme/cache/
    sudo chown -R asterisk:asterisk avantfax/includes/templates/admin_theme/templates_c/ avantfax/includes/templates/admin_theme/cache/ avantfax/includes/templates/main_theme/templates_c/ avantfax/includes/templates/main_theme/cache/
    sudo chmod -R 0755 avantfax/includes/faxcover.php avantfax/includes/faxrcvd.php avantfax/includes/notify.php avantfax/tools/update_contacts.php avantfax/tools/faxcover.php avantfax/includes/avantfaxcron.php
    sudo cp avantfax/includes/local_config-example.php avantfax/includes/local_config.php
    sudo editor avantfax/includes/local_config.php
            #EDIT
            define('AFDB_USER',             'avantfax');    // username
            define('AFDB_PASS',             'avantfax');             // password
            define('AFDB_NAME',             'avantfax');    // database name
            define('AFDB_ENGINE',   'mysql');               // database engine: mysql
            define('AFDB_HOST',             'localhost');   // database host
            $FAXRMPWD = "cloudvoox";
            $WWWUSER  = 'asterisk';
            define ('ADMIN_EMAIL', 'fax@oaxrom.com');
            $ENABLE_DL_TIFF = true;
            $AVANTFAX_SERVERNAME = 'fax.oaxrom.com'; //
    sudo /usr/sbin/faxadduser -a cloudvoox asterisk
    sudo /usr/sbin/faxdeluser localhost
    sudo /usr/sbin/faxdeluser 127.0.0.1
    sudo echo 127.0.0.1 >> ~/newhosts
    sudo echo "192\.168\.20\.:::" >> ~/newhosts
    sudo echo "192\.168\.1\.:::" >> ~/newhosts
    sudo cat /var/spool/hylafax/etc/hosts.hfaxd >> ~/newhosts
    sudo cp ~/newhosts  /var/spool/hylafax/etc/hosts.hfaxd
    sudo rm -rf ~/newhosts
    sudo editor /etc/hylafax/hyla.conf
    #ADD
    echo 'JobFmt: "%-3j %3i %1a %15o %40M %-12.12e %5P %5D %7z %.25s"'
    sudo mv avantfax /var/www/avantfax
     
    sudo  chown -R asterisk.asterisk /var/www/avantfax
    sudo  chmod -R 777 /var/www/avantfax/tmp /var/www/avantfax/faxes
    mysql -u root -p
            create database avantfax;
            GRANT ALL PRIVILEGES ON avantfax.* TO avantfax@localhost IDENTIFIED BY 'avantfax';
            flush privileges;
            exit;
    mysql -u avantfax -pavantfax avantfax < create_tables.sql
    sudo ln -s /var/www/avantfax/includes/faxrcvd.php /var/spool/hylafax/bin/faxrcvd.php
    sudo ln -s /var/www/avantfax/includes/notify.php  /var/spool/hylafax/bin/notify.php
    sudo mv /usr/bin/faxcover /usr/bin/faxcover.old
    sudo ln -s /var/www/avantfax/includes/faxcover.php /usr/bin/faxcover
    sudo ln -s /usr/share/file/magic* /usr/share/misc/
    sudo editor /var/www/avantfax/includes/config.php
            #EDIT
            define('AFDB_USER',     'avantfax');    // username
            define('AFDB_PASS',     'avantfax');             // password
            define('AFDB_NAME',     'avantfax');    // database name
            define('AFDB_ENGINE',   'mysql');               // database engine
            define('AFDB_HOST',     'localhost');   // database server
            define('ADMIN_EMAIL',   'fax@oaxrom'); //cambiar correo donde se recibirán faxes
            $FAXRMPWD = 'cloudvoox';
            $WWWUSER  = 'asterisk';
            $ENABLE_DL_TIFF = true
           
    sudo editor /etc/sudoers
            #ADD
            asterisk ALL= NOPASSWD: /sbin/reboot, /sbin/halt, /usr/sbin/faxdeluser, /usr/sbin/faxadduser -u * -p * *
    sudo editor /var/spool/hylafax/etc/config
            #ADD
            #
            ## AvantFAX configuration
            #
            NotifyCmd:      bin/notify.php
    sudo editor /var/spool/hylafax/etc/config.ttyIAX0      
            #ADD
            #
            ## AvantFAX configuration
            #
            FaxrcvdCmd:     bin/faxrcvd.php
    sudo editor /etc/crontab
    #ADD
            0 0 * * * /var/www/avantfax/includes/avantfaxcron.php -t 2
    sudo /etc/init.d/cron restart
    sudo mv /var/spool/hylafax/etc/config /etc/hylafax/config
    sudo mv /var/spool/hylafax/etc/hosts.hfaxd /etc/hylafax/hosts.hfaxd
    sudo mv /var/spool/hylafax/etc/config.ttyIAX0 /etc/hylafax/config.ttyIAX0
    sudo /etc/init.d/hylafax restart
                   
    sudo aptitude -y install postfix
    sudo editor /etc/postfix/master.cf
            #VERIFICAR
            smtp      inet  n       -       -       -       -       smtpd
            #ADD
            fax  unix    -       n       n       -       1       pipe
                    flags= user=asterisk argv=/usr/bin/email2fax ${sender} ${recipient}
    sudo editor /etc/postfix/transport
            #ADD
            fax.midominio.com       fax:localhost
           
    sudo postmap /etc/postfix/transport
    sudo editor /etc/postfix/main.cf
            #ADD
            fax_destination_recipient_limit = 1
    sudo editor /etc/hylafax/faxmail.conf
            #ADD
            AutoCoverPage: false
            TextPointSize: 12pt
            Headers: Message-id Date Subject From
            MailUser: faxmail
    sudo  /etc/init.d/postfix reload
    #entrar a la IP del servidor http://SERVER_NAME/avantfax
    login: admin
    password: password
    En seguida cambiar password
    Cliente Hylafax para Windows
    http://prdownloads.sourceforge.net/winprinthylafax/WinprintHylaFAX-1.2.9.exe?download
    Info sobre WinPrint Hylafax
    http://winprinthylafax.sourceforge.net/
     
  • ¿ Como guardar en el CDR los PINS usados por rutas salientes configuradas desde FreePBX ?

    Hace unos días un cliente me pidió poder visualizar los PINS que se configuraron para poder marcar a números móviles desde la extensión del conmutador de voz sobre IP que se le implementó.

    Hint: Los PINS son claves o passwords únicos que se asignan a cada usuario, de tal forma que si se desea llevar un control de llamadas a números 044, 045 o larga distancia por ejemplo tiene que introducir su PIN asignado, de tal forma que ese PIN queda almacenado en los registros de llamadas y por medio del cuál se puede identificar que usuario hizo la llamada independientemente de que extensión haya llamado.

    Cómo en este caso se le instaló FreePBX como administrador gráfico ya que asi se le facilitan las opciones de configuración, por lo que se modificó en primera instancia el archivo /var/www/cloudvoox/admin/cdr/call-log.php que es el script en PHP que genera los reportes de las llamadas realizadas, ahí solo se agregó la columna de ACCOUNTCODE de la tabla del CDR dónde quedan almacenados los PINS, pero en este caso la columna no reflejaba nada, por lo que checando la base de datos en el campo ACCOUNTCODE no se estaba guardando el PIN que se utilizaba cuándo se marcaba a un número móvil.

    Revisando el código fuente en /usr/src/asterisk/asterisk-addons-1.4.10/cdr/cdr_addon_mysql.c todo estaba bien, pues Asterisk si tenía habilitada la opción de guardado del PIN en ACCOUNTCODE.

    Por lo que me puse a revisar cómo estaba la configuración del plan de marcación que genera FreePBX, para esto chequé el archivo /etc/asterisk/extensions_additional.conf y encontré que en la macro de PINSETS, tenía lo siguiente:

    [macro-pinsets]
    include => macro-pinsets-custom
    exten => s,1,GotoIf(${ARG2} = 1?cdr,1)
    exten => s,n,ExecIf($["${DB(AMPUSER/${AMPUSER}/pinless)}" != "NOPASSWD"],Authenticate,/etc/asterisk/pinset_${ARG1})
    exten => s,n,ExecIf($["${DB(AMPUSER/${AMPUSER}/pinless)}" != "NOPASSWD"],ResetCDR,)
    exten => cdr,1,ExecIf($["${DB(AMPUSER/${AMPUSER}/pinless)}" != "NOPASSWD"],Authenticate,/etc/asterisk/pinset_${ARG1},a)
    exten => cdr,n,ExecIf($["${DB(AMPUSER/${AMPUSER}/pinless)}" != "NOPASSWD"],ResetCDR,)
    ; end of [macro-pinsets]
     


    Ahí pude ver que en esta parte le faltaba una ,'a' despues de {ARG1}

    exten => s,n,ExecIf($["${DB(AMPUSER/${AMPUSER}/pinless)}" != "NOPASSWD"],Authenticate,/etc/asterisk/pinset_${ARG1})
     


    Por lo que lo obvio era solo modificar este archivo y ponerle la 'a' al final, pero este archivo se regenera cada vez que en FreePBX se aplican cambios, por lo que no tenía sentido hacer la modificación aquí ya que al momento de aplicar cambios borraría los cambios realizados manualmente.

    Para esto busqué el código de FreePBX dónde generaba esta parte de las Macros de los Pinsets y el archivo es

    /var/www/cloudvoox/admin/modules/pinsets/functions.inc.php

    Ahí solo bastaba modificar la siguiente línea que es la 49

    $ext->add('macro-pinsets', 's', , new ext_execif('$["${DB(AMPUSER/${AMPUSER}/pinless)}" != "NOPASSWD"]', 'Authenticate',$asterisk_conf['astetcdir'].'/pinset_${ARG1}));


    Y agregar a
    l final lo siguiente
    $ext->add('macro-pinsets', 's', , new ext_execif('$["${DB(AMPUSER/${AMPUSER}/pinless)}" != "NOPASSWD"]', 'Authenticate',$asterisk_conf['astetcdir'].'/pinset_${ARG1},a'));
     


    Ahora solo bastaría en la configuración del ruteo de salida de FreePBX quitar el PIN a la ruta, aplicar los cambios, volver asignar el PIN y aplicar los cambios, con esto al momento de marcar a un número móvil, la ruta pediría el PIN y esté sería ya almacenado en el campo ACCOUNTCODE de la tabla CDR y asi poder ser reflejado en el reporte de llamadas de FreePBX
  • OaxRom WebSMS Beta Software para envío de sms desde aplicación web con gnokii y teléfonos Nokia USB

    iMest 0.03 beta.

    iMest es un software desarrollado bajo la plataforma LAMPG - Linux Apache MySQL PHP y Gnokii.

    Este software permite usar Gnokii como interfaz para envío de sms y así poder enviar multiples mensajes SMS personalizados desde una página web a múltiples categorías de contactos.

    Características del software.
  • Envío de mensajes SMS múltiples por tipo de contacto.
  • Envío de mensajes SMS a múltiples categorías de contacto.
  • Envío de mensaje SMS personal.
  • Captura de categorías de contactos.
  • Captura de contactos.
  • Asignación de contactos a múltiples categorías.
  • Programación de fecha de envío de mensajes SMS.
  • Uso de múltiples teléfonos móviles para envío de SMS.
  • Importación de contactos.
  • Captura, edición, listado, búsqueda y eliminación de contactos.
  • Captura, edición, listado, búsqueda y eliminación de categorías.
  • Captura, edición, listado, búsqueda y eliminación de mensajes.
  • Registro de mensajes enviados y no enviados.
  • Reenvío de mensajes.
  • Personalización de mensajes múltiples enviados en base a palabras clave.
  • Detección automática de teléfonos conectados por usb desde configuración del sistema.
  • Interfaz Ajax-Web.

    Plataforma:
  • Linux
  • Apache
  • MySQL
  • PHP
  • Gnokii

    Descarga:

    https://sourceforge.net/projects/binnizawebsms/files/OaxRom%20WebSMS%20iMest%200.03%20Beta/sms.zip/download

    ToDo:
  • Control de Usuarios
  • Recepción de SMS.

    Screenshots

    http://www.flickr.com/search/?q=oaxrom%20websms&w=all

    Requerimientos
  • *gnokii
  • *gnokii-smsd
  • *libgnokii3
  • *libgnokii3-dev
  • *LAMP
  • *gd2

    Hardware Compatible:

    Nokia USB

    Conectar Teléfono Nokia, ó de otra marca vía USB. Si al conectarse Linux lo detecta como puerto serial comúnmente en los Nokia /dev/ttyACM0.


    Ver procedimiento de instalación en el siguiente post

    http://phylevn.mexrom.net/index.php/blog/show/Procedimiento-para-instalaci%C3%B3n-de-Software-WebSMS-Beta..html
  • 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 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.
  • ¿ 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
  • 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/
  • Anterior página 1 2 Siguiente página
    16 entradas

    Estadísticas de visitantes

    184275

    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