lunes, 19 de septiembre de 2016

Google TTS en ASTERISK


Instalar Google TTS en Centos 7
1.- Instalar Dependencias para su correcto funcionamiento.

yum install perl-libwww-perl perl-DBI perl-DBD-MySQL perl-GD

#cd /etc/yum.repos.d/
wget http://download.opensuse.org/repositories/home:csbuild:Perl/CentOS_7/home:csbuild:Perl.repo

yum install perl-Crypt-SSLeay

# Esta librería es importante para la correcta ejecución del tts.
yum -y install perl-LWP-Protocol-https

yum -y install sox
yum install  libSDL*
Liberia Mpg123

#Instalando desde repositorio 
cd /etc/yum.repos.d/
wget http://downloads2.goautodial.org/centos/7/gotestwin.repo
yum update
yum -y install mpg123

# Instalando desde paquete Rpm.

wget http://downloads2.goautodial.org/centos/7/current/x86_64/RPMS/mpg123-1.20.1-1.x86_64.rpm
rpm -ivh mpg123-1.20.1-1.x86_64.rpm



2.- Descargar la libreria de GoogleTTS.
Ingresar a la siguiente ruta y descargar el repositorio por Git.

# cd /var/lib/asterisk/agi-bin/

# git clone git://github.com/zaf/asterisk-googletts
Descargado , brindamos permiso al directorio y su contenido

# chmod -R 777 asterisk-googletts/



3.-  Pruebas

Para que el TTS se encuentre funcional , creamos un .WAV desde un texto.

Ingresamos a la ruta : /var/lib/asterisk/agi-bin/asterisk-googletts/cli  .

Ejecutamos el comando perl con la librería para la creación, si todo salio bien 
se tiene que visualizar el .wav

# perl googletts-cli.pl -o miaudio.wav -l en -t "TEXTO DEL AUDIO"






4.- Dialplan para las pruebas desde Asterisk.

[Tucontexto]
exten => _105,1,Noop(-------------------Demo tts-------------------)
same => n,agi(/var/lib/asterisk/agi-bin/asterisk-googletts/googletts.agi,"Esta es una simple prueba en español.",es)




Si todo salio bien se debería escuchar el audio desde el texto .Saludos!!!





viernes, 22 de julio de 2016

Error al cargar libasteriskssl.so.1 en ASTERISK



Error al cargar libasteriskssl.so.1 en ASTERISK



1- Primero verificado todas las dependecias para el inicio de Asterisk.

Con el comando ldd podemos verificar  que el modulo libasteriskssl.so.1 no tiene ruta de directorio.

2.- Buscamos el archivo libasteriskssl.so.1 dentro de la raiz.


3.- Creamos el acceso directo .
Ingresamos a la ruta donde se encontró el archivo y creamos el acceso directo  . # cd /usr/lib64

root@ServerPBX:/usr/lib64#  ln -s /usr/lib64/libasteriskssl.so.1 /usr/lib


4.-  # Service asterisk restart

root@ServerPBX:/usr/lib64# asterisk -rvvvvvvvv
Asterisk certified/11.6-cert13, Copyright (C) 1999 - 2013 Digium, Inc. and others.
Created by Mark Spencer <markster@digium.com>
Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under
certain conditions. Type 'core show license' for details.
=========================================================================
Connected to Asterisk certified/11.6-cert13 currently running on ServerPBX (pid = 6776)
ServerPBX*CLI>

martes, 19 de julio de 2016

Cambiar ZONA horaria en Linux



Muchas veces al instalar un Server o VPS nos encontramos con una zona horaria distinto a nuestro Pais y nos toca cambiarlo a nivel de comando, para cambiar hay realizar los siguientes cambios.

Al ejecutar el comando "date" la información se obtiene del archivo:

/etc/localtime

Las zonas horarias disponibles se encuentra en la siguiente ruta :

/usr/share/zoneinfo/

Para establecer la zona horaria  a Perú Time(PET), hay que eliminar la zona horaria actual.

#rm -rf /etc/localtime

Luego hacer un enlace permanente de la ruta de las zonas horarias al LocalTime

#ln -sf /usr/share/zoneinfo/America/Lima /etc/localtime


Realizar pruebas lanzando nuevamente el comanto "date"









jueves, 23 de junio de 2016

Capturar traza SIP


Muchas veces se quier leer la señalizacion SIP y capturar la traza para su lectura, hasta ahora eh usado el TCDUMP lo cual me va bien , pero también hay uno que se puede leer desde consola llamado SNGREP que también funciona perfecto, aquí les dejo las 2 formas .

