Re: Deleting voicemail by program
John Harragin <[email protected]> Tue, 10 Oct 2023 11:47:35 -0400
| Newsgroups | gmane.comp.telephony.pbx.asterisk.user |
|---|---|
| Message-ID | <CAEB6hR44f6CJMax-FQrSzd4SDY3k6=i=k05t3u7DbcefhpR5Ag@mail.gmail.com> |
--===============3162606392512847127==
Content-Type: multipart/alternative; boundary="000000000000d4712306075ea0af"
--000000000000d4712306075ea0af
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Here is something I wrote years ago. I expect you can adjust it for your
needs
# cat remove_blank_vmail
#!/bin/bash
# remove_blank_vmail takes arguments as voicemail boxes and removes
messages with audio files shorter then MINSIZE (in bytes)
#----------------------------------------------------------------------
# Description:
# Author: John Harragin Monroe-Woodbury CSD
# Created at: Thu Nov 6 12:27:35 EST 2008
#
# Copyright: None. Modify and use however you like...
#
#----------------------------------------------------------------------
# Configure section:
BASEDIR=3D/var/spool/asterisk/voicemail/default/ # default
context
MINSIZE=3D12000 # 1.5
seconds
#--------------------------------------------------------------subroutines:
ProcessDir () {
lastfile=3D""
delcnt=3D0
for file in $(ls -A ${msgdir}/msg*.txt 2>/dev/null); do # the
redirect supresses msg when dir empty
if [ $(stat --format=3D%s ${file/.txt/.wav}) -lt ${MINSIZE} ]; then
rm ${file/.txt/.*}
let delcnt++
fi
lastfile=3D${file}
done
if [ $delcnt -gt 0 ]; then echo "$delcnt short messages deleted from
${msgdir}"; fi
partfilename=3D${lastfile/*\/msg/} # get numb=
er
from file name
highest=3D${partfilename/.txt/}
while [[ $highest =3D 0* ]]; do highest=3D${highest#0}; done # bash d=
oes
not like leading zeros
if [ ${#highest} -eq 0 ]; then highest=3D0; fi # ...or
blanks for math
realcount=3D0
for ((x=3D0;x<=3D${highest};x+=3D1)); do
chkname=3Dmsg$(printf "%04d" $x) # build na=
me
- pad with zeros...
if [ -e ${msgdir}/${chkname}.txt ]; then
if [ $realcount -ne $x ];then
newname=3Dmsg$(printf "%04d" $realcount)
for idivfile in $(ls -A ${msgdir}/${chkname}.*); do
mv ${idivfile} ${msgdir}/${newname}.${idivfile/*\/*./}
done
fi
let realcount++
fi
done
}
#--------------------------------------------------------------main:
for ext in "$@"; do
if [ -d ${BASEDIR}${ext} ];then
for msgdir in $(ls -d ${BASEDIR}${ext}/*); do
ProcessDir ${msgdir}
done
else
echo "${BASEDIR}${ext} is not a valid directory"
fi
echo "Processed extension $ext"
done
On Mon, Oct 9, 2023 at 3:06=E2=80=AFPM Mike Diehl <[email protected]> wro=
te:
> Hi all,
>
> I need to be able to delete a voicemail message using a program.
>
> Is is sufficient to simply delete the .wav and .txt files in the spool
> directory?
> Or do I need to also renumber the remaining files?
>
> For example, let say a given mailbox has 20 messages in it and I want to
> delete message number 5. Can I just delete the 2 files and expect that
> asterisk will renumber them? Or do I need to?
>
> Also, is the answer the same when I migrate to storing voicemails in a
> database?
>
> Thanks in advance.
>
> Mike
>
>
>
> --
> _____________________________________________________________________
> -- Bandwidth and Colocation Provided by http://www.api-digital.com --
>
> Check out the new Asterisk community forum at:
> https://community.asterisk.org/
>
> New to Asterisk? Start here:
> https://wiki.asterisk.org/wiki/display/AST/Getting+Started
>
> asterisk-users mailing list
> To UNSUBSCRIBE or update options visit:
> http://lists.digium.com/mailman/listinfo/asterisk-users
--000000000000d4712306075ea0af
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><div>Here is something I wrote years ago. I expect you can=
adjust it for your needs<br></div><div><br></div><div><br></div><div><br><=
/div><div><span style=3D"font-family:monospace"><span style=3D"color:rgb(0,=
0,0);background-color:rgb(255,255,255)"># cat remove_blank_vmail =C2=A0</sp=
an><br>#!/bin/bash
<br># remove_blank_vmail takes arguments as voicemail boxes and removes mes=
sages with audio files shorter then MINSIZE (in bytes)
<br>#----------------------------------------------------------------------
<br># Description:
<br># Author: John Harragin Monroe-Woodbury CSD
<br># Created at: Thu Nov =C2=A06 12:27:35 EST 2008
<br>#
<br># Copyright: None. Modify and use however you like...
<br>#
<br>#----------------------------------------------------------------------
<br># Configure section:
<br>
<br>BASEDIR=3D/var/spool/asterisk/voicemail/default/ =C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0# default context
<br>MINSIZE=3D12000 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0# 1.5 seconds
<br>
<br>#--------------------------------------------------------------subrouti=
nes:
<br>
<br>ProcessDir () {
<br> =C2=A0lastfile=3D""
<br> =C2=A0delcnt=3D0
<br> =C2=A0for file in $(ls -A ${msgdir}/msg*.txt 2>/dev/null); do =C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0# the redirect supresses msg when dir empt=
y
<br> =C2=A0=C2=A0=C2=A0if [ $(stat --format=3D%s ${file/.txt/.wav}) -lt ${M=
INSIZE} ]; then
<br> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0rm ${file/.txt/.*}
<br> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0let delcnt++
<br> =C2=A0=C2=A0=C2=A0fi
<br> =C2=A0=C2=A0=C2=A0lastfile=3D${file}
<br> =C2=A0done
<br> =C2=A0if [ $delcnt -gt 0 ]; then echo "$delcnt short messages del=
eted from ${msgdir}"; fi
<br> =C2=A0partfilename=3D${lastfile/*\/msg/} =C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0# g=
et number from file name
<br> =C2=A0highest=3D${partfilename/.txt/}
<br> =C2=A0while [[ $highest =3D 0* ]]; do highest=3D${highest#0}; done =C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0# bash does not like leading zeros
<br> =C2=A0if [ ${#highest} -eq 0 ]; then highest=3D0; fi =C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0# ...or blanks for math
<br> =C2=A0realcount=3D0
<br> =C2=A0for ((x=3D0;x<=3D${highest};x+=3D1)); do
<br> =C2=A0=C2=A0=C2=A0chkname=3Dmsg$(printf "%04d" $x) =C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0# build name - pad with zeros...
<br> =C2=A0=C2=A0=C2=A0if [ -e ${msgdir}/${chkname}.txt ]; then
<br> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0if [ $realcount -ne $x ];then
<br> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0newname=3Dmsg$(printf "=
%04d" $realcount)
<br> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0for idivfile in $(ls -A ${ms=
gdir}/${chkname}.*); do
<br> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0mv ${idivfile} $=
{msgdir}/${newname}.${idivfile/*\/*./}
<br> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0done
<br> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0fi
<br> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0let realcount++
<br> =C2=A0=C2=A0=C2=A0fi
<br> =C2=A0done
<br>}
<br>
<br>#--------------------------------------------------------------main:
<br>
<br>for ext in "$@"; do
<br> =C2=A0if [ -d ${BASEDIR}${ext} ];then
<br> =C2=A0=C2=A0=C2=A0for msgdir in $(ls -d ${BASEDIR}${ext}/*); do
<br> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0ProcessDir ${msgdir}
<br> =C2=A0=C2=A0=C2=A0done
<br> =C2=A0else
<br> =C2=A0=C2=A0=C2=A0echo "${BASEDIR}${ext} is not a valid directory=
"
<br> =C2=A0fi
<br> =C2=A0echo "Processed extension $ext"
<br>done
<br><br>
<br><br></span></div></div><br><div class=3D"gmail_quote"><div dir=3D"ltr" =
class=3D"gmail_attr">On Mon, Oct 9, 2023 at 3:06=E2=80=AFPM Mike Diehl <=
<a href=3D"mailto:[email protected]">[email protected]</a>> wrote:<b=
r></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex=
;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi all,<br>
<br>
I need to be able to delete a voicemail message using a program.=C2=A0 <br>
<br>
Is is sufficient to simply delete the .wav and .txt files in the spool dire=
ctory?=C2=A0 <br>
Or do I need to also renumber the remaining files?<br>
<br>
For example, let say a given mailbox has 20 messages in it and I want to <b=
r>
delete message number 5.=C2=A0 Can I just delete the 2 files and expect tha=
t <br>
asterisk will renumber them?=C2=A0 Or do I need to?<br>
<br>
Also, is the answer the same when I migrate to storing voicemails in a <br>
database?<br>
<br>
Thanks in advance.<br>
<br>
Mike<br>
<br>
<br>
<br>
-- <br>
_____________________________________________________________________<br>
-- Bandwidth and Colocation Provided by <a href=3D"http://www.api-digital.c=
om" rel=3D"noreferrer" target=3D"_blank">http://www.api-digital.com</a> --<=
br>
<br>
Check out the new Asterisk community forum at: <a href=3D"https://community=
.asterisk.org/" rel=3D"noreferrer" target=3D"_blank">https://community.aste=
risk.org/</a><br>
<br>
New to Asterisk? Start here:<br>
=C2=A0 =C2=A0 =C2=A0 <a href=3D"https://wiki.asterisk.org/wiki/display/AST/=
Getting+Started" rel=3D"noreferrer" target=3D"_blank">https://wiki.asterisk=
.org/wiki/display/AST/Getting+Started</a><br>
<br>
asterisk-users mailing list<br>
To UNSUBSCRIBE or update options visit:<br>
=C2=A0 =C2=A0<a href=3D"http://lists.digium.com/mailman/listinfo/asterisk-u=
sers" rel=3D"noreferrer" target=3D"_blank">http://lists.digium.com/mailman/=
listinfo/asterisk-users</a></blockquote></div>
--000000000000d4712306075ea0af--
--===============3162606392512847127==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: inline
LS0gCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXwotLSBCYW5kd2lkdGggYW5kIENvbG9jYXRpb24gUHJvdmlkZWQgYnkg
aHR0cDovL3d3dy5hcGktZGlnaXRhbC5jb20gLS0KCkNoZWNrIG91dCB0aGUgbmV3IEFzdGVyaXNr
IGNvbW11bml0eSBmb3J1bSBhdDogaHR0cHM6Ly9jb21tdW5pdHkuYXN0ZXJpc2sub3JnLwoKTmV3
IHRvIEFzdGVyaXNrPyBTdGFydCBoZXJlOgogICAgICBodHRwczovL3dpa2kuYXN0ZXJpc2sub3Jn
L3dpa2kvZGlzcGxheS9BU1QvR2V0dGluZytTdGFydGVkCgphc3Rlcmlzay11c2VycyBtYWlsaW5n
IGxpc3QKVG8gVU5TVUJTQ1JJQkUgb3IgdXBkYXRlIG9wdGlvbnMgdmlzaXQ6CiAgIGh0dHA6Ly9s
aXN0cy5kaWdpdW0uY29tL21haWxtYW4vbGlzdGluZm8vYXN0ZXJpc2stdXNlcnM=
--===============3162606392512847127==--