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