1.- Usando TCPdump.

  -Para instalar ejecutar el siguiente comando .

  # yum install tcpdump

  - Ejecución:

tcpdump -i eth0 -n -s 0 port 5060 -vvv -w /var/www/html/name.pcap

-i           tarjeta de red donde se quiere capturar los paquetes
-n          no se convierten las direcciones IP en nombres de dominio
-s          cuanto bytes capturar para cada paquete. 0 significa que no se ponen limites
-vvv     el nivel de verbosidad en los paquetes capturados
-w        guardar los paquetes en formato PCAP para ser leido por Wireshark


#También podemos capturar por IPS de origen y destino con el siguiente comando :

tcpdump -i eth0 -s0 -w /var/www/html/name.pcap \(dst 192.168.1.1 or 205.16.17.18\)
and \(src 192.168.1.1 or 204.16.17.18\) -vvv


Para finalizar y guardar todo lo capturado presionar (CRTL-C).


2.- Usando SNGREP :

- Se añaden los repositorios IRONTEC:

vim /etc/yum.repos.d/irontec.repo

 - Se copian las siguiente lineas al archivo y lo guardamos.

[irontec]
name=Irontec RPMs repository
baseurl=http://packages.irontec.com/centos/$releasever/$basearch/

- Se añade la clave publica de IRONTEC

rpm --import http://packages.irontec.com/public.key

- Para la instalación ejecutar el comando

yum install sngrep


Para activar la captura en una interfaz de red :

sngrep -d eth0

Abrir un archivo pcap:

sngrep -I archivo.pcap

Guardar la captura en un archivo pcap:

sngrep –O archivo.pcap


Saludos,

miércoles, 1 de junio de 2016

Error “no crontab for root”



Al ejecutar "crontab -e" nos da el error Error "no crontab for root"


Solución:

Este erro figura porque no se tiene el archivo cargado para la ejecucion del crond.

#crontab /etc/crontab

Reiniciar el crontab

#service crond restart

Volvemos a ejecutar el comando "crontab -e" y listo .

Saludos!!

lunes, 23 de mayo de 2016

CDR EN ASTERISK




1.- Ingresar como root a mysql  :

# mysql -u root -p

2.- Crear usuario mysql para el cdr :

# Grant all privileges on  asteriskcdr.* to 'userbd'@'%' identified by 'password' with grant option;

3.- Crear la tabla para guardar los datos del cdr.

CREATE SCHEMA IF NOT EXISTS `asteriskcdr` DEFAULT CHARACTER SET utf8;
CREATE TABLE IF NOT EXISTS `asteriskcdr`.`cdr` (
`uniqueid` VARCHAR(32) NOT NULL DEFAULT '' ,
`linkedid` VARCHAR(32) NOT NULL DEFAULT '' ,
`clid` VARCHAR(80) NOT NULL DEFAULT '' ,
`src` VARCHAR(80) NOT NULL DEFAULT '' ,
`dst` VARCHAR(80) NOT NULL DEFAULT '' ,
`dcontext` VARCHAR(80) NOT NULL DEFAULT '' ,
`channel` VARCHAR(80) NOT NULL DEFAULT '' ,
`dstchannel` VARCHAR(80) NOT NULL DEFAULT '' ,
`lastapp` VARCHAR(80) NOT NULL DEFAULT '' ,
`lastdata` VARCHAR(80) NOT NULL DEFAULT '' ,
`start` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00' ,
`answer` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00' ,
`end` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00' ,
`duration` INT(11) NOT NULL DEFAULT '0' ,
`billsec` INT(11) NOT NULL DEFAULT '0' ,
`disposition` VARCHAR(45) NOT NULL DEFAULT '' ,
`amaflags` INT(11) NOT NULL DEFAULT '0' ,
`accountcode` VARCHAR(20) NOT NULL DEFAULT '' ,
`userfield` VARCHAR(255) NOT NULL DEFAULT '' ,
`sequence` VARCHAR(32) NOT NULL DEFAULT '' ,
`peeraccount` VARCHAR(32) NOT NULL DEFAULT '' ,
PRIMARY KEY (`uniqueid`) ,
INDEX `start` (`start` ASC) ,
INDEX `dst` (`dst` ASC) ,
INDEX `accountcode` (`accountcode` ASC) )
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8;

4.- Editamos  el archivo  /etc/asterisk/cdr_mysql.so , y agregamos las siguientes lineas.

[global]
hostname=ip de la BD
dbname=asteriskCDR
table=cdr
password=de la bd
user=asterisk
port=3306
sock=/tmp/mysql.sock

