Mostrando entradas con la etiqueta Asterisk. Mostrar todas las entradas
Mostrando entradas con la etiqueta Asterisk. Mostrar todas las entradas

jueves, 7 de junio de 2012

CDR-STATS en Asterisk

Prerequisitos tener instalado asterisk Addons, el tuto de como instalarlo esta en este mismo blog
http://it-yoda.blogspot.com.ar/2012/01/instalacion-de-asterisk-16.html

apt-get -y install python-setuptools python-dev build-essential
apt-get -y install libapache2-mod-python libapache2-mod-wsgi
easy_install pip
easy_install virtualenv

Instalamos MySQL y establecemos nuestra contraseña para el usuario root de la base de datos.

apt-get -y install mysql-server libmysqlclient-dev
apt-get -y install git-core
apt-get install mercurial
mkdir /usr/share/django_app/
cd /usr/src/
wget --no-check-certificate https://github.com/Star2Billing/cdr-stats/tarball/v1.4.0
mv v1.4.0 Star2Billing-cdr-stats-v1.4.0.tar.gz
tar xvzf Star2Billing-cdr-stats-*.tar.gz
rm -rf Star2Billing-cdr-stats-*.tar.gz 
mv cdr-stats cdr-stats-$DATETIME
mkdir /usr/share/django_app/cdr_stats
mv Star2Billing-cdr-stats-* cdr-stats
mv /usr/share/django_app/cdr_stats archive_cdr-stats-$DATETIME
ln -s /usr/src/cdr-stats/cdr_stats /usr/share/django_app/cdr_stats


pip install -r /usr/share/django_app/cdr_stats/requirements.txt
RANDPASSW=`</dev/urandom tr -dc A-Za-z0-9| (head -c $1 > /dev/null 2>&1 || head -c 50)`
sed -i "s/^SECRET_KEY.*/SECRET_KEY = \'$RANDPASSW\'/g" /usr/share/django_app/cdr_stats/settings.py
sed -i "s/DEBUG = True/DEBUG = False/g" /usr/share/django_app/cdr_stats/settings.py
sed -i "s/TEMPLATE_DEBUG = DEBUG/TEMPLATE_DEBUG = False/g" /usr/share/django_app/cdr_stats/settings.py

# Setup settings.py
sed -i "s/backends.sqlite3/backends.mysql/" /usr/share/django_app/cdr_stats/settings.py
sed -i "s/.*'NAME'/ 'NAME': 'cdrstats',#/" /usr/share/django_app/cdr_stats/settings.py
sed -i "/'USER'/s/''/'root'/" /usr/share/django_app/cdr_stats/settings.py
sed -i "/'PASSWORD'/s/''/'mi_password_root'/" /usr/share/django_app/cdr_stats/settings.py
sed -i "/'HOST'/s/''/'localhost'/" /usr/share/django_app/cdr_stats/settings.py
sed -i "/'PORT'/s/''/'3306'/" /usr/share/django_app/cdr_stats/settings.py
mysql -u root -p
Enter password:mi_password_root

#Creamos la base de datos

mysql> CREATE DATABASE cdrstats;
GRANT SELECT,INSERT ON cdrstats.* TO root@localhost IDENTIFIED BY 'mi_password_root';


mysql>USE cdrstats;
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 '',
    ->   uniqueid varchar(32) NOT NULL default '',
    ->   userfield varchar(255) NOT NULL default ''
    -> );
Query OK, 0 rows affected (0.03 sec)
quit 
python manage.py syncdb


#Collect static files from apps and other locations in a single location.
python manage.py collectstatic -l --noinput

#preparamos el Apache y cargamos la configuracion en el archivo cdr-stats.conf


echo '
Listen *:9000

<VirtualHost *:9000>
DocumentRoot /usr/share/django_app/cdr_stats/
ErrorLog /var/log/err-cdr-stats.log
LogLevel warn

WSGIPassAuthorization On
WSGIDaemonProcess cdr_stats user=www-data user=www-data threads=25
WSGIProcessGroup cdr_stats
WSGIScriptAlias / /usr/share/django_app/cdr_stats/django.wsgi

