0% found this document useful (0 votes)
49 views29 pages

Asterisk Realtime

The document provides instructions for installing and configuring Asterisk realtime on a server. It includes steps to install dependencies, download Asterisk packages, configure MySQL connectivity, configure SIP peers and extensions, and ensure services start correctly. The goal is to set up an Asterisk server with realtime functionality using a MySQL database for configuration data.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
49 views29 pages

Asterisk Realtime

The document provides instructions for installing and configuring Asterisk realtime on a server. It includes steps to install dependencies, download Asterisk packages, configure MySQL connectivity, configure SIP peers and extensions, and ensure services start correctly. The goal is to set up an Asterisk server with realtime functionality using a MySQL database for configuration data.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 29

ASTERISK CON REALTIME

Instalación de Asterisk

Desactivamos SELinux

setenforce 0

sed -i 's/\(^SELINUX=\).*/\SELINUX=disabled/' /etc/selinux/config

Actualizar paquetes del sistema

yum -y update

Instalar dependencias

yum install gcc gcc-c++ lynx bison mysql-devel mysql-server php php-mysql php-pear php-
mbstring tftp-server httpd make ncurses-devel libtermcap-devel sendmail sendmail-cf caching-
nameserver sox newt-devel libxml2-devel libtiff-devel audiofile-devel gtk2-devel subversion
kernel-devel git subversion kernel-devel php-process crontabs cronie cronie-anacron wget vim
php-xml uuid-devel libtool sqlite-devel ntp

Desactivar el servicio iptables

service iptables stop

chkconfig --level 0123456 iptables off

*Nota: Opcional

Activamos los servicios MySQL

service mysqld start

chkconfig --level 345 mysqld on

Reiniciar el sistema

reboot

Descargar paquetes Asterisk, DAHDI y libpri:

cd /usr/src/

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

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

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

Descomprimir e instalar paquetes:

tar xvfz dahdi-linux-complete-current.tar.gz

cd dahdi-linux-complete-*

make && make install && make config


cd /usr/src

tar xvfz libpri-1.4-current.tar.gz

cd libpri-*

make && make install

cd /usr/src

tar xvfz asterisk-11-current.tar.gz

cd asterisk-*

./configure --libdir=/usr/lib64 && make menuselect && make && make install

Nota: Si sale error al levantar el servicio de asterisk, compilar de la siguiente manera:

./configure && make menuselect && make && make install

Guardar y salir

contrib/scripts/get_mp3_source.sh && make samples && make config && ldconfig

Iniciar servicios

service dahdi start

service asterisk start

asterisk –rvvvvvvvvvv

Crear base de datos asterisk:

mysqladmin -u root password y4ch4y

mysql -u root -p
CREATE DATABASE asterisk;

quit;

Ingresar al siguiente directorio y ejecutar los siguientes comandos:

cd /usr/src/asterisk-1.8.*/contrib/realtime/mysql

mysql -u root -p -h localhost asterisk < iaxfriends.sql

mysql -u root -p -h localhost asterisk < meetme.sql

mysql -u root -p -h localhost asterisk < musiconhold.sql

mysql -u root -p -h localhost asterisk < queue_log.sql

mysql -u root -p -h localhost asterisk < sippeers.sql

mysql -u root -p -h localhost asterisk < voicemail_data.sql

mysql -u root -p -h localhost asterisk < voicemail_messages.sql

mysql -u root -p -h localhost asterisk < voicemail.sql

Ingresar a la base de datos

mysql -u root -p

use asterisk;

CREATE TABLE `extensions` (

`id` int(11) NOT NULL auto_increment,

`context` varchar(20) NOT NULL default '',

`exten` varchar(20) NOT NULL default '',

`priority` tinyint(4) NOT NULL default '0',

`app` varchar(20) NOT NULL default '',

`appdata` varchar(128) NOT NULL default '',

PRIMARY KEY (`context`,`exten`,`priority`),

KEY `id` (`id`)

) ENGINE=MyISAM AUTO_INCREMENT=257 DEFAULT CHARSET=latin1;

