You can use SOX command in linux
# man sox
# sox NONasteriskXXX.wav -c 1 -r 8000 asteriskXXX.gsm
(it resamples the non asterisk audio file in single channel audio with 8Khz sampling frequency)
If you have tons of wav file, it's waste of time to type a command for every individual wav files. So, you can do the following
Let's say you have WAV files in /tmp/recordings directory.
/tmp/recordings# for i in *
> do
> sox $i -c 1 -r 8000 `echo $i|sed "s/.wav/.gsm/"`
> done
Ooola.. it's done!!! You just converted all the files in /tmp/recordings directory from WAV to gsm.
Here, we are using for loop to go thru' each files in the /tmp/recordings directory. '$i' returns the file name. 'sed "s/.wav/.gsm/"' renames the file from .wav to .gsm
Thursday, September 23, 2010
Tuesday, September 14, 2010
Purge old voicemails and renumber/rename the voicemail files
1. Write the script to renumber the voicemail files. Why to renumber? (Test yourself: go to /var/spool/asterisk/voicemail/default/{VMbox}/INBOX ; say you have msg0000.xxx and msg0001.xxx, msg0003.xxx in your INBOX. Say you deleted msg00000.xx because it's older than 10 days. Now leave the voicemail message for that VMbox, the new message will appear as msg0000.xxx while it should be appeared as msg0003.xxx (in our case) so that while retrieving the message, older message would be played before the new message. Thus we have a problem. So, what is the solution?
When you delete the old files (say older then 10 days) you need to make sure that you rename the other files accordingly. In this case, after you delete msg0000.xxx (older than 10 days) , you need to rename msg0001.xxx to msg0000.xxx so that other new messages will appear in the appropriate order.
/root# vi renumber.sh
#!/bin/bash
function padder() {
case $1 in
"new")
case ${#new} in
1) newpad=000$new;;
2) newpad=00$new;;
esac;;
"old")
case ${#old} in
1)oldpad=000$old;;
2)oldpad=00$old;;
esac;;
esac
}
new=0
padder new
totalfiles=`find . -type f -name "msg.*txt"|wc -l`
for (( old=0; old<100; old+=1 )); do
padder old
if ( test -e msg$oldpad.txt); then
if ( test -e msg$newpad.txt); then
echo "file already exists";
else
for ext in txt WAV; do mv msg$oldpad.$ext msg$newpad.$ext; done
fi
let new+=1
padder new
if (( $new == $totalfiles )); then break; fi
fi
done
2. Now you have to write the script that can crawl through all of the VMbox and rename the voicemails appropriately.
/root #vi collect-and-rename.sh
#!/bin/bash
basedir=/var/spool/asterisk/voicemail/default
cd $basedir
echo $basedir
for str in `find . -type f -name "msg*.txt"`; do
maindir=`echo "$str"|awk -F/ '{print $2}'`
cd ./$maindir/INBOX
# echo `pwd`
bash /root/renumber.sh
cd $basedir
cd ./$maindir/Old
# echo `pwd`
bash /root/renumber.sh
cd $basedir
done
3. Script to delete files older than 10 days
/root # vi deleteOldVm.sh
#!/bin/bash
$dir=/var/spool/asterisk/voicemail/default
cd $dir
find . -type f -name msg????.??? -mtime +10 -exec -rm {} \;
http://www.oneharding.com/voip/asterisk_voicemail_scripts.html
http://djlab.com/2010/05/automatically-purge-old-voicemail-on-asteriskfreepbxtrixbox/
http://www.vectorsite.net/tsawk_2.html
When you delete the old files (say older then 10 days) you need to make sure that you rename the other files accordingly. In this case, after you delete msg0000.xxx (older than 10 days) , you need to rename msg0001.xxx to msg0000.xxx so that other new messages will appear in the appropriate order.
/root# vi renumber.sh
#!/bin/bash
function padder() {
case $1 in
"new")
case ${#new} in
1) newpad=000$new;;
2) newpad=00$new;;
esac;;
"old")
case ${#old} in
1)oldpad=000$old;;
2)oldpad=00$old;;
esac;;
esac
}
new=0
padder new
totalfiles=`find . -type f -name "msg.*txt"|wc -l`
for (( old=0; old<100; old+=1 )); do
padder old
if ( test -e msg$oldpad.txt); then
if ( test -e msg$newpad.txt); then
echo "file already exists";
else
for ext in txt WAV; do mv msg$oldpad.$ext msg$newpad.$ext; done
fi
let new+=1
padder new
if (( $new == $totalfiles )); then break; fi
fi
done
2. Now you have to write the script that can crawl through all of the VMbox and rename the voicemails appropriately.
/root #vi collect-and-rename.sh
#!/bin/bash
basedir=/var/spool/asterisk/voicemail/default
cd $basedir
echo $basedir
for str in `find . -type f -name "msg*.txt"`; do
maindir=`echo "$str"|awk -F/ '{print $2}'`
cd ./$maindir/INBOX
# echo `pwd`
bash /root/renumber.sh
cd $basedir
cd ./$maindir/Old
# echo `pwd`
bash /root/renumber.sh
cd $basedir
done
3. Script to delete files older than 10 days
/root # vi deleteOldVm.sh
#!/bin/bash
$dir=/var/spool/asterisk/voicemail/default
cd $dir
find . -type f -name msg????.??? -mtime +10 -exec -rm {} \;
http://www.oneharding.com/voip/asterisk_voicemail_scripts.html
http://djlab.com/2010/05/automatically-purge-old-voicemail-on-asteriskfreepbxtrixbox/
http://www.vectorsite.net/tsawk_2.html
Subscribe to:
Posts (Atom)