<Directory /usr/share/django_app/cdr_stats>
Order deny,allow
Allow from all
</Directory>

</VirtualHost>


' > /etc/apache2/sites-enabled/cdr-stats.conf

#corregimos el archvode arriba
sed -i "s/@/'/g" /etc/apache2/sites-enabled/cdr-stats.conf

#asignamos permisos en python-egg
mkdir /usr/share/django_app/cdr_stats/.python-eggs
chmod 777 /usr/share/django_app/cdr_stats/.python-eggs


chown -R www-data.www-data /usr/share/django_app/cdr_stats/database/
#Reiniciamos el servicio de Apache
service apache2 restart

==========================================

Como ya dijimos en los prerequisitos que tenemos que tener  instalado el modulo cdr_addon_mysql, presente en los addons de Asterisk, es preciso indicar que se utilizara el campo uniqueid, este de manera predeterminada no viene activo cuando trabajamos con MySQL al guardar el CDR, así que debemos agregar la siguiente linea en el archivo Makefile que se encuentra de la carpeta de asterisk-addons-* y despues de esto compilar e instalar.
colocar en el archivo Makefile que se encuentra en /usr/src/asterisk-addons-*/Makefile
#agregar al final la siguiente línea tal como está


#Esta opcion es para Asterisk 1.4.18 o anterior

ASTCFLAGS+=-DMYSQL_LOGUNIQUEID  
# sino utilizar esta linea
CFLAGS+=-DMYSQL_LOGUNIQUEID


#Luego en /usr/src/asterisk-addons-*/ compilamos

make clean
./configure
make
make install


# y esta otra linea en el  /usr/src/asterisk-addons-*/cdr/cdr_addon_mysql.c :

#define MYSQL_LOGUNIQUEID

========================
Especificamos los parametros de conexión en /etc/asterisk/cdr_mysql.conf


[global]
hostname=localhost
dbname=cdrstats
table=cdr
password=mi_password_root
user=root
port=3306
loguniqueid=yes
userfield=1
===================
# verificamos que se haya cargado el módulo de mysql para asterisk
asterisk -rvvvv
asteriskpbx*CLI> module show like mysql
# y debería mostrar algo como lo siguiente
Module                         Description                              Use Count
cdr_addon_mysql.so             MySQL CDR Backend                        0
app_addon_sql_mysql.so         Simple Mysql Interface                   0
res_config_mysql.so            MySQL RealTime Configuration Driver      0
3
modules loadedI>
#ahora vemos el status de la conexión de MySQL
asteriskpbx*CLI> cdr mysql status
# mostrara algo como lo siguiente
Connected to cdrstats@localhost, port 3306 using table cdr for 1 hours, 1 minutes, 0 seconds.
  Wrote 1 records since last restart.
    -- Registered IAX2 '300' (AUTHENTICATED) at 127.0.0.1:32768
#Si dice Not Connected entonces verificar los parámetros de conexión a la base de datos e igual checar que la base de datos esté dada de alta.
#salimos
asteriskpbx*CLI> exit

#Checamos el registro de la base de datos
mysql -u root -p 
mi_password_root
mysql> select * from cdr;
+---------------------+-------------+-----+--------+-----------+------------------+
| calldate            | clid        | src | dst    | dcontext  | channel
+---------------------+-------------+-----+--------+-----------+------------------+
| 2012-07-06 21:36:44 | "1110" <Soporte > | 1110   |
+---------------------+-------------+-----+--------+-----------+------------------+
1
row in set (0.00 sec)
  ============


lunes, 16 de abril de 2012

Significado campos Master.csv asterisk

Muchas veces nos preguntamos cual es el significado de los campos del archivo que nos informa los detalles de las llamadas que se realizaron, por tal motivo publico lo que significa cada campo.

La informacion se guarda en el siguiente archivo /var/log/asterisk/cdr-csv/Master.csv que tiene los siguientes campos:

;Master.csv => ${CSV_QUOTE(${CDR(clid)})},${CSV_QUOTE(${CDR(src)})},${CSV_QUOTE(${CDR(dst)})},${CSV_QUOTE(${CDR(dcontext)})},${CSV_QUOTE(${CDR(channel)})},${CSV_QUOTE(${CDR(dstchannel)})},${CSV_QUOTE(${CDR(lastapp)})},${CSV_QUOTE(${CDR(lastdata)})},${CSV_QUOTE(${CDR(start)})},${CSV_QUOTE(${CDR(answer)})},${CSV_QUOTE(${CDR(end)})},${CSV_QUOTE(${CDR(duration)})},${CSV_QUOTE(${CDR(billsec)})},${CSV_QUOTE(${CDR(disposition)})},${CSV_QUOTE(${CDR(amaflags)})},${CSV_QUOTE(${CDR(accountcode)})},${CSV_QUOTE(${CDR(uniqueid)})},${CSV_QUOTE(${CDR(userfield)})}


clid: Caller*ID con el texto (80 characters)
src: número del caller ID (string, 80 characters)
dst: extensión destino (string, 80 characters)
dcontext: contexto destino (string, 80 characters)
channel: canal utilizado (80 characters)
dstchannel: Destination channel if appropriate (80 characters)
lastapp: La última aplicación o accion realizada (80 characters) por lo general es HANGUP     cuando el destino corta la llamada sin contestar y es DIAL cuando el origen llama y la llamada es atendida o no por el destinatario.
lastdata: La última solicitud de datos (arguments) (80 characters) es a quien se solicita que atienda la llamada. esta informacion la saca del extensions.conf
start: comienzo de la llamada (date/time)
answer: respuesta de la llamada (date/time)
end: fin de la llamada (date/time)
duration: duración de la llamada en segundos, desde que fue discada hasta el corte (integer)
billsec: duración de la llamada en segundos, desde que fue atendida hasta el corte (integer)
disposition: estado de la llamada (atendida, no atentendida, ocupado, fallida).
amaflags: Se usa para guardar en los CDR  temas de facturación . Puede ser "default", "omit", "billing", o "documentation"
accountcode: código de la cuenta a utilizar: cuenta de facturación de Asterisk, (string, 20 characters)
uniqueid: identificador de canal unico (32 characters)
user field: A user-defined field, maximum 255 characters




miércoles, 4 de abril de 2012

Convertir Telefono Cisco 7912 con soporte SIP


En este tutorial vamos a explicar como convertir nuestro telefono Cisco 7912 con soporte SIP para poder utilizarlo con Asterisk
El Cisco 7912 por defecto no tiene soporte para el protocolo SIP, para que pueda funcionar con SIP es necesario actualizar el firmware del telefono.