*NOTA: IMPORTAR TODA LA BASE DE DATOS ASTERISK AL SERVIDOR DBHA1 CON HEIDISQL

vim /etc/asterisk/res_config_mysql.conf

[general]

dbhost = 209.45.69.60
dbname = asterisk

;dbname = asterisk-dev

dbuser = phpmyadmin

dbpass = y@chay2014

dbport = 3306

dbsock = /var/lib/mysql/mysql.sock

dbcharset = latin1

;requirements=warn ; or createclose or createchar

vim /etc/asterisk/extconfig.conf

[settings]

;sippeers => mysql,general,sip_buddies

sippeers => mysql,general,sippeers

extensions => mysql,general,extensions

;voicemail => mysql,general,voicemail_users

voicemail => mysql,general,voicemail

voicemail_data => mysql,general,voicemail_data

voicemail_messages => mysql,general,voicemail_messages

musiconhold => mysql,general,musiconhold

iaxfriends => mysql,general,iaxfriends

queues => mysql,general,queue_table

queue => mysql,general,queue

queue_members => mysql,general,queue_member_table

meetme => mysql,general,meetme

Comprobar estado:

pbxdes-lab1*CLI> realtime mysql status

general connected to [email protected], port 3306 with username phpmyadmin for 4


hours, 38 minutes.

pbxdes-lab1*CLI>
vim /etc/asterisk/sip.conf

[general]

port=5060

bindaddr=0.0.0.0

rtcachefriends=yes

rtupdate=no

disallow=all

allow=g729

allow=alaw

allow=ulaw

allow=gsm

ignoreregexpire=yes

maxexpiry=3600

defaultexpiry=2400

alwaysauthreject=yes

allowguest=no

directrtpsetup=yes

canreinvite=no

qualify=yes

dtmfmode=rfc2833

language=es

[img1010]

context=intximg

type=friend

host=161.132.14.7

dtmfmode=rfc2833

nat=no

disallow=all

;;allow=g729

allow=alaw
allow=ulaw

;;allow=gsm

accountcode=IMGOUT

qualify=yes

Tabla sippers en la base de datos:


*NOTA: Eliminar la columna language en la base de datos.

vim /etc/asterisk/extensions.conf

[general]

static=yes

writeprotect=no

clearglobalvars=no

[globals]

[intximg]

include => pbx-1

include => pbx-2

include => pbx-3

[voicemail]

exten => *98,1,Answer()

exten => *98,n,VoiceMailMain(${CALLERID(num)})

exten => *98,n,Hangup()

[fijo]

include => voicemail

exten => _[2-7]XXXXXX,1,Dial(SIP/img1010/${EXTEN})

exten => _[2-7]XXXXXX,2,Hangup

[0800]
include => voicemail

exten => _0800XXXXXX,1,Dial(SIP/img1010/${EXTEN})

exten => _0800XXXXXX,2,Hangup

[movil]

include => voicemail

exten => _9XXXXXXXX,1,Dial(SIP/img1010/${EXTEN})

exten => _9XXXXXXXX,2,Hangup

[ldn]

include => voicemail

exten =>_0[4-8][1-7][2-7]XXXXX,1,Dial(SIP/img1010/${EXTEN})

exten =>_0[4-8][1-7][2-7]XXXXX,2,Hangup

[rural]

include => voicemail

exten =>_0[4-8][1-7]8XXXXX,1,Dial(SIP/img1010/${EXTEN})

[ldi]

include => voicemail

;;;Paises Bloqueados

exten => _001242X.,1,Answer

exten => _001242X.,2,Hangup

exten => _001246X.,1,Answer

exten => _001246X.,2,Hangup

exten => _001264X.,1,Answer

exten => _001264X.,2,Hangup

exten => _001268X.,1,Answer

exten => _001268X.,2,Hangup

exten => _001284X.,1,Answer

exten => _001284X.,2,Hangup