[columns]
;static "" => ;alias => alias start => calldate
alias callerid => clid
;alias src => src
;alias dst => dst
;alias dcontext => dcontext
;alias channel => channel
;alias dstchannel => dstchannel
;alias lastapp => lastapp
;alias lastdata => lastdata
;alias duration => duration
;alias billsec => billsec
;alias disposition => disposition
;alias amaflags => amaflags
;alias accountcode => accountcode
;alias userfield => userfield
;alias uniqueid => uniqueid

Guardamos el archivo y luego ingresamos a CLI de asterisk .

5.- Verificamos si contamos con el modulo instalado .

CLI> module show like cdr_mysql.so
Module                         Description                              Use Count
cdr_mysql.so                   MySQL CDR Backend                        0
1 modules loaded

6.- Para iniciar la grabación del  CDR en la database descargamos y cargamos el módulo:

CLI> module unload cdr_mysql.so
== Unregistered 'mysql' CDR backend


*CLI> module load cdr_mysql.so
Loaded cdr_mysql.so
  == Parsing '/etc/asterisk/cdr_mysql.conf': Found
 Loaded cdr_mysql.so => (MySQL CDR Backend)

7.- Luego comprobar si  todo esta  bien:

*CLI> cdr mysql status
Connected to asteriskcdr@localhost, port 3306 using table cdr for 51 seconds.
  Wrote 0 records since last restart.


*CLI> cdr show status

Call Detail Record (CDR) settings
----------------------------------
  Logging:                    Enabled
  Mode:                       Simple
  Log unanswered calls:       No
  Log congestion:             No

* Registered Backends
  -------------------
    mysql
    Adaptive ODBC
    csv
    cdr-custom



Saludos!!


jueves, 19 de mayo de 2016

Compara campos de 2 tablas en SQL SERVER 2014



1) encontrar los registros de Tabla1 que no existen en Tabla2 de la siguiente manera:

SELECT [Tabla1].* FROM [Tabla1] LEFT JOIN [Tabla2] ON [Tabla1].[ID] =
[Tabla2].[ID] WHERE [Tabla2].[ID] IS NULL

2) encontrar los registros de Tabla2 que no existen en Tabla1 de la siguiente manera:

SELECT [Tabla2].* FROM [Tabla1] RIGHT JOIN [Tabla2] ON [Tabla1].[ID] =
[Tabla2].[ID] WHERE [Tabla1].[ID] IS NULL

3) encontrar los registros de Tabla1 y Tabla2 que, con la misma clave,tienen alguna diferencia en el valor de alguno de los otros campos, de la siguiente manera:

SELECT [Tabla1].*, [Tabla2].* FROM [Tabla1] INNER JOIN [Tabla2] ON
[Tabla1].[ID] = [Tabla2].[ID] WHERE [Tabla1].[Campo1] <> [Tabla2].[Campo1]
OR [Tabla1].[Campo2] <> [Tabla2].[Campo2]




-------Saludos!!!


domingo, 15 de mayo de 2016

Instalar Codec g729 Asterisk 13


1.- Descargar el Codec g729 Free.

En el siguiente link , se encuentra todos los codec de acuerdo a la arquitectura del computador.
http://asterisk.hosting.lv/

2.- En nuestro caso vamos a instalar el codec para 64 bits en nuestro caso el barcelona lo cual funciona bien.

* Ingresar a la ruta y descargar el codec # cd /usr/lib/asterisk/modules/

wget http://asterisk.hosting.lv/bin/codec_g729-ast130-gcc4-glibc2.2-x86_64-barcelona.so


3.- Renombrar el archivo a codec_g729.so

 mv codec_g729-ast130-gcc4-glibc2.2-x86_64-barcelona.so codec_g729.so

4.- Dar permiso de escritura al archivo .

# chmod +X codec_g729.so

5.- Ingresar a Asterisk y cargar el modulo .

asterisk*CLI> module load codec_g729.so


5.- Verificar si el modulo se cargo bien con el comando # asterisk*CLI> core show codecs

* Si todo sale bien debería figurar el codec instalado.



Saludos!!



sábado, 14 de mayo de 2016

Instalacion Asterisk 13 en Debian 8


1.- Instalar dependencias para una correcta instalacion de asterisk 13.

# apt-get update

# apt-get install build-essential checkinstall ncurses-dev libxml2-dev libsqlite3-dev libssl-dev uuid-dev build-essential libxml2-dev libssl-dev libncurses-dev libnewt-dev doxygen subversion libmysqlclient-dev unixodbc-dev libmyodbc  sqlite3 libsqlite3-dev

