Thanks, that's given me some ideas. I don't think I can totally roll my own, since I also make use of the MWI features of voicemail. Another thread pointed out the existence of minivm, which I hadn't realized was available. I just need to find the time to play around with some of the proposed options.

John

On 5/14/2011 10:46 PM, virendra bhati wrote:
this will help you..

;-------- DIY VOICEMAIL --------------------
*[ck987_vm_record]*


;"start recording after the beep.  Press # when done."
exten =>  1,1,Playback(/home/ck987/asterisk_sounds/vm-record-start)


;build this call's recorded message file name<uniqueID>_<phone number>
;every call is assigned a unique id.


exten =>  1,n,Set(record_file=${UNIQUEID}_${CALLERID(num)})
; records into my vm_msg folder.


;Ends if # is hit, silence for 2 secs, or recording lasts for 60 seconds
exten =>  1,n,Record(/home/ck987/asterisk_sounds/vm_msg/${record_file}.wav,2,60)


; 2 to review message, 3 to re record, or hang up
exten =>  1,n,Background(/home/ck987/asterisk_sounds/vm-record-end)


exten =>  1,n,WaitExten(5)
exten =>  1,n,Playback(/home/ck987/asterisk_sounds/bye)


exten =>  1,n,Hangup()

exten =>  2,1,Playback(/home/ck987/asterisk_sounds/vm_msg/${record_file})


; press 1 to re-record, or hangup if satisfied
exten =>  2,n,Background(/home/ck987/asterisk_sounds/vm-record-again)


exten =>  2,n,WaitExten(5)
;no response, hang up on person.


exten =>  2,n,Playback(/home/ck987/asterisk_sounds/bye)
exten =>  2,n,Hangup()



;go back to the record option
exten =>  3,1,Goto(ck987_vm_record,1,1)



;----------DIY VOICEMAIL ADMIN----------------------



*[ck987_vm_admin]*
; pass is 9988, jump to n+101 if authentication fails, expect 4 digits


exten =>  1,1,Authenticate(9988,j,4)
; get number of voicemail messages


; SHELL function returns the output from a system command
;"ls -1"  lists visible files in a list."wc -l"  will count how many lines 
there are.  1 line per file!


exten =>  1,n,Set(num_messages=${SHELL(ls -1 
/home/ck987/asterisk_sounds/vm_msg/ | wc -l)})
;you have...


exten =>  1,n,Playback(/home/ck987/asterisk_sounds/you-have)
exten =>  1,n,SayDigits(${num_messages})


;...messages!
exten =>  1,n,Playback(/home/ck987/asterisk_sounds/messages)


;get file names."sed"  command trims off any .wav exten."tr"  command trims off 
whitespace and line feeds.


exten =>  1,n,Set(file_names=${SHELL(ls -m /home/ck987/asterisk_sounds/vm_msg/ 
| sed's/.wav//g'  | tr -d'  \n')})


;start message counter
exten =>  1,n,Set(msg_counter=1)


; 1 to repeat message, 3 to go to the next message, 7 to go to the previous 
message
exten =>  1,n,Playback(/home/ck987/asterisk_sounds/msg-options)


exten =>  1,n,Goto(ck987_vm_play_message,1,1) ; playback loop
;try again if password is wrong


exten =>  1,102,Goto(ck987_vm_admin,1,1)




*[ck987_vm_play_message]*
exten =>  1,1,Background(beep)


exten =>  1,n,Set(current_message=${CUT(file_names,\,,${msg_counter})})
exten =>  1,n,NoOp(${file_names} ${current_message} ${msg_counter})


exten =>  1,n,Background(/home/ck987/asterisk_sounds/vm_msg/${current_message})
exten =>  1,n,Goto(3,1)



; next message: add 1 and go back to the top of the loop

exten =>  3,1,Set(msg_counter=$[${msg_counter} + 1])
exten =>  3,n,Set(msg_counter=${IF($[${msg_counter}>  
${num_messages}]?${num_messages}:${msg_counter})})


exten =>  3,n,Goto(1,1)

; previous message: subtract 1 and go back to the top of the loop


exten =>  7,1,Set(msg_counter=$[${msg_counter} - 1])
;make sure number never goes below 1


exten =>  7,n,Set(msg_counter=${IF($[${msg_counter}<  1]?1:${msg_counter})})
exten =>  7,n,Playback(/home/ck987/asterisk_sounds/previous_message)


exten =>  7,n,Goto(1,1)

;delete message


exten =>  *,1,System(rm /home/ck987/asterisk_sounds/vm_msg/${current_message})
;number of files has changed.  reload number of files and file names


;"ls -1"  lists visible files in a list."wc -l"  will count how many lines 
there are.  1 line per file!


exten =>  *,n,Set(num_messages=${SHELL(ls -1 
/home/ck987/asterisk_sounds/vm_msg/ | wc -l)})
;get file names."sed"  command trims off any .wav exten."tr"  command trims off 
whitespace and line feeds.


exten =>  *,n,Set(file_names=${SHELL(ls -m /home/ck987/asterisk_sounds/vm_msg/ 
| sed's/.wav//g'  | tr -d'  \n')})


exten =>  *,n,Goto(1,1)

it's the actual voicemail example which is use by asterisk it self



On Tue, May 10, 2011 at 2:53 AM, John Marvin <jm-aster...@themarvins.org
<mailto:jm-aster...@themarvins.org>> wrote:

    On 5/9/2011 3:08 PM, Roger Burton West wrote:

        You could use Monitor to record the whole call, then use an AGI
        to do
        something with it on hangup if the other conditions haven't been
        satisfied...?


    I understand how to do the first part, and I at least understand
    that I could do something fancy with the AGI capability. But what I
    don't know is how I can take the recording and insert it into a
    voicemail box such that it can be retrieved through the normal
    "VoiceMailMain" mechanism.

    Would the asterisk voicemail app dynamically notice something new
    being dropped into the voicemail mbox directory? Would it only be
    noticed once Asterisk is restarted? Most importantly, would it send
    out the notifies to the "phone" associated with that voicemail box?
    I can probably fake the last part if necessary, but making the
    voicemail retrievable through the normal voicemail mechanism is what
    I really need to achieve.

    Thanks,

    John



    --
    _____________________________________________________________________
    -- Bandwidth and Colocation Provided by http://www.api-digital.com --
    New to Asterisk? Join us for a live introductory webinar every Thurs:
    http://www.asterisk.org/hello

    asterisk-users mailing list
    To UNSUBSCRIBE or update options visit:
    http://lists.digium.com/mailman/listinfo/asterisk-users




--



-----
Thanks and regards

  Virendra Bhati
+91-9172341457
Asterisk Engineer



--
_____________________________________________________________________
-- Bandwidth and Colocation Provided by http://www.api-digital.com --
New to Asterisk? Join us for a live introductory webinar every Thurs:
                http://www.asterisk.org/hello

asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
    http://lists.digium.com/mailman/listinfo/asterisk-users



--
_____________________________________________________________________
-- Bandwidth and Colocation Provided by http://www.api-digital.com --
New to Asterisk? Join us for a live introductory webinar every Thurs:
              http://www.asterisk.org/hello

asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
  http://lists.digium.com/mailman/listinfo/asterisk-users

Reply via email to