exten => _001340X.,1,Answer

exten => _001340X.,2,Hangup

exten => _001345X.,1,Answer

exten => _001345X.,2,Hangup

exten => _001441X.,1,Answer

exten => _001441X.,2,Hangup

exten => _001473X.,1,Answer

exten => _001473X.,2,Hangup

exten => _001649X.,1,Answer

exten => _001649X.,2,Hangup

exten => _001664X.,1,Answer

exten => _001664X.,2,Hangup

exten => _001670X.,1,Answer

exten => _001670X.,2,Hangup

exten => _001671X.,1,Answer

exten => _001671X.,2,Hangup

exten => _001684X.,1,Answer

exten => _001684X.,2,Hangup

exten => _001721X.,1,Answer

exten => _001721X.,2,Hangup

exten => _001758X.,1,Answer

exten => _001758X.,2,Hangup

exten => _001767X.,1,Answer

exten => _001767X.,2,Hangup

exten => _001784X.,1,Answer

exten => _001784X.,2,Hangup

exten => _001808X.,1,Answer

exten => _001808X.,2,Hangup

exten => _001868X.,1,Answer

exten => _001868X.,2,Hangup

exten => _001869X.,1,Answer


exten => _001869X.,2,Hangup

exten => _001876X.,1,Answer

exten => _001876X.,2,Hangup

exten => _001907X.,1,Answer

exten => _001907X.,2,Hangup

exten => _007X.,1,Answer

exten => _007X.,2,Hangup

exten => _0020X.,1,Answer

exten => _0020X.,2,Hangup

exten => _0027X.,1,Answer

exten => _0027X.,2,Hangup

exten => _0030X.,1,Answer

exten => _0030X.,2,Hangup

exten => _0047X.,1,Answer

exten => _0047X.,2,Hangup

exten => _0048X.,1,Answer

exten => _0048X.,2,Hangup

exten => _0061X.,1,Answer

exten => _0061X.,2,Hangup

exten => _0081X.,1,Answer

exten => _0081X.,2,Hangup

exten => _0086X.,1,Answer

exten => _0086X.,2,Hangup

exten => _00447X.,1,Answer

exten => _00447X.,2,Hangup

exten => _00852X.,1,Answer

exten => _00852X.,2,Hangup

exten => _00886X.,1,Answer

exten => _00886X.,2,Hangup

;agregados 21-07-15:

exten => _0031X.,1,Answer


exten => _0031X.,2,Hangup

exten => _0032X.,1,Answer

exten => _0032X.,2,Hangup

exten => _00336X.,1,Answer

exten => _00336X.,2,Hangup

exten => _00337X.,1,Answer

exten => _00337X.,2,Hangup

exten => _00338X.,1,Answer

exten => _00338X.,2,Hangup

exten => _0034[67]X.,1,Answer

exten => _0034[67]X.,2,Hangup

exten => _00393X.,1,Answer

exten => _00393X.,2,Hangup

exten => _0041X.,1,Answer

exten => _0041X.,2,Hangup

exten => _00491[567]X.,1,Answer

exten => _00491[567]X.,2,Hangup

exten => _004970[01]X.,1,Answer

exten => _004970[01]X.,2,Hangup

exten => _00351X.,1,Answer

exten => _00351X.,2,Hangup

exten => _0050[234567]X.,1,Answer

exten => _0050[234567]X.,2,Hangup

exten => _00591[67]X.,1,Answer

exten => _00591[67]X.,2,Hangup

exten => _00593[89]X.,1,Answer

exten => _00593[89]X.,2,Hangup

exten => _0059379X.,1,Answer

exten => _0059379X.,2,Hangup

exten => _0059[58]X.,1,Answer

exten => _0059[58]X.,2,Hangup


exten => _001787X.,1,Answer

exten => _001787X.,2,Hangup

exten => _001809X.,1,Answer

exten => _001809X.,2,Hangup

exten => _001829X.,1,Answer

exten => _001829X.,2,Hangup

