[contexto]
exten => 192,1,Answer
same => n,Macro(user-callerid,)
same => n,Set(CHANNEL(language)=es)
same => n,NoOp(Llamada 192 # ${CALLERID(num)} #${FROM_DID} >> ${ANSWEREDTIME} >> ${HANGUPCAUSE}) )
same => n,agi(ivr.php,${CALLERID(num)} )
;exten => 192,n,Goto(from-internal,190,1)
same => n,Hangup()
;exten => 192,n,Hangup
;;cola de asterisk
;;;;
[macro-enviocolas]
exten => s,1,Macro(user-callerid,)
exten => s,n,NoOp(Envi_190 ${QAGENT} ${UNIQUEID} ${FROMEXTEN} ${HANGUPCAUSE}) )
;;;exten => s,n,System( echo "'$(date +'%D_Hora:_%T') _Agente:_${CHANNEL} _Tel_Cliente:_${FROMEXTEN} _Troncal:_"${FROM_DID}" '" > > /var/log/asterisk/ecus.txt )
;;ingresallamada Julio 16 de 2025 funciona.
;;
exten => s,n,System(php -f /var/lib/asterisk/agi-bin/llamada.php ${UNIQUEID} "${CHANNEL}" ${FROMEXTEN} )
;;;
;;;;escribe log de llamadas en cola.
;;;
exten => s,n,System( echo "'$(date +'Fecha:_%d_%m_%Y_Hora:_%T') _Agente:_${CHANNEL} _"${CALLERID(number)}" _Troncal:_"${FROM_DID}" _Tel_Cliente:_${FROMEXTEN} '" >> /var/log/asterisk/cola.txt )
;;
;;
;exten => s,n,System(php -f /var/lib/asterisk/agi-bin/ingresallamada.php ${UNIQUEID} "${CHANNEL}" ${FROMEXTEN} )
Soporte,Configuración,sopore, venta de plantas pbx de voip con Asterisk, Issabelpbx, freepbx. Instalación cableado estructurado y eléctrico. Instalación y venta cámaras cctv.
que es
miércoles, 16 de julio de 2025
macro en la colas asterisk
viernes, 7 de julio de 2023
lunes, 10 de abril de 2023
ps y averiguar número
comando ps y averiguando el número para realizar un kill -9
echo "`ps -ef|grep -v grep | grep Hang_Ivr | awk '{print $2}'`"
viernes, 16 de diciembre de 2022
Disable bitlocker
ver status bitlocker
Console power shell como administrador.
manage-bde -status
disable bitlocker.
disable-Bitlocker -Mountpoint "C"
con estos pasos se desactiva el bitlocker.
miércoles, 23 de noviembre de 2022
borrar directorio vacios y archivos
borrar archivos vacios (empty) y directorios.
/usr/bin/find /var/spool/asterisk/monitor/* -mtime +30 -type d -daystart -print | xargs rm -rf #-delete # |xargs rm -rf
find /var/spool/asterisk/monitor/ -empty -print
find /var/spool/asterisk/monitor/* -empty -type d -print -delete
find /var/spool/asterisk/monitor/* -empty -type f -print -delete
find /var/spool/asterisk/monitor/* -empty -type f -print | xargs rm -rf
viernes, 4 de noviembre de 2022
ami php
<?php
#echo "ami";
#echo "ami22";
$command=$_GET["cmd"];
$socket = fsockopen("127.0.0.1","5038", $errno, $errstr, 10);
if (!$socket){
echo "$errstr ($errno)\n";
}else{
fputs($socket, "Action: Login\r\n");
fputs($socket, "UserName: araña\r\n");
fputs($socket, "Secret: arañasos\r\n\r\n");
fputs($socket, "Action: Command\r\n");
fputs($socket, "Command: $command\r\n\r\n");
# fputs($socket, "Action: Logoff\r\n\r\n");
while (!feof($socket)){
echo fgets($socket); // .'<br>';
}
fclose($socket);
#}
}
/*
while(true) {
// read a line from the socket
$line = socket_read($socket, 1024, PHP_NORMAL_READ);
if(substr($line, -1) === "\r") {
// read/skip one byte from the socket
// we assume that the next byte in the stream must be a \n.
// this is actually bad in practice; the script is vulnerable to unexpected values
socket_read($socket, 1, PHP_BINARY_READ);
}
# $message = parseLine($line);
echo $line."<br>";
#if($message->type === "QUIT") break;
}
*/
?>
#!/usr/bin/php -q
<?php
// hangup call trunk
//
#$command=$_GET["cmd"];
$socket = fsockopen("127.0.0.1","5038", $errno, $errstr, 10);
if (!$socket){
echo "$errstr ($errno)\n";
}else{
fputs($socket, "Action: Login\r\n");
fputs($socket, "UserName: Araña\r\n");
fputs($socket, "Secret: picadura*\r\n\r\n");
#fputs($socket, "Action: Command\r\n");
#fputs($socket, "Command: $command\r\n\r\n");
#fputs($socket, "Action: Logoff\r\n\r\n");
while(true){
while (!feof($socket)){
$read = trim( fgets($socket));
//if(str_contains('Event: Hangup',$read)){
if ($read == 'Event: Hangup') {
$show = true;
$send = '';
}
if(isset($show)){
if($show){
$send .= $read."\n";
}
}
if(empty($read)){
if(isset($show)){
if($show){
#echo $send;
$url = 'https://ami';
$data = array('ami' =>$send);
// use key 'http' even if you send the request to https://...
$options = array(
'http' => array(
'header' => "Content-type: application/x-www-form-urlencoded\r\n",
'method' => 'POST',
'content' => http_build_query($data)
)
);
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
if ($result === FALSE) { /* Handle error */ }
}
}
$show = false;
}
}
sleep(1);
}
fclose($socket);
}
miércoles, 2 de noviembre de 2022
outcall asterisk
Creación de archivo bash para enviar archivo para realizar llamadas.
Send_client.sh
#!/bin/bash
llamar="$1"
copiar=$(cp -ap $llamar /tmp/)
mover=$(mv /tmp/$llamar /var/spool/asterisk/outgoing/)
#cp -ap outcall_cliente.call /tmp/ && mv /tmp/outcall_cliente.call /var/spool/asterisk/outgoing/
#cp -ap $llamar /tmp/ && mv /tmp/$llamar /var/spool/asterisk/outgoing/
$copiar && $mover
Fin de archivo bash.
Archivo que va outgoing
out_tax2.call
Channel: SIP/GWCOMCEL2/333676325
Context: cliente
Extension: 99
Priority: 1
Set: num=33332854356
Fin archivo outcall
archivo php para la creación de archivo y revisión de permisos.
<?php
##outcall
$troncal = "SIP/GW/";
$numCliente = 6028879020;
$context = "cliente";
$ext = 194;
$prioridad = "Priority: 1";
$numTaxi = 3333015633;
$file_handle = fopen("out_tax2.call", "w");
fwrite($file_handle, "Channel: ".$troncal.$numCliente."\n");
fwrite($file_handle, "Context: ".$context."\n");
fwrite($file_handle, "Extension: ".$ext."\n");
fwrite($file_handle, $prioridad."\n");
fwrite($file_handle, "Set: num=".$numTaxi."\n");
fclose($file_handle);
echo "archivo creado\n";
#echo ("out_tax2.call");
#echo fileperms('out_tax2.call')."\n";
#
$permisos = substr(sprintf("%o", fileperms("out_tax2.call")), -3)."\n";
$outCall_file = 'out_tax2.call';
#revisa usario y grupo asterisk
#
$usuario = posix_getpwuid(fileowner($outCall_file));
$grupo = posix_getgrgid(filegroup($outCall_file));
//extrae grupo usuario y grupo
//
$usrFile = $usuario["name"];
$grFile = $grupo["name"];
#print_r($grupo);
#print_r(array_keys($grupo, "name"));
#print_r(in_array('name', $grupo));
print_r($usuario["name"]."\n");
echo $grupo["name"]."\n\n";
echo $usrFile.":".$grFile."\n";
echo $permisos."\n";
//valida permisos, usuario y grupo
if ( $permisos != 755 ){
chmod($outCall_file, 0755);
#echo "archivo con permisos\n";
}
if ($usrFile != "asterisk" ){
chown($outCall_file, "asterisk");
}
if ($grFile != "asterisk" ){
chgrp($outCall_file, "asterisk");
}
#system("chown asterisk:asterisk out_tax2.call && chmod 755 out_tax2.call")
#system("cp -p out_tax2.call /tmp/ && mv /tmp/out_tax2.call /var/spool/asterisk/outgoing/");
/*
Channel: SIP/GWCOMCEL2/6028879020
Context: cliente
Extension: 999
Priority: 1
Set: num=333333333
*/
?>
miércoles, 26 de octubre de 2022
Conectar dos llamadas externas.
Se genera un archivo .call para sacar la llamada.
Y se configura un contexto para conectar la segunda llamada.
Habilitar permisos de ejecución en el archivo, con propietario y usuario "asterisk" ; si el que se configura.
out.call
Channel: SIP/GWCOMCEL/6028879022
Context: app
Extension: 194
Priority: 1
Set: num=3123015689
contexto va en:
extensions_custom.conf
[cliente]
exten => 194,1,Answer()
same => n,DumpChan(3,)
same => n,NoOP("varible enviada ${num}")
;same => n,Playback(es/welcome&es/calls-waiting-for-rep)
;same => n,Dial(SIP/GWCOMCEL/${EXTEN:1})
;;
;same => n,Dial(SIP/GWCOMCEL/${num},,A(welcome)&L(10000))
;; 10 segundos L. 10 x 1000 msegundos.
;same => n,Dial(SIP/GWCOMCEL/${num},,A(es/calls-waiting-for-rep)&L(10000) )
;; 5 minutos 5 x 60 segundos.
same => n,Dial(SIP/GWCOMCEL/${num},,A(es/calls-waiting-for-rep)&S(300) )
same => n,Hangup()
grabación de llamadas pero debe estar activo el caller id en el archivo.
martes, 4 de octubre de 2022
script rsync
El script rsync se usa para copia directorios hacia otra particion.
se debe montar la partición realizar la copia.
después desmontar y montar con fstab.
#!/bin/bash
copia="/var/spool/asterisk/monitor/" #asi copia la carpeta monitor
destino="/mnt/audios"
#rsync -avzh --progress /var/spool/asterisk/monitor /mnt/audios
rsync -avzh --progress $copia $destino
tener en cuenta la barra slash "/" si esta con está barra copia solo los archivos y sin ella copia la carpeta.
#!/bin/bash
copia="/mnt/audios/monitor/*" # asi copia solo los archivos dentro de la carpeta monitor.
destino="/mnt/audios/"
#rsync -avzh --progress /var/spool/asterisk/monitor /mnt/audios
rsync -avzh --progress $copia $destino
lunes, 26 de septiembre de 2022
script bash matar procesos
se crea un archivo en bash con un nombre y extensión "sh" nombre.sh.
se dan permisos de ejectución chmod +x nombre.sh
se ejecuta ./nombre.sh nombreDelProcesoAmatar.
./nombre.sh firefox
Nota: tener en cuenta los "backticks" o comillas invertidas.
#!/bin/sh
kill -9 `ps -ef|grep -v grep |grep $1| awk '{print $2}'`
lunes, 12 de septiembre de 2022
rc.local
rc.local un archivo para dejar los script que cuando la máquina se reinicie esto se activan.
systemctl status rc-local.service
Ahora en Centos7 rc.local hay que activarlos con systemd.
systemctl enable rc-local.service
systemctl status rc-local.service
systemctl start rc-local.service
O crear un servicio para el script.
bibliografia:
https://www.redhat.com/sysadmin/replacing-rclocal-systemd
martes, 30 de agosto de 2022
wireshark sip ht503 grandstream
## llamar dejar 10 segundos sin hablar colgar de donde llama movil o linea fija.
## volver a llamar dejar 20 segundos pero cuelga desde donde contesta la llamada, extensión.
###
tcpdump -i eth1 udp port 5060 or udp portrange 10000-20000 -s 0 -w /tmp/trunk_`date +%m%d%Y-%H%M`.cap
tcpdump -i eth1 host 192.168.50.252 and udp port 5060 or udp portrange 10000-20000 -s 0 -w /tmp/trunk_08302022_1005.cap
tcpdump -i eth1 udp port 5060 or udp portrange 10000-20000 -s 0 -w /tmp/trunk_claro.cap
viernes, 22 de julio de 2022
linux logs rotation
jueves, 21 de julio de 2022
python gtts
miércoles, 22 de junio de 2022
mostrar rama en git
.bashrc
###mostar rama git mostrar_git_branch() { git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/' }
export PS1="\u@\h \[\033[32m\]\w\[\033[31m\]\$(mostrar_git_branch)\[\033[00m\] $ "
##change short path
PROMPT_DIRTRIM=2
lunes, 18 de abril de 2022
linux mint wifi rtl8821ce kernel dkms
sudo apt-get install rtl8821ce-dkms
si no tienen red cableada. conectado el movil o celular por usb al pc o portatil y compartiendo internet del movil revise si su equipo ya navega y puede instalar el driver realtek.
lunes, 27 de diciembre de 2021
router wifi
ver opción en QOS
configuracion de red > qos inspector
buscadr id=network-qos cambiar por:
network-nat
network-broadband
network-routing = rutas estaticas
Mantenimiento > reiniciar
inspector
maintenance-reboot cambiar por:
maintenance-backupRestore
Seguridad > control parental
security-parental\control por:
security-firewall
lunes, 8 de noviembre de 2021
crontab bajar servicios
crontab en centos 7
@daily /bin/bash /home/servicios_issabel.sh
###
35 2 6 * * /bin/bash /home/servicios_borrar.sh
script borrado
#!/bin/bash
echo "borrado archivos"
# -mtime con + mas de dias, sin el signo mas dias exactos
#
/usr/bin/find /var/spool/asterisk/monitor/ -type f -name "*.wav" -mtime +60 -daystart -print | xargs rm -rf #-delete # |xargs rm -rf
echo "fin de borrado"
# borrado de grabaciones.
bajar servicio centos 7
script para bajar servicios en centos 7
cat servicios_issabel.sh
#!/bin/bash
echo "servicio voip"
systemctl stop httpd && systemctl stop asterisk && systemctl stop mariadb
echo "subida servicios"
systemctl start mariadb && systemctl start asterisk && systemctl start httpd
#end
borrado de archivos voip
script de borrado
servicios_borrar.sh
#!/bin/bash
echo "borrado archivos"
# -mtime con + mas de dias, sin el signo mas dias exactos
#
/usr/bin/find /var/spool/asterisk/monitor/ -type f -name "*.wav" -mtime +72 -daystart -print | xargs rm -rf #-delete # |xargs rm -rf
echo "fin de borrado"
# borrado de grabaciones.