#Requerimientos para instalación de AsterBilling SL sobre Ubuntu 8.04 Server #Paquetes requeridos para la instalación a traves de código fuente en Ubuntu Server de Asterisk + Zaptel o DAHDI + OSLEC + SPANDSP + FreePBX + AsterBilling sudoapt-getinstall--yes openssh-server ssh openssl && sudoapt-getinstall--yes openssl libssl-dev ssh&& sudoapt-getinstall--yesgccmakeg++patchautoconfautomake&& sudoapt-getinstall--yes linux-headers-2.6.24-26-server linux-source-2.6.24 linux-image-2.6.24-26-server && sudoapt-getinstall--yesnmaplynxunzip&& sudoapt-getinstall--yes festival festival-dev && sudoapt-getinstall--yes ncurses-base ncurses-bin ncurses-term libncurses5 libncursesw5 libncurses5-dev libncursesw5-dev && sudoapt-getinstall--yes zlib1g zlib1g-dev && sudoapt-getinstall--yesbison bison-doc libxml2 libxml2-dev libtiff4 libtiff4-dev && sudoapt-getinstall--yes libasound2 libgsm1 libltdl3 libpq5 libspeex1 libsqlite0 libtonezone1 libaudiofile0 libaudiofile-dev mpg123 libmad0 libmad0-dev libsox-fmt-*&& sudoapt-getinstall--yes libgnokii3 libgnokii3-dev gnokii gnokii-smsd && sudoapt-getinstall--yesflex&& sudoapt-getinstall--yes openvpn unzip&& sudoapt-getinstall--yes subversion curl doxygen && sudoapt-getinstall--yes libnet-telnet-perl mime-construct libipc-signal-perl libmime-types-perl libproc-waitstat-perl && sudoapt-getinstall--yes apache2 && sudoapt-getinstall--yes php5 php5-cli php5-mysql php-pear libapache2-mod-php5 php5-curl php5-gd php-db && sudoapt-getinstall--yes mysql-client-5.0 mysql-server-5.0 libmysqlclient15-dev #Algunos paquetes de php-pear requeridos cd/usr/src/freepbx-*/ sudo pear install db sudo pear install mdb2 #Crear el usuario Asterisk sudo groupadd asterisk sudo useradd -c"Asterisk PBX"-d/var/lib/asterisk -g asterisk asterisk sudomkdir-p/var/run/asterisk sudochown asterisk:asterisk /var/run/asterisk #Asignar al usuario y grupo asterisk al usuario y grupo de Apache sudo editor /etc/apache2/envvars
user asterisk
group asterisk #Algunos parámetros requeridos en el php.ini sudo editor /etc/php5/apache2/php.ini
default_charset = "utf8"
magic_quotes_gpc = off
upload_max_filesize = 32M
max_execution_time = 600
max_input_time = 600
memory_limit = 128M #Despues de compilar Asterisk, Zaptel o DAHDI no olvidar compilar Asterisk-Addons con soporte de UNIQUEID cd/usr/src/asterisk/asterisk-addons-1.4.* sudo editor cdr/cdr_addon_mysql.c #agregar al principio la siguiente línea tal como está #define MYSQL_LOGUNIQUEID sudo editor cdr/Makefile #agregar al final la siguiente línea tal como está
CFLAGS+=-DMYSQL_LOGUNIQUEID sudo ./configure && sudomake&&sudomakeinstall&& sudomake samples #Editar los parámetros de mysql para que el CDR de Asterisk apunte a la base de datos del tarificador, ver más abajo la parte de configuración de la base de datos del tarificador sudo editor /etc/asterisk/cdr_mysql.conf hostname = localhost dbname=tarificador
password = tarificador
user = tarificador #Si están usando FreePBX editar los parámetros de amportal para que CDR Stats muestre el CDR del Tarificador sudo editor /etc/amportal.conf #Agregar o Editar las siguientes líneas si ya existen
#Aplicar los cambios en freepbx, hacer esto después de instalar la base del tarificador (mas abajo).
#reiniciar asterisk sudo amportal restart
#OBTENCION DEL PROYECTO #Aun no se sube el proyecto a SourceForge, enviame un correo a fileinleon ARROBA gmail DOT com para reenviarte el proyecto completo mkdir ~/asterisk cd ~/asterisk wget http://AUN_SIN_SERVIDOR/tarificador-1.1.tar
cd/var/www sudotar-xvf ~/asterisk/tarificador-1.1.tar cd tarificador
#Creamos la base de datos del tarificador, usuario y password
mysql -u root -p
create database tarificador;
grant all privileges on tarificador.* to tarificador@localhost identified by "tarificador";
flush privileges;
#pasamos el esquema de la BD al servidor de base de datos del tarificador
mysql -u tarificador -p tarificador < tarificador-1.1.sql #creamos el directorio donde colocaremos el archivo de los tickets generados para impresion sudomkdir/tickets sudochmod-R 0755 /tickets #Asignar el usuario del servidor Apache sudochown-R asterisk:asterisk /tickets #Editamos la configuración del sistema sudo editor asterbilling.conf.php #cambiar información de base de datos
dbtype = mysql
dbhost = localhost
dbname = tarificador
dbport = 3306
username = tarificador
password = tarificador #Si estamos usando FreePBX podemos modificar el reporteador para mostrar el canal de salida de la llamada, costo de la llamada y folio de facturación #buscar el archivo admin/cdr/call-log.php, en este caso usaré la ruta de mi servidor sudo editor /var/www/cloudvoox/admin/cdr/call-log.php #En la Linea 85 después de #/* --AMP Begin-- */ #if (!@include($amp_conf['ASTETCDIR'].'/call-log-table.php')) { # Quitar desde aquí todo hasta FG_COL_QUERY y poner lo siguente $FG_TABLE_COL[]=array ("Calldate", "calldate", "18%", "center", "SORT", "19"); $FG_TABLE_COL[]=array ("Channel", "channel", "13%", "center", "", "30", "", "", "", "", "", "display_acronym"); $FG_TABLE_COL[]=array ("Source", "src", "14%", "center", "", "30"); //$FG_TABLE_COL[]=array ("Clid", "clid", "26%", "center", "", "80",,,,,'','filter_html'); $FG_TABLE_COL[]=array ("Dst", "dst", "14%", "center", "SORT", "30"); $FG_TABLE_COL[]=array ("Troncal", "dstchannel", "13%", "center", "", "30", "", "", "", "", "", "display_acronym"); $FG_TABLE_COL[]=array ("Disposition", "disposition", "9%", "center", "", "30"); if((!isset($resulttype)) || ($resulttype=="min"))$minute_function= "display_minute"; $FG_TABLE_COL[]=array ("Duration", "duration", "6%", "center", "SORT", "30", "", "", "", "", "", "$minute_function"); $FG_TABLE_COL[]=array ("Precio", "price", "6%", "center", "SORT", "30", "", "", "", "", "", ""); $FG_TABLE_COL[]=array ("Folio", "folio", "6%", "center", "SORT", "30", "", "", "", "", "", ""); $FG_TABLE_DEFAULT_ORDER = "calldate"; $FG_TABLE_DEFAULT_SENS = "DESC"; // This Variable store the argument for the SQL query //$FG_COL_QUERY='calldate, channel, src, clid, lastapp, lastdata, dst, dst, serverid, disposition, duration'; $FG_COL_QUERY='calldate, channel, src, dst, dstchannel, disposition, duration, price, folio '; #listo ya tenemos el tarificador instalado ahora solo entrar a la aplicación web del tarificador
http://IP_SERVIDOR_ASTERISK/tarificador
Modo Administrador
Login : admin
Password: admin
Configurar cabinas a tarificar, costo de destinos y login-passwords de acceso modo admin y operador.
Modo Operador
Login: ventas
Password: ventas
Presionando el botón refrescar muestra las llamadas que se han hecho de la cabina seleccionada y que aun no ha sido tarificada
Pulsando el botón recibo imprime el ticket y marca las llamadas realizadas de la cabina como cobradas
Pulsando el botón recibo imprime el ticket y marca las llamadas realizadas de la cabina como facturadas asignándole un folio
En años anteriores las primeras tarjetas Digium y sus clones como las chinas OpenVox tenían serios problemas con IRQs compartidos, los IRQs son interrupciones de hardware que permiten conectar un Dispositivo con el Procesador, el detalle es que a veces estas interrupciones eran compartidas entre hardware y eso provocaba ciertos problemas con eco, ruidos incómodos, desconexiones, fallas de hardware, entre otros problemas.
Debido a que un cliente tenía ya una tarjeta OpenVox D115 para conexión con una troncal E1, me salieron alguno de los problemas anteriores por lo que investigando pude encontrar información del porqué de los IRQ y como poder solucionarlos, más info en la siguiente liga:
Hace unos días configuré un servidor OpenVPN para un cliente, esto para que remotamente pudiera conectarse a diversos equipos de su empresa desde cualquier parte de internet vía una red privada virtual encriptada, para lo anterior instalé OpenVPN.
Todo funcionó sin problema hasta que una noche me llama comentándome que el servidor OpenVPN no funcionaba, por lo que me conecté desde mi Lap y si pude hacerlo, pero me comentó que había cambiado de servicio de internet a Cablevisión por lo que en un principio pensé que hubiera un firewall que por ahí bloqueara el acceso, así que le comenté que me enviara la info que mostraba en pantalla al intentar conectarse a la VPN.
El detalle que observé es que el Servidor OpenVPN en la configuración indicaba el cambio de DNS, pero por alguna razón CableVisión al hacer el cambio de DNS generaba una desconexión de internet, por lo que implemente quité esa opción del archivo de configuración del Servidor de OpenVPN y los comenté.
Hace unos días un cliente me llamó para reconfigurar su conmutador de Voz sobre IP, esto ya que anteriormente le habían instalado un Elastix con una tarjeta Digium TDM2400P con 16 puertos FXO. Este conmutador se lo habían instalado en el 2008 solo que desde un inicio presentó problemas con su conmutador ya que sus llamadas sonaban robotizadas, entrecortadas y con muy baja calidad, incluso en la misma red local.
Por lo que después de haberle dejado un demo por una semana, decidió cambiar su conmutador por nuestra solución de Conmutador IP CloudVoox SOHO. En esta migración se usó su tarjeta Digium TDM2400P.
El conmutador junto con la tarjeta lo levantamos con todas las configuraciones anteriores del cliente y con nuevos requerimientos, el detalle fué que derepente el conmutador tenía llamadas entrantes y luego, así como las llamadas salientes fallaban, en un principio pensé que era un problema con el cableado telefónico ya que un día antes lo habían cambiado, pero al revisar línea por línea no estaba ahí el problema. Lo que se hizo a continuación fué verificar que la tarjeta estuviera arriba, al igual que asterisk y los drivers de dahdi, pero todo bien. Al revisar los logs de Asterisk no había ninguna irregularidad, pero al revisar los logs de Linux en general vería por ahí un problema de IRQs entre los USB y la tarjeta digium, por lo que el kernel tiraba la tarjeta.
Para solucionar el problema se desactivaron los USB desde el BIOS del sistema, ya que estos no se ocuparían en el Conmutador de Voz sobre IP.
Generalmente el problema de IRQ son causado por alguno de los siguientes aspectos:
Tener un entorno gráfico instalado
IRQs compartidos
Ningún disco duro DMA o Discos Duros DMA demasiado Altos
Correr Terminales Seriales o Frame Buffers
Generalmente el problema de los IRQs se soluciona cambiando de PCI la tarjeta o desactivando el hardware que causa conflicto si no se está ocupando , aunque ahora Digium ya tiene nuevas tarjetas con Digium PCI Express que son mucho más recomendables que PCI Normal.
Nosotros preferimos Tarjetas Sangoma ya que evitan los problemas de IRQs, aparte que son muy estables y con garantía de por vida, su soporte muy bueno y la información encontrada bastante buena para su implementación con Asterisk.
Hace unos días un amigo me comentó que unos teléfonos Aastra 9112i que se compraron en el 2006 le estaban fallando, por lo que aprovechando que ando de vacaciones aquí en Oaxaca los revisé y vi que tenían un problema de firmware, por lo que bajé el firmware de la página de aastra y me disponía a instalárselos en estos Tels.
Pensé en un principio que podía enviarle el firmware vía http, pero estos teléfonos solo soportan el protocolo TFTP(Trivial FTP), solo que en mi lap no tenía un servidor TFTP, primero instalé el servidor tfptd-hpa pero a pesar de que la configuración es trivial no lo pude echar andar por lo que seguí buscando y buscando, de hecho ya estaba a punto de reiniciar con Windows y probar con Solar TFTP que es un servidor que usé hace varios años cuándo le actualizaba el firmware a terminales portátiles que venían con DOS, pero antes de desistir entré a sourceforge para ver que novedad me encontraba y pude coincidir con OpenTFTP
Básicamente es descargar el código fuente, descomprimirlo, compilarlo, editar el archivo de configuración y ejecutarlo, por lo que pongo rápidamente el proceso de instalación y configuración que usé para echarlo andar en Linux.
cd/usr/src #Obtenemos el código fuente sudowget http://downloads.sourceforge.net/project/tftp-server/tftp%20server%20multithreaded/opentftpmtV1.63.tar.gz?r=&ts=1293699246&use_mirror=cdnetworks-us-1 #descomprimimos el código fuente sudotar-xzvf opentftpmtV1.63.tar.gz #entramos al directorio cd opentftp/ #compilamos el código fuente g++ opentftpd.cpp -lpthread-oopentftpd #copiamos el archivo de configuración al directorio /etc sudocp opentftpd.ini /etc/ #editamos el archivo de configuración sudonano/etc/opentftpd.ini #ponemos la dirección IP de la interfaz del servidor dónde deseamos escuchar las peticiones TFTP, si no ponemos nada el servidor TFTP escuchará en todas las interfaces de red. [LISTEN-ON]
192.168.15.100 #Debemos crear el directorio previamente y asignarle permisos de lectura y escritura [HOME] /var/spool/tftpd #Ponemos None si no queremos que guarde logs el servidor TFTP, también está Errors o All [LOGGING]
None #Indicamos los clientes que podrán conectarse al servidor, si no indicamos nada entonces todos los clientes se podrán conectar. [ALLOWED-CLIENTS]
192.168.15.1-192.168.15.254
Podemos dejar los valores por default asignados debajo de [TFTP-OPTIONS] #Guardamos el archivo de configuración #Ejecutamos el servidor de OpenTFTP sudo ./opentftpd -v #Si todo salió bien podríamos ver algo como lo siguiente
TFTP Server MultiThreaded Version 1.62 Unix Built 1621
starting TFTP...
username: root alias/ is mapped to /var/spool/tftpd/
permitted clients: all
server port range: 30000-30010
max blksize: 65464
default blksize: 512
default timeout: 3 fileread allowed: Yes file create allowed: Yes file overwrite allowed: Yes
thread pool size: 95
listening on: 192.168.15.100:69
Accepting requests.. #Si por alguna razón ya hubiera otro servidor usando el puerto 69 del TFTP entonces podríamos observar un mensaje como el siguiente:
0.0.0.0 Port 69, bind failed, Address already in use
no listening interfaces available, stopping.. #Aquí solo sería revisar que servidores están en ejecución y detenerlos si asi fuera necesario para volver a ejecutar opentftp.
Con lo anterior ya podemos poner los archivos *.st del firmware de los teléfonos aastra en el directorio del servidor TFTP y descargarlos desde los teléfonos indicando la dirección IP del servidor así como el nombre del archivo a descargar.
Viendo en facebook la publicidad que aparece de lado derecho, veo que hay una publicidad de IUSACELL dónde comentan que te dan más de 1 Mbit de Subida con un enlace inalámbrico a un costo de $515.00 pesos mensuales.
Sin duda que es un buen costo que yo si pagaría por este enlace, obviamente habría que revisar cuál es la latencia y calidad de ese servicio, pues esto podría otorgar grandes ventajas a la telefonía de Voz sobre IP y en mi caso poder ofrecer soluciones y mayores ventajas con los Conmutadores IP que distribuimos esto ya que nuestros clientes podrían tener extensiones y sucursales remotas, tener videoconferencia usando el servidor a traves de internet, un acceso al sistema CRM del conmutador, entre otras ventajas que otorga el tener un mejor ancho de banda en internet.
Hace un par de meses instalé un conmutador de Voz sobre IP a un cliente el cuál realiza en promedio cerca de 150 llamadas diarias, por lo que me solicitó que en el conmutador se grabaran las llamadas que recibiera e hiciera, esto quedo funcionando bien, el detalle que en ese tiempo se me pasó agregar un parámetro para que después de finalizada la grabación copiara el archivo de la llamada grabada a una carpeta con la fecha actual de la grabación, esto para ir organizando las llamadas, pero como esto no se hizo 40 días después obviamente tenía miles de llamadas grabadas por lo que revisar una por una fue complicado.
Por lo que se me ocurrió rápidamente hacer un script en PHP que listara la información por fecha y en base a la fecha del archivo crear una carpeta si es que este directorio no existiera y mover ahí el archivo grabado.
En el código solo modificar el directorio de búsqueda y el directorio dónde se crearán las carpetas y moverán los archivos, obviamente este script puede funcionar para cualquier tipo de archivo pero aquí lo hice para que busque archivos wav, cree un directorio de la fecha del archivo si esta no existe y mover ahí el archivo, y asi consecutivamente con todos los archivos.
Espero este script pueda serle de utilidad a alguien más y cualquier comentario hacérmelo llegar..
Buscando alternativas a la conexión de "Infiernitum" y otros proveedores que hay aquí en México y que dejan mucho que desear, encontré por casualidad el servicio de Tangennte.
Lo interesante de este nuevo proveedor de Internet es que ofrece servicios de banda Ancha de 3 Mbits de bajada con 2 Mbits de Subida, un servicio que pocas veces podemos ver con ese ancho de banda de subida, pero lo más interesante es su precio $391.00 mensuales ya con IVA incluído y otros impuestos.
Hemos dividido nuestro curso de Telefonía de Voz sobre IP basada en la plataforma Asterisk PBX en 2 cursos, básico-principiantes e intermedio-avanzado, los cursos están diseñados para que el asistente con el curso de principiantes conozca desde los aspectos básicos de telefonía hasta los conocimientos principales para poder integrar un conmutador de voz sobre IP y ponerlo en producción, dónde podrá integrar un conmutador mediante tarjetas de telefonía Sangoma, Digium así como configurar opciones como son IVRs, Grupos de Marcación, Extensiones, Rutas de llamadas entrantes, salientes, bloqueo de llamadas, correos de Voz, etc .
El curso intermedio avazando se enfoca en cuestiones avanzadas de la telefonía de Voz sobre IP como son integración de Asterisk con CRM, desarrollo de aplicaciones, integración de bases de datos, texto a voz y reconocimiento de voz, videoconferencia, domótica y casas inteligentes entre, monitoreo entre otros temas avanzados que le darán al usuario mayores conocimientos en la integración de soluciones de Voz sobre IP más allá de un conmutador IP.
Para información del Temario, Fechas y Costos puede obtenerse mayor información en el siguiente PDF
Hace unos días instalé Asterisk sobre la nueva versión de servidor de Ubuntu, el detalle con esta versión es que ya trae PHP 5.3 por lo que me salió un problema al instalar mis agis, el error que me salía era el siguiente:
PHP Parse error: syntax error, unexpected T_GOTO, expecting T_STRING in/var/lib/asterisk/agi-bin/phpagi/phpagi.php on line 1184<br>
Esto ya que en el código de phpagi se creó una función llamada goto, función que no existía antes en PHP, pero que desde la versión 5.3 ya existe
T_GOTO goto (available since PHP 5.3.0)<br>
Por lo que había un conflicto con los tipos de parámetros, para esto solo basto editar el código y renombrar la función goto a goto2
function goto($context,$extension='s',$priority=1)
Comentarios Recientes