http://lists.elastix.org/pipermail/desarrollo/attachments/20120524/7bbdf213/attachment-0002.doc

Anuncio
NOTA: No subir módulos o actualizaciones que no se hayan probado con anterioridad,
esto podría ocasionar daños irreparables y la re-instalación de Elastix.
Instalación Standar de Helastix 64bits Versión Estable
http://ufpr.dl.sourceforge.net/project/elastix/Elastix%20PBX%20Appliance%20Software/2.
2.0/Elastix-2.2.0-x86_64-bin-01nov2011.iso
1. Instalación.
Instalación Estándar para sistema Operativos Centos, muy gráfica e intuitiva, no requiere
explicación.
2. Configuración de RED y DNS
#setup
#reboot
#ifconfig
Verificar que haya tomado la configuración deseada, el DNS suele no tomarlo en la primera
configuración.
Se recomienda siempre utilizar el setup para la configuración de red para no originar conflictos
en el sistema operativo.
3. Se actualiza:
Actualizar con yum
#yum update –y
“-y da si a todo”
#yum install mlocate –y
#yum install htop –y
4. Cambiar el códec de las grabaciones
Elastix/PBX/PBX configuración/Configuración General/Call recording format. gsm
gsm: es el de los que tiene el nivel de compresión más alto
Habilitar el Dialing Options
Asterisk Dial command options: “tr”
Salida=> Asterisk Outbound Dial command options: “Tt”
“ t “ : t Permite al que llama transferir una llamada usando la tecla # (o la tecla que se haya
onfigurado para esta funcionalidad en el archivo features.conf o por medio de Feature Codes).
Comentar que normalmente para realizar las transferencias de llamadas se acostumbran a
utilizar las teclas que los terminales tienen para dicha función. Si disponemos de una extensión
analógica esta opción nos puede ir bien.
“ T ”: T Permite transferir una llamada pulsando la tecla # al que llama (quien origina la
llamada)
“ r ”: r Emula el tono de llamada al que llama (no es recomendable usar esta opción para
llamadas salientes)
“w”: w Permite al que llama comenzar a gravar la llamada pulsando las teclas *1 (o la que se
haya configurado en el fichero features.conf)
“W”: w : Permite al que llama comenzar a gravar la llamada pulsando les teclas *1 (o la que se
haya configurado en el fichero features.conf)
5. Cambio de Logos:
Para cambiar los logos:
=> /var/www/html/images/logo_elastix_new3.gif
=> /var/www/html/images/logo_elastix.png)
=>/var/www/html/favicon.ico
6. Ampliación de los menús de monitoreo y Asterisk File Editor
=> /var/www/html/modules/monitoring/index.pnp
Línea 236:
$limit = 20; por $limit = 50;
Comentar las siguientes líneas para evitar que borren los grabaciones
Línea 93
// case 'delete':
// $content = deleteRecord($smarty, $module_name, $local_templates_dir, $pDB,
$pDBACL, $arrConf, $arrLang);
// break;
=>/var/www/html/modules/file_editor/index.php
Línea: 119
$total = count($arrData); $limit = 25; $offset = 0; por
$total = count($arrData); $limit = 300; $offset = 0;
=>/var/www/html/modules/cdrreport/index.php
Línea 265:
$limit = 20; => $limit = 200;
Comentar las siguientes líneas para evitar que borren los reports
Línea 188
// if (isset($_POST['delete'])) {
//if(!isset($sExtension) || $sExtension == "" && !$pACL>isUserAdministratorGroup($_SESSION['elastix_user'])){
// $smarty->assign(array(
// 'mb_title'
=> _tr('ERROR'),
// 'mb_message' => _tr("Your username does not have any extension
assigned."),
//));
//
}else{
//
if($paramFiltro['date_start'] <= $paramFiltro['date_end']){
//
$r = $oCDR->borrarCDRs($paramFiltro);
//
if (!$r) $smarty->assign(array(
//
'mb_title'
=> _tr('ERROR'),
//
'mb_message' => $oCDR->errMsg,
//
));
//
}else{
//
$smarty->assign(array(
//
'mb_title'
=> _tr('ERROR'),
//
'mb_message' => _tr("Please End Date must be greater than Start Date"),
//
));
//
}
//
}
// }
=>/var/www/html/modules/group_permission/index.php
Línea 338:
$limit = 25; port $limit = 200;)
7. Habilitar usuario como administrador
Para lograr que un grupo no administrador pudiera explorar el CDR y las grabaciones, sin tener
que incorporar todas las opciones en el panel, hemos tenido que modificar un poco una
función de la librería paloSantoACL.class.php, añadiendo la línea
if ($username == “operador”) $is=1; a la función isUserAdministratorGroup.
/var/www/html/libs/paloSantoACL.class.php
linea 905
function isUserAdministratorGroup($username)
{
$is=false;
$idUser = $this->getIdUser($username);
if($idUser){
$arrGroup = $this->getMembership($idUser);
//$is = array_key_exists(‘administrator’,$arrGroup);
}
if ($username=="Alfons") $is=1;
return $is;
}
Se habilito un usuario para tener permisos de administrador pero con las restricciones del
grupo en el cual se definió.
8. Modificar el demo para que no interfiera con la extensión 1234
Editor de Elastix : BPX/tolos/Asterisk File Editor
Trabajar desde Tool – Asterisk File Editor
Cambiar extensión demo:
/etc/asterisk/extensión_custom.conf
1234 => 12345
[from-internal-custom]
exten => 12345,1,Playback(demo-congrats)
exten => 12345,2,Hangup()
exten => h,1,Hangup()
include => agentlogin
include => conferences
include => calendar-event
include => weather-wakeup
; extensions can dial 1234
9. Modificar contraseña del Chan Spy
En extensions_override_freepbx.conf
(Poner contraseña en la configuración de 555 chanspy)
;[app-chanspy]
;include => app-chanspy-custom
;exten => 555,1,Macro(user-callerid,)
;exten => 555,n,Answer
;exten => 555,n,Authenticate(753)
;exten => 555,n,Wait(1)
;exten => 555,n,ChanSpy()
;exten => 555,n,Hangup
; end of [app-chanspy]
No manejar Agregar lo siguiente en extensión_custom.conf
[app-chanspy-custom]
exten => 5551,1,Answer
exten => 5551,n,Authenticate(8523) -? colocar este valor y cambiar el numero de orden
exten => 5551,n,Wait(1)
exten => 5551,n,Goto(custom-app-enh-chanspy,s,1)
exten => 5551,n,Hangup
; end of [app-chanspy-custom]
[custom-app-enh-chanspy]
exten => s,1,BackGround(please-enter-the)
exten => s,n,Read(SPYNUM|extension)
exten => s,n,ChanSpy(SIP/${SPYNUM}|wv4)
;end of [custom-app-enh-chanspy]
Agregar lo siguiente en extensions_override_freepbx.conf ó extensions_override_elastix.conf:
[app-chanspy]
include => app-chanspy-custom
exten => 555,1,Authenticate(1234) ? colocar la clave deseada
exten => 555,n,Read(SPYNUM,extension)
exten => 555,n,ChanSpy(SIP/${SPYNUM},wq)
Luego al final de la linea agregar:
include => app-chanspy
include => app-chanspy-custom
; end of [app-chanspy]
10. Configuraciones SIP en FreePBX
Elastix Versión 2.2
Corregir el error que aparece borrando del archivo especificado de la configuración y
colocándola en Other SIP Settings, al final de la configuración SIP del FreePBX
Configurar NAT Según Oficina. “Ver archivos Adjuntos, solo Coris”
Se habilitan solo los siguientes codecs de audio: “alaw”, “ulaw” y “gsm”.
En Language se pone “es” para que quede en español
11. Configuraciones IAX2 en FreePBX
Elastix Versión 2.2
Corregir el error que aparece borrando del archivo especificado de la configuración y
colocándola en Other SIP Settings, al final de la configuración SIP del FreePBX
Se habilitan solo los siguientes codecs de audio: “alaw”, “ulaw” y “gsm”.
En Language se pone “es” para que quede en español
En Other IAX Settings:
calltokenoptional = 0.0.0.0/0.0.0.0 se definen las IP permitidas
maxcallnumbers =16382
12. Instalación del PhpMyAdmin, según manual.
Descargar la versión más reciente del phpMyAdmin versíón 2, (par elastix 2.0)
- Copiar el contenido en la carpeta /var/www/html/modules/dbadmin
-Crear copia del archivo ejemplo de configuración:
/var/www/html/modules/dbadmin/config.sample.inc.php
guardarlo como:
/var/www/html/modules/dbadmin/config.inc.php
Copiar el archivo ó
Modificar la línea 29:
$cfg['Servers'][$i]['auth_type'] = 'cookie';
por
$cfg['Servers'][$i]['auth_type'] = 'http';
para acceder al modulo : <dirección de la planta>/modules/dbadmin
13. Instalación del Fop2. – Descargar Modulo
Addons – > FOP2
14. Configuración de Milliwatt
Agregar en el archivo etc/asterisk/extensions_custom.conf
;Milliwatt
[from-internal-custom]
exten => 5556,1,Answer
exten => 5556,n,Milliwatt()
exten => 5556,n,Hangup
;end of [Milliwatt]
Permite hacer una prueba de tono contra la planta para saber si hay pérdida de paquetes y
verificar la calidad de las llamadas hasta la planta.
;Monos
[from-internal-custom]
exten => 5557,1,Answer
exten => 5557,n,Playback(es/tt-monkeys)
exten => 5557,n,Hangup
;end of [Monos]
15. Música en Espera por extensiones
Esto permite poner musca en espera personalizada por extensiones, por defecto queda la
configuración global, pero se añade una pestaña nueva en cada extensión para configurar la
que queramos.
Línea 3761
Línea 5921
Ver manual Elastix al ritmo del Merengue pag. 254.
16. Cambio de Clave para ARI – No aplica
Agregar en: /etc/amportal.conf
ARI_ADMIN_USERNAME=admin
ARI_ADMIN_PASSWORD=/*Clave Nueva*/
17. Cambiar música en espera
Utilizar el manual Convertir Audio con SOX Compatible con Asterisk.doc, para realizar la
conversión de la música en espera y copiar el archivo resultante en la carpeta:
/var/lib/asterisk/mohmp3/
Eliminar los que no se deseen.
18. Aplicaciones FreePBX
Instalar solo aplicaciones que requieran actualización y que se hayan comprobado en
laboratorio.
Custom Contexts: Permite la creación de contextos personalizados por extensión.
Bulk Extensions: Permite importar/exportar listados de extensiones, con todas las
configuraciones.
Requiere la instalación del paquete desde FreePBX
22. Instalar Fail2Ban.
Instalar según manual adjunto.
23. Instalación Custom Extension
Este módulo permite personalizar contextos por grupos y asignarlo a extensiones.
Instalar el modulo desde FreePBX.
Lo primero es crear uno, en nuestro caso para Argentina:
Context: 4piso
Description: Contexto del 4 Piso
Aplicar y guardar cambios.
Colocar las reglas de marcado que serán permitidas:
Dial Rules:
XXX
XXXX
*231+XXXXX.
= > Opciones de Asterisk
= > Extensiones.
= > Añadir prefijo para poder direccionarlo por la troncal que queramos en
las rutas de salida.
Set All To: Allow
=> Para que nos seleccione como activos todos los contextos que son
mostrados en este módulo.
Como lo único que se quiere es definir una troncal específica para ciertas extensiones no
haremos más ajustes por el momento.
Se debe modificar el functions.inc.php del módulo de Custom Context, para poder ingresar los
prefijos Ejemplo: *231+XXXXX, ya que por defecto no lo permite.
/var/www/html/admin/modules/customcontexts/functions.inc.php
Línea 202 customcontexts_get_config
Agregar lo siguiente después de $dialpattern = array_values
Línea 249
Las partes en azul fueron adicionadas.
//leliogamada inicio
$pos3=""; //Deja la variable en blanco cuando no se le agregan prefijos
if (false !== ($pos2 = strpos($pattern,"+"))) {
// we have a + meaning to not pass the digits on
// (ie, 9+NXXXXXX should use the pattern _9NXXXXXX but
only pass NXXXXXX, not the leading 9)
$pos3 = substr($pattern,0,$pos2); // copia el número de caracteres optenido en
$pos2
$pattern = str_replace("+","",$pattern); // remove all +'s
$pattern = str_replace($pos3,"",$pattern); // remove all $pos3
}
if (!preg_match("/^[0-9*]$/",$pattern)) {
// note # is not here, as asterisk doesn't recoginize it as a
normal digit, thus it requires _ pattern matching
// it's not strictly digits, so it must have patterns, so prepend a
_
$pattern = "_".$pattern;
}
$ext->add($context,$pattern, '', new
ext_goto('1',$pos3.'${'.$exten.'}',$context.'_rulematch')); //se adiciona la variable $pos3. que
indica el prefijo adicional
//leliogamada final
Una vez realizado lo anterior vamos a custom context y guardamos nuevamente los cambios.
Si todo salio bien debería quedar algo similar a esto en extensions_additional.conf:
Al final podemos ver como se agrega el prefijo 200 a la variable Extension de manera
automática.
NOTA: Para aplicarlo a las extensiones simplemente se ingresa por Elastix a la configuración
de la extensión que se quiera afectar y en la pestaña Custom Context que fue agregada
seleccionamos que contexto utilizara dicha extensión, en nuestro caso contexto del 4 piso
[4piso]
include => 4piso-custom
include => from-internal-custom
include => from-internal-additional
include => parkedcalls
include => ext-paging
include => outrt-9
include => app-cf-busy-off
include => outrt-7
include => app-cf-busy-off-any
include => outrt-8
include => app-cf-busy-on
include => outrt-3
include => app-cf-off
include => outrt-4
include => app-cf-off-any
include => outrt-5
include => app-cf-on
include => outrt-6
include => app-cf-unavailable-off
include => outrt-2
include => app-cf-unavailable-on
include => outrt-10
include => app-cf-toggle
include => app-dialvm
include => app-vmmain
include => app-dnd-off
include => app-dnd-on
include => app-dnd-toggle
include => app-speeddial
include => app-dictate-record
include => app-dictate-send
include => app-pbdirectory
include => app-gabcast
include => ext-group
include => grps
include => app-calltrace
include => app-directory
include => app-echo-test
include => app-speakextennum
include => app-speakingclock
include => ext-queues
include => app-queue-toggle
include => ext-meetme
include => app-blacklist
include => app-fax
include => app-callwaiting-cwoff
include => app-callwaiting-cwon
include => vmblast-grp
include => app-recordings
include => app-fmf-toggle
include => ext-findmefollow
include => fmgrps
include => app-userlogonoff
include => app-pickup
include => app-zapbarge
include => app-chanspy
include => ext-test
include => ext-local
include => outbound-allroutes
include => 4piso_bad-number
include => bad-number
exten => _XXX,1,Goto(4piso_rulematch,${EXTEN},1)
exten => _XXXX,1,Goto(4piso_rulematch,${EXTEN},1)
exten => _XXXXX.,1,Goto(4piso_rulematch,200${EXTEN},1)
exten => s,1,Macro(hangupcall,)
exten => h,1,Macro(hangupcall,)
; end of [4piso]
24. Activar ftp
Arrancamos el servicio
#service vsftpd start
Iniciando vsftpd para vsftpd:
[ OK ]
# chkconfig --list
Muestra un listado de los servicios y cuales están activos.
Debemos activar vsftpd en los siguientes servicios: 5, 3, 4, 5
#chkconfig --level 2 vsftpd on
#chkconfig --level 3 vsftpd on
#chkconfig --level 4 vsftpd on
#chkconfig --level 5 vsftpd on
Editar el archivo /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd/chroot_list
Para que solo se permitan los usuarios que están en la jaula chroot_list
Se crea el usuario y se le asigna el home:
#adduser --home /backups/ backups
carpeta backups y usuario backups
25. Configuración Para Ordenar Grabaciones de llamadas y acceso desde Elastix
Crear el script en Linux con las siguientes características.
Script_inicial.sh
for i in $( find -name "*.???" -print |xargs -i{} ls {} ); do
DATE=`date -r $i +'%Y/%m/%d'`
mkdir -p $DATE
mv $i ./$DATE
done
Corremos este para ordenar las grabaciones que existan en el momento.
Crear el script en Linux con las siguientes características.
Script_cron.sh
cd /var/spool/asterisk/monitor
for i in $( find -maxdepth 1 -name "*.???" -print |xargs -i{} ls {} ); do
DATE=`date -r $i +'%Y/%m/%d'`
mkdir -p $DATE
mv $i ./$DATE
done
Con este Script se programa la tarea en el crontab -e
#crontab –e
0 */1 * * * /var/spool/asterisk/monitor/script_cron.sh
Esto hace correr el scrip cada hora todos los días.
La siguiente configuración en el módulo de monitoring de Elastix permitirá accesar las
grabaciones en las carpetas que se organizaran por fecha.
El archivo a modificar es: /var/www/html/modules/monitoring/index.php
Agregar o modificar
Línea 266, en la función reportMonitoring
$arrTmp[1] = date('d M Y',strtotime($value['calldate']));
$arrTmp[2] = date('H:i:s',strtotime($value['calldate']));
//Alfons-Se crea una variable con la información de la fecha de creación del archivo en el
formato año, mes, día
//Inicio fecha_archivo
$fecha_archivo[1]= date('Y/m/d',strtotime($value['calldate']));
//Fin fecha_archivo
if(!isset($value['src']) || $value['src']=="")
Línea 305, en la función reportMonitoring agregar lo siguiente (azul)
if ($namefile != 'deleted') {
//Alfons-Se agrega la variable con la fecha del archivo al link que se mostrara en el reporte
&fecha_dir=$fecha_archivo[1]
$recordingLink = "<a
href=\"javascript:popUp('index.php?menu=$module_name&action=display_record&id=$file&raw
mode=yes&fecha_dir=$fecha_archivo[1]',350,100);\">"._tr("Listen")."</a> ";
//Alfons-Se agrega la variable con la fecha del archivo al link que se mostrara en el reporte
&fecha_dir=$fecha_archivo[1]
$recordingLink .= "<a
href='?menu=$module_name&action=download&id=$file&rawmode=yes&fecha_dir=$fecha_arc
hivo[1]' >"._tr("Download")."</a>";
$recordingLink .= "<a
href='?menu=$module_name&action=download&id=$file&rawmode=yes&fecha_dir=$fecha_arc
hivo[1]' >"._tr("Download")."</a>";
} else {
$recordingLink = '';
}
$arrTmp[7] = $recordingLink;
$arrData[] = $arrTmp;
}
Línea 359, en la función downloadFile agregar lo siguiente (azul)
//Se modifica la variable $path y se le agrega $fecha_archivo y "/" para que al descargar tome
la ruta que se le dio en linux Ejemplo: /2011/12/28
//el resto de la ruta es el que este por defecto
//Inicio Path
$fecha_archivo = getParameter("fecha_dir");
$path = $path_record.$file; //línea original
$caracter_esp="/";
$path = $path_record.$fecha_archivo.$caracter_esp.$file;
//Fin Path
Línea 423, en la función display_record agregar lo siguiente (Azul)
$path_record = $arrConf['records_dir'];
//Alfons-Se crea la variable fecha_archivo_play en esta funsion display_record para cargar en
esta los datos de la fecha de creación del archivo
$fecha_archivo_play = getParameter("fecha_dir");
$sContenido="";
Línea 435, en la función downloadFile agregar lo siguiente (azul)
//Alfons-Se pone $fecha_dir=fecha_archivo_play al link que se le envia al popup de Java.
$sContenido=<<<contenido
<embed
src='index.php?menu=$module_name&action=download&id=$file&rawmode=yes&fecha_dir=$f
echa_archivo_play' width=300, height=20 autoplay=true loop=false></embed><br>
contenido;
26. Cambio CRD
Ver Archivo Adjunto.
27. Configuración de Troncales Dundi
Ver Archivo Adjunto.
28. Exportación de CDR de más de 40000 registros
/etc/php.d/elastix.ini
;Enable greater limits for FreePBX
upload_max_filesize = 20M
memory_limit = 128M
;Enable greater limits for FreePBX
upload_max_filesize = 500M
memory_limit = 1024M
29. Cambio en el IVR para aceptar marcación a otros BPX
/etc/asterisk/extensions_override_freepbx.conf
Agregar: #include extensions_override_alfons.conf
Crear el archivo:
/etc/asterisk/extensions_override_alfons
[ivr-3-custom]
exten => _XXXX,1,SayDigits(${EXTEN::})
exten => _XXXX,n,GotoIf($["${EXTEN}" < "9999"]?uno:dos)
exten => _XXXX,n(uno),Dial(Local/${EXTEN}@from-internal)
exten => _XXXX,n(dos),Playback(silence/1&pbx-invalid)
exten => _XXXX,n(dos),Goto(ivr-3,i,1)
exten => _XXXX,n,Hangup
NOTA: No subir módulos o actualizaciones que no se hayan probado con anterioridad,
esto podría ocasionar daños irreparables y la re-instalación de Elastix.
Descargar