# apt-get install linux-headers-'uname -r'

CURL
--------

apt-get install curl libcurl3 php5-curl

ODBC
-----------
apt-get install tdsodbc unixodbc

SNMP (opcional)
---------------------
apt-get install snmpd

2.- Descargar los paquetes para la compilacion de Asterisk 13.


- Ingresar al directorio ->  cd /usr/src/

- Descargar Dahdi

 wget  http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-2.10.0+2.10.0.tar.gz

- Desempaquetar Libpri     #  tar -xf dahdi-linux-complete-2.10.0+2.10.0.tar.gz
- Ingresar al directorio       #   cd dahdi-linux-complete-2.10.0+2.10.0/

- Compilar e instalar          # make
                                           # make install
                                           # make config

- Descargar libpri

 wget http://downloads.asterisk.org/pub/telephony/libpri/libpri-current.tar.gz

- Desempaquetar Libpri     #  tar -xf libpri-current.tar.gz
- Ingresar al directorio       #  cd libpri-1.5.0/
- Compilar e instalar          # make && make install


- Descargar Asterisk 13 

 wget http://downloads.asterisk.org/pub/telephony/certified-asterisk/asterisk-certified-13.1-current.tar.gz

- Desempaquetar Libpri     #   tar -xf asterisk-certified-13.1-current.tar.gz
- Ingresar al directorio       #  cd asterisk-certified-13.1-cert7/

* Instalar los paquetes faltantes con un script que asterisk contiene en su direcctorio..

# ./usr/src/asterisk-certified-13.1-cert7/contrib/scripts/install_prereq install

#############################################
## install completed successfully
#############################################

# ./configure   -> Si todo sale Ok debe aparecer la siguiente imagen.

# ./configure --libdir=/usr/lib64   -- En caso de 64bits



# make menuselect -> Seleccionar los paquetes necesarios y guardar.


# make



* Si te muestra el siguiente error instalar el paquete PJSIP.




# cd /usr/src/
# wget http://www.pjsip.org/release/2.3/pjproject-2.3.tar.bz2
# tar -xjf pjproject-2.3.tar.bz2
# cd pjproject-2.3
# ./configure --prefix=/usr/lib --enable-shared --disable-sound --disable-resample --disable-video --disable-opencore-amr CFLAGS='-O2 -DNDEBUG'
#  make dep && make && make install
# ldconfig

* Volver a compilar 

# make
# make install
# make samples
# make config
# ldconfig -v 

Si la instalacion es exitosa debe mostras la siguiente imagen.





miércoles, 11 de mayo de 2016

Insertar datos de Txt a Mysql por PHP



1.- Contenido del archivo TXT.

123456789|43374708|945508914|demo
223456789|53374708|945508914|demo2
323456789|63374708|945508915|demo3

2.- Creamos la tabla para esta prueba .

CREATE TABLE nom_tabla 
(
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, 
num1 VARCHAR(50),
num2 VARCHAR(50),
num3 VARCHAR(50),
num4 VARCHAR(50)
)

3.- Creamos la conexion .

<?php
$db = mysqli_connect("localhost", "root", "12345678") or die("Could not connect.");

if(!$db) 

die("no db");

if(!mysqli_select_db($db,"sms"))

  die("No database selected.");

?>

4.- Creamos la logica para el insert














Saludos...

domingo, 8 de mayo de 2016

Configurar IP Centos 7

Hace semana que acabo de instalar el nuevo Centos 7 , donde para cambiar la IP a modo consola fue tedioso a primera impresión.

1.- No se puede utilizar el comando de cualquier samaritano en el mundo de Linux , el famoso "IFCONFIG", aquí tenemos que utilizar el comando "ip addr".



2.- Ahora nos toca , ir a la ruta # /etc/sysconfig/network-scripts , donde también tenemos otra sorpresa ,aquí no encontramos el famoso  Eth0 ,Eth1, pero si un archivo  ifcfg-enp2s3.

Ingresamos a la configuración  # vim ifcfg-enp2s3, y solo agregamos la siguientes lineas en rojo, el campo BOOTPROTO setear en "none" .


* Descactivar NetworkManager:

# systemctl stop NetworkManager
# systemctl disable NetworkManager
* Debe mostrar el siguiente texto donde se muestra  q NetworkManager fue removido.

rm '/etc/systemd/system/multi-user.target.wants/NetworkManager.service'
rm '/etc/systemd/system/dbus-org.freedesktop.NetworkManager.service'
rm '/etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service'

* Reiniciamos el servicio y listo:
#systemctl restart network.service


Saludos...