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...