El archivo que necesitamos bajar de la pagina de CISCO es el CP7912080001SIP060412A.ZIP que corresponde al firmware que posee soporte para protocolo SIP.

  • bmp2logo.exe (Convert bitmap file to Cisco IP phone binary format)
  • cfgfmt.exe (Convert SIP profile from text to binary (Windows))
  • cfgfmt.linux (Convert SIP profile from text to binary (Linux))
  • cfgfmt.sun (Convert SIP profile from text to binary (Solaris))
  • prserv.exe (Capture Cisco IP phone debug outputs (Windows))
  • prserv.linux (Capture Cisco IP phone debug outputs (Linux))
  • prserv.sun (Capture Cisco IP phone debug outputs (Solaris))
  • sip_ptag.dat (SIP parameter tags file for use with 'cfgfmt.exe')
  • sipexample.txt (Sample Cisco 7905G/7912G IP phone SIP profile
  • gkdefault.cfg
  • CP7912080001SIP060412A.sbin (Cisco 7912G generic binary profile for quick upgrade )

    1. Descomprimir el archive y el, elegir los archivos, CP7912080001SIP060412A.sbin, gkdefault.cfg y gkdefault.txt, los cuales deberán ser copiados en otro directorio que será utilizado por el programa de TFTP de su preferencia.
    2. Para el caso de de el presente trabajo se utizara el programa SOLARWIN-TFTP de la empresa 3COM, si usted necesita dicho programa se puede descargar del sitio http://solarwinds.net/ .
    3. Ejecute el archivo de instalación, cuando haya finalizado, se habrá creado un subdirectorio denominado c:\TFTP-Root\, en cual deben colocarse los archivos de configuración descritos en el numeral 1).
    4. configure los valores de red a fin de que tengan los mismos valores que el teléfono. Si desconoce estos valores, puede presionar el botón  configuración y elegir la opción Setting para determinar el valor por defecto.
    5. Si desea editar alguno de los valores de la configuración del teléfono, debe utilizar el teclado numérico del teléfono y digite la siguiente secuencia de teclas: * - * - # (asterisco, asterisk, numeral) lo que le habilitara las opciones de edición de cada valor. El password por defecto es 1234.
    6. en el campo de Setting/Lan Setting/ en la opción TFTP Server, debe colocarse la dirección IP de su maquina o de la maquina que tenga instalado Solarwind, y en el valor de IP LAN debe colocarse el valor que se asignara a el IP7912G.
    7. En su maquina donde se tenga instalado SOLARWIND debe configurarse en las opciones FILE/Server Configuración, tal como se muestra en la siguiente grafica:
    8. En la solapa de Security debe configurarse la opción Trasmit and Receive Files, para efectuar la carga del nuevo archivo de firmware.
    9. a fin de verificar que existe comunicación entre el teléfono y la computadora debe efectuar un ping a la dirección de Red de teléfono, si se responde satisfactoriamente entonces puede afectarse la actualización de los archivos. C:\> Ping 192.168.1.101
    10. En la pantalla principal de SolarWind se mostraran los mensajes correspondientes a la carga del nuevo firmware, y en la pantalla del teléfono se observaran los mensajes de actualización del mismo.
    11.  Una vez finalizada la carga, deberá apagar y encender el teléfono para verificar el cambio de firmware.
    12. Con la tecla de configuración vuelva a entrar al modo configuración y en la opción Configuración/SIP Configuración deberá colocar los siguientes valores.
·         Servidor PROXY : 192.168.1.108 (IP de mi asterisk)
·         ID USUARIO : 1111
·         PASSWORD : 1111
·         PUERTO : 5060
·         USER LOGIN ID: YES
·         LOGIN ID: 1111

    1. En la opción de Adicionar Extensiones de TRIXBOX proceda a crear el número de teléfono 1111, y asígnelo a un grupo.
    2.  A partir de este momento podrá utilizar su teléfono dentro del entorno de Asterisk

viernes, 9 de marzo de 2012

Mensajes de voz por correo


En este documento detallaremos los pasos necesarios para que cuando alguien nos deje un mensaje de voz en nuestro buzón, se envié por mail un archivo wav con el mensaje que nos dejaron. En este caso utilizaremos una cuenta de gmail para el envió del mensaje.

Prerequisitos
Tener instalado Postfix

#apt-get install postfix libsasl2-modules
En el archivo /etc/asterisk/voicemail.conf configuramos la casilla del interno y agregamos las siguientes líneas:
[default]
1004 => 1234,Jefe Ventas,micuenta@yahoo.com

Configurar una cuenta Gmail en Postfix para enviar correo de Asterisk

Utilizamos una cuenta creada en gmail  "cuenta@gmail.com" y su contraseña: "contraseña"
Pasos:

1) editamos el archivo /etc/postfix/main.cf.
2) Eliminamos el contenido.
3) Agregamos las siguientes líneas: 

# SMTP relayhost
relayhost = [smtp.gmail.com]:587
## TLS Settings
smtp_tls_loglevel = 1
smtp_tls_CAfile = /etc/postfix/certs/CAcert.pem
smtp_tls_cert_file = /etc/postfix/certs/mycert.pem
smtp_tls_key_file = /etc/postfix/certs/mykey.pem
smtp_use_tls = yes
smtpd_tls_CAfile = /etc/postfix/certs/CAcert.pem
smtpd_tls_cert_file = /etc/postfix/certs/mycert.pem
smtpd_tls_key_file = /etc/postfix/certs/mykey.pem
smtpd_tls_received_header = yes
smtpd_use_tls = yes
# configuracion tls
smtp_use_tls = yes
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_sasl_tls_security_options = noanonymous
# alias de mapeo interno a externo
smtp_generic_maps = hash:/etc/postfix/generic