exten => _001849X.,1,Answer

exten => _001849X.,2,Hangup

;;;PAISES PERMITIDOS:

exten => _001X.,1,Dial(SIP/img1010/${EXTEN})

exten => _001X.,2,Hangup

exten => _003[349]X.,1,Dial(SIP/img1010/${EXTEN})

exten => _003[349]X.,2,Hangup

exten => _004[49]X.,1,Dial(SIP/img1010/${EXTEN})

exten => _004[49]X.,2,Hangup

exten => _005[245678]X.,1,Dial(SIP/img1010/${EXTEN})

exten => _005[245678]X.,2,Hangup

exten => _0059[13]X.,1,Dial(SIP/img1010/${EXTEN})

exten => _0059[13]X.,2,Hangup

[fijo-movil]

include => fijo

include => movil

[fijo-ldn]

include => fijo

include => ldn

[fijo-ldi]

include => fijo

include => ldi


[fijo-0800]

include => fijo

include => 0800

[fijo-rural]

include => fijo

include => rural

[movil-ldn]

include => movil

include => ldn

[movil-ldi]

include => movil

include => ldi

[movil-0800]

include => movil

include => 0800

[movil-rural]

include => movil

include => rural

[ldn-ldi]

include => ldn

include => ldi

[ldn-0800]

include => ldn

include => 0800


[ldn-rural]

include => ldn

include => rural

[ldi-0800]

include => ldi

include => 0800

[ldi-rural]

include => ldi

include => rural

[0800-rural]

include => 0800

include => rural

[movil-0800-rural]

include => movil

include => 0800

include => rural

[movil-ldn-ldi]

include => movil

include => ldn

include => ldi

[movil-ldn-0800]

include => movil

include => ldn

include => 0800


[movil-ldn-rural]

include => movil

include => ldn

include => rural

[fijo-0800-rural]

include => fijo

include => 0800

include => rural

[fijo-movil-ldn]

include => fijo

include => movil

include => ldn

[fijo-movil-ldi]

include => fijo

include => móvil

include => ldi

[fijo-movil-0800]

include => fijo

include => movil

include => 0800

[fijo-movil-rural]

include => fijo

include => movil

include => rural

[fijo-ldn-ldi]
include => fijo

include => ldn

include => ldi

[fijo-ldn-0800]

include => fijo

include => ldn

include => 0800

[fijo-ldn-rural]

include => fijo

include => ldn

include => rural

[ldn-0800-rural]

include => ldn

include => 0800

include => rural

[ldn-ldi-0800]

include => ldn

include => ldi

include => 0800

[ldn-ldi-rural]

include => ldn

include => ldi

include => rural

[movil-ldi-0800]

include => movil

include => ldi


include => 0800

[movil-ldi-rural]

include => movil

include => ldi

include => rural

[fijo-ldi-0800]

include => fijo

include => ldi

include => 0800

[fijo-ldi-rural]

include => fijo

include => ldi

include => rural

[ldi-0800-rural]

include => ldi

include => 0800

include => rural

[fijo-movil-ldi-0800]

include => fijo

include => movil

include => ldi

include => 0800

[fijo-movil-ldi-rural]

include => fijo

include => movil


include => ldi

include => rural

[fijo-movil-0800-rural]

include => fijo

include => movil

include => 0800

include => rural

[fijo-movil-ldn-ldi]

include => fijo

include => movil

include => ldn

include => ldi

[fijo-movil-ldn-0800]

include => fijo

include => movil

include => ldn

include => 0800

[fijo-movil-ldn-rural]

include => fijo

include => movil

include => ldn

include => rural

[fijo-ldn-0800-rural]

include => fijo

include => ldn

include => 0800


include => rural

[fijo-ldn-ldi-0800]

include => fijo

include => ldn

include => ldi

include => 0800

[fijo-ldn-ldi-rural]

include => fijo

include => ldn

include => ldi

include => rural

[movil-ldn-0800-rural]

include => movil

