Re: Custom Application recording problem
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
- Subject: Re: Custom Application recording problem
- From: Billy Kaye <billy.kaye@xxxxxxxxxxxxxxx>
- Date: Tue, 17 Apr 2012 16:03:19 +0300
- In-reply-to: <4F8D4C4B.2000300@wi.rr.com>
- Thread-index: Ac0cmnXFsAXoXBmrt0Odgblx6yXX5Q==
- Thread-topic: Custom Application recording problem
- User-agent: Microsoft-Entourage/12.0.0.071130
Title: Re: Custom Application recording problem
Greetings Dale,
Thanks for the help I have updated my file to include the macro sample you gave me.
The system can make the recordings once I daily the required extension in this case 3552
--- config section for 3552 -----
exten => 3552,1,Macro(timo,contentdb)
exten => 3552,n,Hangup()
---Below is the macro section ------
[macro-timo]
exten => s,1,Set(RecordingType=${ARG1})
exten => s,n,Set(TIMEOUT(digit)=2) ; Set Digit Timeout to 5 seconds
exten => s,n,Set(TIMEOUT(response)=2) ; Set Response Timeout to 10 seconds
exten => s,n,Answer
exten => s,n,NoOp(${CALLERID(num)})
exten => s,n,Set(number=${CALLERID(num)})
exten => s,n,NoOp(${number})
exten => s,n(recordmsg),Background(recmsg1) ;"Please say yo message after the beep and end with a hash"
exten => s,n,Record(/var/www/html/timo/crystalrecords/${RecordingType}/${number}.gsm)
exten => s,n(playmsg),Playback(/var/www/html/timo/crystalrecords/${RecordingType}/${number})
exten => s,n(askuser),Background(ackrec) ;"Press 1 to replay or 2 to re-record, 3 to save "
exten => s,11,WaitExten(5)
exten => 1,1,Goto(s,playmsg)
exten => 2,1,Goto(s,recordmsg) ; re-record message
exten => 3,1,Goto(4,1)
exten => 4,AGI($RecordingType}.php)
exten => i,1,Background(invalidentry)
exten => i,n,Goto(s,askuser)
exten => t,1,Playback(thankyoubye)
exten => t,n,Return
--------
The system does not seem to recognize the buttons that I press e.g. when I presssed 1 it gave this error
-- Invalid extension '1' in context 'from-internal' on SIP/261-0000005c
== CDR updated on SIP/261-0000005c
-- Executing [i@from-internal:1] BackGround("SIP/261-0000005c", "invalidentry") in new stack
-- <SIP/261-0000005c> Playing 'invalidentry.slin' (language 'en')
The detailed error log is further below
--------
Also one thing I have seen from the logs after giving the invalidentry error it moves to another section in my
extensions_custom.conf called rsvp.
--------
-------------Below is the full extensions_custom.conf file ---------------
[from-internal-custom]
exten => 1234,1,Playback(demo-congrats) ; extensions can dial 1234
exten => 1234,2,Hangup()
exten => h,1,Hangup()
include => agentlogin
include => conferences
include => calendar-event
include => weather-wakeup
include => timo
include => rsvp
exten => 3789,1,AGI(voicesms.php)
exten => 3552,1,Macro(timo,contentdb)
exten => 3552,n,Hangup()
[agentlogin]
exten => _*8888.,1,Set(AGENTNUMBER=${EXTEN:5})
exten => _*8888.,n,NoOp(AgentNumber is ${AGENTNUMBER})
exten => _*8888.,n,AgentLogin(${AGENTNUMBER})
exten => _*8888.,n,Hangup()
[mm-announce]
exten => 9999,1,Set(CALLERID(name)="MMGETOUT")
exten => 9999,n,Answer
exten => 9999,n,Playback(conf-will-end-in)
exten => 9999,n,Playback(digits/5)
exten => 9999,n,Playback(minutes)
exten => 9999,n,Hangup
[conferences]
;Used by cbEnd script to play end of conference warning
exten => 5555,1,Answer
exten => 5555,n,Wait(3)
exten => 5555,n,CBMysql()
exten => 5555,n,Hangup
[calendar-event]
exten => _*7899,1,Answer
exten => _*7899,2,Playback(${FILE_CALL})
exten => _*7899,3,Wait(2)
exten => _*7899,4,Hangup()
[weather-wakeup]
exten => *61,1,Answer
exten => *61,2,AGI(nv-weather.php)
exten => *61,3,Hangup
[rsvp]
exten=> 3589,1,Background(thanks)
exten=> 3589,2,Read(choice,,1)
exten => 3589,3,AGI(rsvp.php|${choice})
exten => i,1,Background(invalidentry)
exten => i,n,Goto(3589,2)
exten => t,1,Playback(thankyoubye)
exten => t,n,Hangup
exten => *62,1,Answer
exten => *62,2,AGI(wakeup.php)
exten => *62,3,Hangup
[macro-timo]
exten => s,1,Set(RecordingType=${ARG1})
exten => s,n,Set(TIMEOUT(digit)=2) ; Set Digit Timeout to 5 seconds
exten => s,n,Set(TIMEOUT(response)=2) ; Set Response Timeout to 10 seconds
exten => s,n,Answer
exten => s,n,NoOp(${CALLERID(num)})
exten => s,n,Set(number=${CALLERID(num)})
exten => s,n,NoOp(${number})
exten => s,n(recordmsg),Background(recmsg1) ;"Please say yo message after the beep and end with a hash"
exten => s,n,Record(/var/www/html/timo/crystalrecords/${RecordingType}/${number}.gsm)
exten => s,n(playmsg),Playback(/var/www/html/timo/crystalrecords/${RecordingType}/${number})
exten => s,n(askuser),Background(ackrec) ;"Press 1 to replay or 2 to re-record, 3 to save "
exten => s,11,WaitExten(5)
exten => 1,1,Goto(s,playmsg)
exten => 2,1,Goto(s,recordmsg) ; re-record message
exten => 3,1,Goto(4,1)
exten => 4,AGI($RecordingType}.php)
exten => i,1,Background(invalidentry)
exten => i,n,Goto(s,askuser)
exten => t,1,Playback(thankyoubye)
exten => t,n,Return
----------Below is the full output from my logs when I call 3552---------
-- Executing [3552@from-internal:1] Macro("SIP/261-0000005c", "timo,contentdb") in new stack
-- Executing [s@macro-timo:1] Set("SIP/261-0000005c", "RecordingType=contentdb") in new stack
-- Executing [s@macro-timo:2] Set("SIP/261-0000005c", "TIMEOUT(digit)=2") in new stack
-- Digit timeout set to 2.000
-- Executing [s@macro-timo:3] Set("SIP/261-0000005c", "TIMEOUT(response)=2") in new stack
-- Response timeout set to 2.000
-- Executing [s@macro-timo:4] Answer("SIP/261-0000005c", "") in new stack
-- Executing [s@macro-timo:5] NoOp("SIP/261-0000005c", "261") in new stack
-- Executing [s@macro-timo:6] Set("SIP/261-0000005c", "number=261") in new stack
-- Executing [s@macro-timo:7] NoOp("SIP/261-0000005c", "261") in new stack
-- Executing [s@macro-timo:8] BackGround("SIP/261-0000005c", "recmsg1") in new stack
-- <SIP/261-0000005c> Playing 'recmsg1.gsm' (language 'en')
-- Executing [s@macro-timo:9] Record("SIP/261-0000005c", "/var/www/html/timo/crystalrecords/contentdb/261.gsm") in new stack
-- <SIP/261-0000005c> Playing 'beep.gsm' (language 'en')
-- Executing [s@macro-timo:10] Playback("SIP/261-0000005c", "/var/www/html/timo/crystalrecords/contentdb/261") in new stack
-- <SIP/261-0000005c> Playing '/var/www/html/timo/crystalrecords/contentdb/261.gsm' (language 'en')
-- Executing [s@macro-timo:11] BackGround("SIP/261-0000005c", "ackrec") in new stack
-- <SIP/261-0000005c> Playing 'ackrec.gsm' (language 'en')
-- Invalid extension '1' in context 'from-internal' on SIP/261-0000005c
== CDR updated on SIP/261-0000005c
-- Executing [i@from-internal:1] BackGround("SIP/261-0000005c", "invalidentry") in new stack
-- <SIP/261-0000005c> Playing 'invalidentry.slin' (language 'en')
-- Executing [i@from-internal:2] Goto("SIP/261-0000005c", "3589,2") in new stack
-- Goto (from-internal,3589,2)
-- Executing [3589@from-internal:2] Read("SIP/261-0000005c", "choice,,1") in new stack
-- Accepting a maximum of 1 digits.
-- User entered nothing.
-- Executing [3589@from-internal:3] AGI("SIP/261-0000005c", "rsvp.php|") in new stack
-- Executing [3589@from-internal:4] Wait("SIP/261-0000005c", "1") in new stack
-- Executing [3589@from-internal:5] Playback("SIP/261-0000005c", "silence/1&cannot-complete-as-dialed&check-number-dial-again,noanswer") in new stack
-- <SIP/261-0000005c> Playing 'silence/1.gsm' (language 'en')
-- <SIP/261-0000005c> Playing 'cannot-complete-as-dialed.gsm' (language 'en')
-- <SIP/261-0000005c> Playing 'check-number-dial-again.gsm' (language 'en')
-- Executing [3589@from-internal:6] Wait("SIP/261-0000005c", "1") in new stack
-- Executing [3589@from-internal:7] Congestion("SIP/261-0000005c", "20") in new stack
== Spawn extension (from-internal, 3589, 7) exited non-zero on 'SIP/261-0000005c'
-- Executing [h@from-internal:1] Macro("SIP/261-0000005c", "hangupcall") in new stack
-- Executing [s@macro-hangupcall:1] GotoIf("SIP/261-0000005c", "1?noautomon") in new stack
-- Goto (macro-hangupcall,s,3)
-- Executing [s@macro-hangupcall:3] NoOp("SIP/261-0000005c", "TOUCH_MONITOR_OUTPUT=") in new stack
-- Executing [s@macro-hangupcall:4] GotoIf("SIP/261-0000005c", "1?noautomon2") in new stack
-- Goto (macro-hangupcall,s,6)
-- Executing [s@macro-hangupcall:6] NoOp("SIP/261-0000005c", "MONITOR_FILENAME=") in new stack
-- Executing [s@macro-hangupcall:7] GotoIf("SIP/261-0000005c", "1?skiprg") in new stack
-- Goto (macro-hangupcall,s,10)
-- Executing [s@macro-hangupcall:10] GotoIf("SIP/261-0000005c", "1?skipblkvm") in new stack
-- Goto (macro-hangupcall,s,13)
-- Executing [s@macro-hangupcall:13] GotoIf("SIP/261-0000005c", "1?theend") in new stack
-- Goto (macro-hangupcall,s,15)
-- Executing [s@macro-hangupcall:15] Hangup("SIP/261-0000005c", "") in new stack
== Spawn extension (macro-hangupcall, s, 15) exited non-zero on 'SIP/261-0000005c' in macro 'hangupcall'
== Spawn extension (from-internal, h, 1) exited non-zero on 'SIP/261-0000005c'
-----
Kind Regards
Billy
On 4/17/12 1:56 PM, "Dale Noll" <dnoll@xxxxxxxxx> wrote:
On 04/16/2012 04:09 PM, Billy Kaye wrote:
Re: Custom Application recording problem Thanks Dale,
Am not sure why it was working in 1.4 but for some reason it was ( Note : My Asterisk is running bundled with Elastix).
But any your suggestion worked very fine.
Glad to hear it.
Now am having one problem how can define those extensions only with in different contexts, the problem I see is since am
Building 3 recording applications only one will be able call its AGI file,
Say if someone calls custom extension 1114
They can record message
-Press 1 to Replay Press 2 to Re-record or Press 3 to Save the file
Also if someone calls custom extension 1115
-Press 1 to Replay Press 2 to Re-record or Press 3 to Save the file
Note Each save file selection calls a different AGI file
E.g
exten => 1,1,Goto,timo|3552|9
exten => 2,1,Goto(3552,7) ; re-record message
exten => 3,1,Goto(4,1)
exten => 4,AGI(timorec.php)
There a few ways to do it. Probably the easiest to maintain in the long run would be via the use of a macro.
[macro-timo]
exten => s,1,Set(RecordingType=${ARG1})
exten => s,n,Set(TIMEOUT(digit)=2) ; Set Digit Timeout to 5 seconds
exten => s,n,Set(TIMEOUT(response)=2) ; Set Response Timeout to 10 seconds
exten => s,n,Answer
exten => s,n,NoOp(${CALLERID(num)})
exten => s,n,Set(number=${CALLERID(num)})
exten => s,n,NoOp(${number})
exten => s,n(recordmsg),Background(recmsg1) ;"Please say yo message after the beep and end with a hash"
exten => s,n,Record(crystalrecords/${RecordingType}/${number}.gsm)
exten => s,n(playmsg),Playback(crystalrecords/${RecordingType}/${number})
exten => s,n(askuser),Background(ackrec) ;"Press 1 to replay or 2 to re-record, 3 to save "
exten => s,11,WaitExten(5)
exten => 1,1,Goto(s,playmsg)
exten => 2,1,Goto(s,recordmsg) ; re-record message
exten => 3,1,Goto(4,1)
exten => 4,AGI($RecordingType}.php)
exten => i,1,Background(invalidentry)
exten => i,n,Goto(s,askuser)
exten => t,1,Playback(thankyoubye)
exten => t,n,Return
Here I have taken you original dialplan and created a macro out of it. I made a few other changes such as using the 'n' priority and labels to make the macro easier to maintain later.
This macro takes an argument which would be the recording type. I do not know what the three variations you need are, but that is not really relevant. When the macro is called, it will save the argument as a variable 'RecordingType' which is used elsewhere. It saves the recording under a subdirectory of 'crystalrecords' that is the same name as the recording type. When saving the message, it also calls the AGI as RecordingType.php, so simply name the script the same as the recording type.
Then, in your dialplan you simply make calls to your macro with the correct argument.
[from-internal-custom]
exten => 1114,1,Macro(timo,type1)
exten => 1114,n,Hangup()
exten => 1115,1,Macro(timo,type2)
exten => 1115,n,Hangup()
exten => 1116,1,Macro(timo,type3)
exten => 1116,n,Hangup()
Dale
--
_____________________________________________________________________
-- 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
[Gnu Gatekeeper]
[IETF Sipping]
[Info Cyrus]
[ALSA User]
[Fedora Linux Users]
[DCCP]
[Gimp]
[100% Free Online Dating]
[Yosemite News]
[Arts & Crafts]
[Yosemite Photos]
[Deep Creek Hot Springs]
[Yosemite Campsites]
[ISDN Cause Codes]