4) Creamos el archivo sasl_passwd en /etc/postfix/
5) Agregamos las siguientes líneas:
[smtp.gmail.com]:587  cuenta@gmail.com:contraseña
6) Creamos el archivo generic en /etc/postfix/
7) Agregamos las siguientes líneas:
root@localhost.localdomain cuenta@gmail.com

aquí tenemos que cambiar el localhost por el nombre de la maquina y el
localdomain por el dominio local, lo podemos ver en /etc/hosts.

8) Cambiamos los permisos escribiendo lo siguiente:
chmod 600 /etc/postfix/sasl_passwd
chmod 600 /etc/postfix/generic
9) Se cifran los archivos
postmap /etc/postfix/sasl_passwd
postmap /etc/postfix/generic

 En muchos foros aparece que para crear los certificados se deben seguir los siguientes pasos

[root@asterisk]# mkdir /etc/postfix/certs/
[root@asterisk]# cd /etc/postfix/certs/
[root@asterisk]# cd certs
[root@asterisk]# openssl dsaparam 1024 -out dsa1024.pem
[root@asterisk]# openssl req -x509 -nodes -days 3650 -newkey
dsa:dsa1024.pem -out mycert.pem -keyout mykey.pem
[root@asterisk]# ln -s mycert.pem CAcert.pem
[root@asterisk]# openssl req -x509 -new -days 3650 -key /etc/postfix/
certs/mykey.pem -out /etc/postfix/certs/mycert.pem
[root@asterisk]# rm dsa1024.pem
Cuando uno utiliza estos certificados para con una cuenta de gmail nos sale un error que se puede ver en los logs de mail (/var/log/mail) que decía:

certificate verification failed for smtp.gmail.com[74.125.157.109]:587: untrusted issuer /C=US/O=Equifax/OU=Equifax Secure Certificate Authority 

El problema radica en el hecho de que Google ha cambiado proveedores de certificados de Thawte a Equifax, y su sistema de correo no reconoce la autoridad de certificación de Equifax como válido. La solución es añadir una copia del certificado de Equifax como certificado root   local de Postfix.  Para solucionar este problema hacemos el paso 10.
 Hacer previamente estos pasos:

[root@asterisk]# mkdir /etc/postfix/certs/
[root@asterisk]# cd /etc/postfix/certs/
[root@asterisk]# ln -s mycert.pem CAcert.pem
10) Creamos una copia local de los certificados Equifax y  Thawte que utiliza Gmail :

Creamos  un archivo llamado Equifax_Secure_CA.pem en el  /etc/postfix/ que contenga lo siguiente:
-----BEGIN CERTIFICATE-----
MIIDIDCCAomgAwIBAgIENd70zzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJVUzEQMA4GA1UE
ChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5
MB4XDTk4MDgyMjE2NDE1MVoXDTE4MDgyMjE2NDE1MVowTjELMAkGA1UEBhMCVVMxEDAOBgNVBAoT
B0VxdWlmYXgxLTArBgNVBAsTJEVxdWlmYXggU2VjdXJlIENlcnRpZmljYXRlIEF1dGhvcml0eTCB
nzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAwV2xWGcIYu6gmi0fCG2RFGiYCh7+2gRvE4RiIcPR
fM6fBeC4AfBONOziipUEZKzxa1NfBbPLZ4C/QgKO/t0BCezhABRP/PvwDN1Dulsr4R+AcJkVV5MW
8Q+XarfCaCMczE1ZMKxRHjuvK9buY0V7xdlfUNLjUA86iOe/FP3gx7kCAwEAAaOCAQkwggEFMHAG
A1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEQMA4GA1UEChMHRXF1aWZheDEtMCsGA1UE
CxMkRXF1aWZheCBTZWN1cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMBoG
A1UdEAQTMBGBDzIwMTgwODIyMTY0MTUxWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUSOZo+SvS
spXXR9gjIBBPM5iQn9QwHQYDVR0OBBYEFEjmaPkr0rKV10fYIyAQTzOYkJ/UMAwGA1UdEwQFMAMB
Af8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUAA4GBAFjOKer89961
zgK5F7WF0bnj4JXMJTENAKaSbn+2kmOeUJXRmm/kEd5jhW6Y7qj/WsjTVbJmcVfewCHrPSqnI0kB
BIZCe/zuf6IWUrVnZ9NA2zsmWLIodz2uFHdh1voqZiegDfqnc1zqcPGUIWVEX/r87yloqaKHee95
70+sB3c4
-----END CERTIFICATE-----