include => ldn

include => 0800

include => rural

[movil-ldn-ldi-0800]

include => movil

include => ldn

include => ldi

include => 0800

[movil-ldn-ldi-rural]

include => movil

include => ldn

include => ldi

include => rural


[fijo-ldi-0800-rural]

include => fijo

include => ldi

include => 0800

include => rural

[movil-ldi-0800-rural]

include => movil

include => ldi

include => 0800

include => rural

[ldn-ldi-0800-rural]

include => ldn

include => ldi

include => 0800

include => rural

[fijo-movil-ldn-0800-rural]

include => fijo

include => movil

include => ldn

include => 0800

include => rural

[fijo-movil-ldn-ldi-0800]

include => fijo

include => movil

include => ldn

include => ldi


include => 0800

[fijo-movil-ldn-ldi-rural]

include => fijo

include => movil

include => ldn

include => ldi

include => rural

[movil-ldn-ldi-0800-rural]

include => movil

include => ldn

include => ldi

include => 0800

include => rural

[fijo-movil-ldi-0800-rural]

include => fijo

include => movil

include => ldi

include => 0800

include => rural

[fijo-ldn-ldi-0800-rural]

include => fijo

include => ldn

include => ldi

include => 0800

include => rural

[fijo-movil-ldn-ldi-0800-rural]
include => fijo

include => movil

include => ldn

include => ldi

include => 0800

include => rural

[pbx-1]

switch => Realtime/@

[pbx-2]

switch => Realtime/@

[pbx-3]

switch => Realtime/@

Tabla extensions en la base de datos:


vim /etc/asterisk/voicemail.conf

Descomentar la siguiente línea:

searchcontexts=yes

Voicemail en Español:

;emailsubject=[PBX]: New message ${VM_MSGNUM} in mailbox ${VM_MAILBOX}

emailsubject=[PBX]: Nuevo Mensaje ${VM_MSGNUM} En el buzon de Voz ${VM_MAILBOX}


; The following definition is very close to the default, but the default shows

; just the CIDNAME, if it is not null, otherwise just the CIDNUM, or "an unknown

; caller", if they are both null.

;emailbody=Dear ${VM_NAME}:\n\n\tjust wanted to let you know you were just left a $
{VM_DUR} long message (number ${VM_MSGNUM})\nin mailbox ${VM_MAILBOX} from $
{VM_CALLERID}, on ${VM_DATE}, so you might\nwant to check it when you get a chance.
Thanks!\n\n\t\t\t\t--Asterisk\n

emailbody=Estimado (a) ${VM_NAME}:\n\n\tQuiero hacerle saber que usted tiene un


mensaje de ${VM_DUR} segundos de duracion (numero del Mensaje ${VM_MSGNUM}) \nen el
buzon ${VM_MAILBOX} de ${VM_CALLERID}, el ${VM_DATE}, para escuchar este mensaje
marque *98 o descargue este archivo. Gracias!\n\n\t\t\t\t--Asterisk\n

*NOTA: La fecha de envío lo muestra en inglés.

Tabla voicemail en la base de datos:

Para corregir errores editar la tabla voicemail_data tal y como está en la imagen:

Tabla voicemail_data en la base de datos:


Ingresar al siguiente enlace:

http://www.nuance.es/empresas/solucion/soluciones-de-atencion-al-cliente/servicios-y-
soluciones/soluciones-de-recepcion-de-llamadas/loquendo-small-business-bundle/interactive-
tts-demo/index.htm

En Select Voice/Language seleccionar: Esperanza

Ingresar el mensaje y descargar el archivo .wav y subir al servidor.

*Nota: Si fuese necesario instalar: yum install sox

Ingresar al directorio donde subiste el archivo Esperanza.wav

sox Esperanza.wav -r 8000 -c 1 -s ivrpbx0001.wav -q

mv ivrpbx0001.wav /var/lib/asterisk/sounds/ivr
Asterisk CDR en MySQL
En el servidor pbxdes-lab1:

Editamos el archivo /etc/asterisk/cdr_mysql.conf:

[global]

hostname=209.45.69.60
dbname=asteriskcdr

table=cdr

password=yachay2015

user=asterisk

port=3306

Editamos el archivo vim /etc/asterisk/modules.conf

# y agrega al final

[global]

load => cdr_addon_mysql.so

En el servidor pbxdes-dbha1:

Nos conectamos a MySQL:

mysql -u root -p

Creamos la database:

mysql> CREATE DATABASE asteriskcdr;

Creamos un usuario “asterisk” para esta database “asteriskcdrdb”:

mysql> GRANT ALL PRIVILEGES ON asteriskcdr.* TO [email protected] IDENTIFIED BY


'yachay2015';

*NOTA: Dar todos los privilegios al usuario asterisk vía phpmyadmin.

Creamos la tabla:

mysql> USE asteriskcdrdb;

Database changed

mysql> CREATE TABLE `cdr` (


`calldate` datetime NOT NULL default '0000-00-00 00:00:00',
`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 '',
`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 '',
`uniqueid` VARCHAR(32) NOT NULL default '',
`linkedid` VARCHAR(32) NOT NULL default '',
`sequence` VARCHAR(32) NOT NULL default '',
`peeraccount` VARCHAR(32) NOT NULL default ''
);

Una vez hecho esto ponemos como índices para optimizar la búsqueda por estos campos:

ALTER TABLE `cdr` ADD INDEX ( `calldate` );


ALTER TABLE `cdr` ADD INDEX ( `dst` );
ALTER TABLE `cdr` ADD INDEX ( `accountcode` );

*NOTA: Estas pasos se podrían hacer vía web por phpMyAdmin.

Y comprobamos que está todo bien:

pbxdes-lab1*CLI> cdr mysql status

Connected to [email protected], port 3306 using table cdr for 1 hours, 45 minutes, 47
seconds.

Wrote 31 records since last restart and 1 records since last reconnect.

pbxdes-lab1*CLI>

Audios Asterisk en Español


Si queremos que Asterisk, a través de sus aplicaciones como por ejemplo el buzón de voz, salas
de conferencias, etc., interactúe con nosotros en castellano tendremos que realizar los
siguientes pasos. 

Descargar las voces en castellano y extraerlas en sus directorios correspondientes: 

mkdir /var/lib/asterisk/sounds/es 2> /dev/null

cd /var/lib/asterisk/sounds/es

Descargamos las voces:

wget http://www.voipnovatos.es/voces/voipnovatos-core-sounds-es-alaw-1.4.tar.gz

wget http://www.voipnovatos.es/voces/voipnovatos-extra-sounds-es-alaw-1.4.tar.gz

Extraemos las voces y modificamos unos directorios:

tar xzvf voipnovatos-core-sounds-es-alaw-1.4.tar.gz

tar xzvf voipnovatos-extra-sounds-es-alaw-1.4.tar.gz

mv /var/lib/asterisk/sounds/es/dictate/es/* /var/lib/asterisk/sounds/es/dictate

mv /var/lib/asterisk/sounds/es/letters/es/* /var/lib/asterisk/sounds/es/letters

mv /var/lib/asterisk/sounds/es/silence/es/* /var/lib/asterisk/sounds/es/silence
mv /var/lib/asterisk/sounds/es/followme/es/* /var/lib/asterisk/sounds/es/followme

mv /var/lib/asterisk/sounds/es/phonetic/es/* /var/lib/asterisk/sounds/es/phonetic

mv /var/lib/asterisk/sounds/es/digits/es/* /var/lib/asterisk/sounds/es/digits

cp es/* ./

Haciendo que Asterisk use las voces en castellano: 

Establecer el parámetro 'languageprefix = yes' en el archivo /etc/asterisk/asterisk.conf. Por


defecto, esta línea se encuentra comentada (con un ; delante). Para descomentarla hay que
eliminar el ; del inicio.

You might also like