All pastes #10282 Raw Edit

Untitled

public text v1 · immutable
#10282 ·published 2005-04-25 18:08 UTC
rendered paste body
#!/bin/bash
# call as voicemail_callback.sh ### 
# todo:
#  Allow for different contexts, as the config file does.
#  Right now, anyone with the same mailbox # will get called :-)
#
# dialplan magic:
#
#[voicemail_callback]
#exten => s,1,Wait(5)
#exten => s,2,SendDTMF(238)
#exten => s,3,Hangup
#
# the [fxs] extension is just my main "trusted" context that I let call out.
#
# voicemail.conf must have a 'callme' line directly underneath each voicemail= line you intend to allow callbacks with.
#
# e.g.
#801 => 1000,Service Phone,,,|dialout=fromvm|review=yes|envelope=yes
#callme = 5551212
#

get_phone_numbers()
{
    if [ "x$1" != "x" ];then voicemailbox="$1"; else return 1; fi
       cfg_line=$(grep -A 1 "^$voicemailbox" "$VOICEMAIL_CFG")
       if ( echo "$cfg_line"|grep -E 'callme\W*=\W*[[:digit:]]+'>/dev/null);then
              phnum_list=$(echo "$cfg_line"|grep -E 'callme = '|cut -d'=' -f 2|sed -e 's/,/ /g')
              echo "$phnum_list"
        else
                return 1
        fi
}

make_callfile()
{
    if [ "x$1" != "x" ];then mailbox="$1"; else return 1; fi
    if [ "x$2" != "x" ];then phone_number="$2"; else return 1; fi

     #note use of '-' in '-EOF1' - Escapes tab at beginning of lines
     CALLFILE=$(cat <<-EOF1
Channel: Local/$phone_number@fxs
MaxRetries: 10
# Retry in 5 min
RetryTime: 300
WaitTime: 45

Context: voicemail_callback
Extension: s
Priority: 1
SetVar: mailbox=$mailbox
EOF1)

      echo "$CALLFILE" >> "$CALL_SPOOL_DIR"/$(date +%Y%mNaVI%M%S)-$phone_number

}

#CONSTANTS
ASTERISK_CFG="/etc/asterisk"
VOICEMAIL_CFG="$ASTERISK_CFG/voicemail.conf"
CALL_SPOOL_DIR="/var/spool/asterisk/outgoing"


#*********MAIN*******************************************************

if [ "x$1" != "x" ];then voicemailbox="$1"; else exit 1; fi

NUMNEW=`/usr/bin/find /var/spool/asterisk/voicemail/default/$voicemailbox/INBOX -type f | /usr/bin/wc -l`
if [ $NUMNEW -gt 0 ]; then
    if ph_numbers=$(get_phone_numbers $voicemailbox) ;then
          for ph_num in $ph_numbers; do
                  make_callfile "$voicemailbox" "$ph_num"
          done
    fi
fi