Creamos  un archivo llamado Thawte_Premium_Server_CA.pem en el  /etc/postfix/ que contenga lo siguiente:

-----BEGIN CERTIFICATE-----
MIIDJzCCApCgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBzjELMAkGA1UEBhMCWkExFTATBgNVBAgT
DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3Vs
dGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UE
AxMYVGhhd3RlIFByZW1pdW0gU2VydmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNlcnZl
ckB0aGF3dGUuY29tMB4XDTk2MDgwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgc4xCzAJBgNVBAYT
AlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEdMBsGA1UEChMU
VGhhd3RlIENvbnN1bHRpbmcgY2MxKDAmBgNVBAsTH0NlcnRpZmljYXRpb24gU2VydmljZXMgRGl2
aXNpb24xITAfBgNVBAMTGFRoYXd0ZSBQcmVtaXVtIFNlcnZlciBDQTEoMCYGCSqGSIb3DQEJARYZ
cHJlbWl1bS1zZXJ2ZXJAdGhhd3RlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0jY2
aovXwlue2oFBYo847kkEVdbQ7xwblRZH7xhINTpS9CtqBo87L+pW46+GjZ4X9560ZXUCTe/LCaIh
Udib0GfQug2SBhRz1JPLlyoAnFxODLz6FVL88kRu2hFKbgifLy3j+ao6hnO2RlNYyIkFvYMRuHM/
qgeN9EJN50CdHDcCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQQFAAOBgQAm
SCwWwlj66BZ0DKqqX1Q/8tfJeGBeXm43YyJ3Nn6yF8Q0ufUIhfzJATj/Tb7yFkJD57taRvvBxhEf
8UqwKEbJw8RCfbz6q1lu1bdRiBHjpIUZa4JMpAwSremkrj/xw0llmozFyD4lt5SZu5IycQfwhl7t
UCemDaYj+bvLpgcUQg==
-----END CERTIFICATE-----

11) Agregamos los certificados a nuestro certificado root
cat /etc/postfix/Equifax_Secure_CA.pem >> /etc/postfix/cacert.pem
echo >> /etc/postfix/cacert.pem
cat /etc/postfix/Thawte_Premium_Server_CA.pem >> /etc/postfix/cacert.pem

12) Reiniciamos el postfix
 /etc/init.d/postfix reload

13) Probamos el envió desde la terminal:
echo "contenido a ser enviado en el correo" | mail -s "asunto del correo"  tucuenta@email.com

miércoles, 15 de febrero de 2012

Restricción de llamadas por horario.


En este documento detallaremos los pasos necesarios para configurar la restricción de llamadas por horario. En este ejemplo veremos como restringir que el interno 2001 solo pueda llamar en el horario de 11:30 a 18:00 horas.
En el archivo/etc/asterisk/extensions.conf agregamos las siguientes líneas
Creamos el contexto restringidos

 

[horario1]

exten => _2xxx,1,GotoIfTime(11:30-18:00|mon-fri|*|*?permitido,${EXTEN},1)
exten => _2xxx,2,GotoIfTime(18:01-11:29|mon-fri|*|*?prohibido,${EXTEN},1)

[permitido]

exten => _2XXX,1,Answer() ; contestamos la llamada
exten => _2XXX,n,DIAL(SIP/${EXTEN},60) ;
exten => _2XXX,n,Hangup() ; terminamos la llamada

[prohibido]
exten => _2XXX,1,Answer() ; contestamos la llamada
exten => _2XXX,n,Playback(nodisponible)
exten => _2XXX,n,Hangup() ; terminamos la llamada


Esta línea nos dice que la llamada que se haga al interno 2xxx si está dentro del horario de 11:30 a 18:00 hs entrara al contexto “permitido” a la extensión solicitada en la prioridad 1

