[asterisk-users] Recording interface (pause/PLAY/RERECORD)

Michelle Dupuis mdupuis at ocg.ca
Tue Jul 27 21:00:57 CDT 2010


That's along the lines of what I was thinking, but how do you trap the DTMF during record and cause that to end recording?  I thought record kept going until hangup?

MD
________________________________________
From: asterisk-users-bounces at lists.digium.com [asterisk-users-bounces at lists.digium.com] On Behalf Of Leif Madsen [leif.madsen at asteriskdocs.org]
Sent: Tuesday, July 27, 2010 9:49 PM
To: Asterisk Users List
Subject: Re: [asterisk-users] Recording interface (pause/PLAY/RERECORD)

On 10-07-27 08:39 PM, Michelle Dupuis wrote:
> Is there a prebuild module/dialplan which gives me a nice interface to recording messages?  Assuming I can't use the voicemail command, I need to offer users a way to record, playback, erase, rerecord, etc.
>
> I can probably do it through dialplan but it feels like I'm reinventing the wheel.

Ya I haven't really written one generally yet, but here is something I'm
whipping together without testing :) I'll probably test it tomorrow during our
daily documentation session.

[globals]
CUSTOM_RECORDINGS=/var/lib/asterisk/sounds/en/custom


[subRecordPrompt]
exten => _[A-Za-z0-9].,1,NoOp()

; Safely handle extension name -- this will be our filename
same => n,Set(RecordedFilename=${FILTER(A-Za-z0-9,${EXTEN})})
same => n,Set(RandomNumber=${RAND()})
same => n,Answer()

; Record the prompt
same => n(record),Playback(please-enter-your&vm-message&after-the-tone)
same => n,Wait(1)
same =>
n,Record(${GLOBAL(CUSTOM_RECORDINGS)}/temporaryRecording-${RandomNumber}.wav)

; Ask how we want to handle the recording
same => n(handle_recording),Read(ActionItem,vm-review,1)

; Verify we got values we expect
same => n,GotoIf($['${ActionItem}' = '1' | '${ActionItem}' = '2' |
${ActionItem}' = 3]?valid_action)
same => n,Playback(wrong-try-again-smarty)
same => n,Goto(handle_recording)
same => n(valid_action),NoOp()

; Handle the recording
; 1 accept
; 2 review
; 3 re-record
same => n,GotoIf($['${ActionItem}' = '1']?accept,1) ; keep this recording
same => n,GotoIf($['${ActionItem}' = '3']?record)   ; re-record it

; If we get here they pressed 2
same => n,Playback(${GLOBAL(CUSTOM_RECORDINGS)}/temporaryRecording-${RandomNumber})
same => n,Goto(handle_recording)

exten => accept,1,Verbose(2,Recording accepted!)
same => n,System(mv
${GLOBAL(CUSTOM_RECORDINGS)}/temporaryRecording-${RandomNumber}.wav
${GLOBAL(CUSTOM_RECORDINGS)}/${RecordedFilename}.wav)

exten => h,1,Verbose(2,Cleanup the file)
same => n,System(rm -f
${GLOBAL(CUSTOM_RECORDINGS)}/temporaryRecording-${RandomNumber}.wav)


...or something like that.

Leif Madsen.

--
_____________________________________________________________________
-- 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



More information about the asterisk-users mailing list