exten => _2xxx,1,GotoIfTime(11:30-18:00|mon-fri|*|*?permitido,${EXTEN},1)


En el archivo /etc/asterisk/sip.conf agregamos en el contexto 2001 que es el interno que queremos restringirle las llamadas por horario, la línea context=horario1 que es a donde le decimos a que contexto  pertenece este interno.
[2001]
type=friend
callerid=Ventas <2001>
host=dynamic
context=horario1
secret=9876
;disallow=all
allow=alaw
allow=ulaw
mailbox=2001@default


Diagrama de funcionamiento de restricción de llamada por horario






Cómo funciona la restricción de llamada por horario.
En este ejemplo mostramos como una llamada desde el interno 2001 puede llamar cualquier interno en el horario de 11:30 a 18:00 hs. Cuando el usuario del interno 2001 quiera llamar a otro interno  fuera del horario permitido, se escuchara un mensaje diciendo que ese interno no está disponible.

Conferencias en Asterisk


La aplicación que vamos a utilizar para realizar las conferencias es el meetme, siendo su principal funcionalidad la de crear salas de conferencias (rooms conference)
Para usar la aplicación meetme debemos tener instalado y funcionando asterisk y dahdi, con los usuarios registrados en iax.conf o sip.conf según el protocolo que estemos utilizando.
Configuración:
Para crear la conference room debemos configurar el archivo meetme.conf
Algunos parámetros de configuración son

[general]
audiobuffers=32
schedule=yes
logmembercount=yes
fuzzystart=300
earlyalert=3600
endalert=120

[rooms]
conf => 4000


[general] ; es una configuración general para todas las conferencias
audiobuffers=32 ; indica el número o de paquetes audio (de 20ms) que se van a almacenar en el buffer de memoria cuando pertenezcan a canales que no son DADHI. Permite sincronizar el audio de los distintos participantes y evitar retrasos. Su valor puede estar entre 2 y 32
schedule=yes ; con este parámetro le indicamos a asterisk que las conferencias pueden ser programadas
logmembercount=yes ; este parámetro sirve para actualizar el realtime cada vez que un usuario entra/sale de una conferencia.
fuzzystart=120 ; Este parámetro define si un usuario puede o no entrar a la conferencia si esta no ha empezado. Su valor esta dado en segundos, en este caso 120 segundos, o sea que puede entrar a la conferencias solo si faltan dos minutos para el inicio de la misma.
earlyalert=3600 ; este parámetro esta expresado en segundos. Indica cuando la conferencia esta anunciada: Por ej si pongo este tiempo en 30 min, si el usuario entrara 30 min antes de que empiece la conferencia se anunciará que no existe, si entra cuando falte menos de 30 minutos recibirá un anuncio que la misma aun no a comenzado.
endalert=60 ; cuando falten 60 segundos para terminar la conferencia programada, se le anunciará a todos los participantes.



Desde la etiqueta rooms comienza la conferencia propiamente dicha

conf => 4000 ; indica el número del conference room, en este caso 4000
conf => 4000,1234,9876  ; 4000 es el número de conference room, 1234 el PIN y el 9876 el PIN para los administradores.

Finalmente configuramos el dialplan para la conferencia en el extensions.conf

[conferencia]
exten => 4000,1,Goto(conf,1)
exten => conf,1,Set(MEETME_RECORDINGFILE=/tmp/Tutorial-${TIMESTAMP})
exten => conf,2,Meetme(4000,sr)
exten => conf,3,Hangup()

Para ver los usuarios que están conectado a una conferencia.
Entrar al CLI de asterisk ejecutando asterisk –r

sedeA*CLI> meetme list 4000
User #: 01    4001 device   Channel: SIP/4001-00000000  (unmonitored) 00:00:13
User #: 02    4002 device   Channel: SIP/4002-00000001  (unmonitored) 00:00:04
2 users in that conference.


En este ejemplo se observa que hay dos usuarios conectados a la room conference 4000, que son los internos 4001 y 4002


lunes, 16 de enero de 2012

Instalación de Asterisk 1.6


En este documento detallaremos los pasos necesarios para instalar Asterisk sobre Linux.
Requisitos

SO: Debian Lenny

Actualizamos repositorio nuestro Debian:

aptitude update

Reiniciamos:

reboot

Ponemos bien fecha y horario del servidor sino asterisk no se instala:
# aptitude install ntpdate

# ntpdate -u time.sinectis.com.ar
Otros servidores posibles para usar son tick.nap.com.ar o tock.nap.com.ar

Instalamos dependencias necesarias:
# apt-get install linux-headers-`uname -r`

# apt-get install libc6-dev zlib1g-dev bison openssl libssl-dev libasound2 libasound2-dev libslang2-dev libnewt-dev libncurses5-dev binutils cpp-4.1 gcc-4.1 libstdc++6-4.1-dev g++ make libpq5 libapr1 libexpat1 libaprutil1 libxml2 fxload libusb-dev libiksemel-dev zlib-bin libc6-dev libbluetooth2-dev libxml2-dev

Instalamos Libpri:

El empaquetado de libpri da a nuestra central telefónica la posibilidad de realizar conexiones a líneas primarias de telefonía como las que existen en las pstn

/usr/src# wget http://downloads.digium.com/pub/libpri/libpri-1.4-current.tar.gz
/usr/src# tar xvzf libpri-1.4-current.tar.gz

cd /usr/src/libpri-1.4*
make
make install

Intalamos Dahdi:

El paquete dahdi-linux provee a nuestro servidor de drivers para las tarjetas de conexion a las lineas de telefonia tradicional

/usr/src# wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/releases/dahdi-linux-complete-2.3.0.1+2.3.0.tar.gz

Descomprimimos dadhi

/usr/src# tar -zxvf dahdi-linux-complete-2.3.0.1+2.3.0.tar.gz

Instalamos dahdi

/usr/src/dahdi-linux-complete-2.3.0.1+2.3.0# make all

/usr/src/dahdi-linux-complete-2.3.0.1+2.3.0# make install

/usr/src/dahdi-linux-complete-2.3.0.1+2.3.0# make config


Instalamos Asterisk:

/usr/src# wget http://downloads.asterisk.org/pub/telephony/asterisk/old-releases/asterisk-1.6.2.6.tar.gz

o si queremos bajar la version 1.8

/usr/src# wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-1.8.5.0.tar.gz
/usr/src# tar xvzf  asterisk-1.6.2.6.tar.gz

cd /usr/src/asterisk-1.6*

/usr/src/asterisk-1.6.2.6# ./configure
/usr/src/asterisk-1.6.2.6# make
/usr/src/asterisk-1.6.2.6# make install
/usr/src/asterisk-1.6.2.6# make samples

Con esto para que este en el inicio
/usr/src/asterisk-1.6.2.6# make config

Instalamos Asterisk-Addons:
wget http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-addons-1.6.2.3.tar.gz
tar xvfz asterisk-addons-1.6.2.3.tar.gz
cd /usr/src/asterisk-addons*
./configure && make && make install
make samples




Si queremos instalar un entorno web administrable

Instalamos Asterisk-GUI:
cp -r /etc/asterisk /etc/asterisk.bak
cd /usr/src
svn co http://svn.digium.com/svn/asterisk-gui/branches/2.0 asterisk-gui

cd /usr/src/asterisk-gui
./configure && make && make install
make samples

Modificamos los archivos de configuración de acceso de Asterisk-GUI:
cat << EOF >/etc/asterisk/http.conf
[general]
enabled=yes
enablestatic=yes
bindaddr = 10.10.200.38
bindport = 8088
EOF

cat << EOF >/etc/asterisk/manager.conf
[general]
displaysystemname = yes
enabled = yes
webenabled = yes
port = 5038
;httptimeout = 60
bindaddr = 0.0.0.0

[admin]
secret = admin
read = system,call,log,verbose,command,agent,config
write = system,call,log,verbose,command,agent,config
EOF


Verificamos la configuración:
make checkconfig
reboot
asterisk -r
exit

Intentamos ingresar mediante interfaz WEB a Asterisk:
http://IPADDRESS:8088/static/config/cfgbasic.html