Re: [Asterisk-java-users] RES: RES: cdr events on live api
Brought to you by:
srt
From: Gaëtan M. <gm...@ea...> - 2008-05-21 19:19:03
|
Hi, As far as I know, Asterisk doesn't allow one to park a call through ami or agi. Or at least I never found any "documented" way of doing this. However here is a simple workaround we use in our applications: we redirect the caller's leg (see ChannelImpl.redirect() in live api) to the park extension (see in features.conf), or any dialplan extension that calls the Park() application in fact. You will then receive a manager event telling at which parking position the caller can be retrieved (so later you just need to originate from the operator to that parking extension). Just match the channel name in your code. If you use the live api, you will receive a PCE on the PARKED_AT property of the parked channel iirc. NB: - The problem however is that the caller will hear the parking position (because the "function" in res_features.so is really written for internal use using inband feature codes, and as such expects a bridged channel). I think you could work around this if you set the channel's language variable to some unknown language (or an exiting language whose sound files are empty...). On my side I created a simple and trivial ParkSilent() asterisk application that I use instead of Park(), it's eventually easier. - This will probably completely screw your cdr records, as any transfer in asterisk :( Kind regards Geatan On 21/05/2008, at 20:38, Leonardo Lira wrote: > Hi Martin, > > Let me try to explain to you what i am expecting from the hold command > Suppose the next scenary: > - A is a call center employer > - B is a customer receiving an incoming call from A > - During the call, A decides to check some information about B and > he tells > B to wait for a while > - In fact, what A does is to put the call in hold while he realize > some > action and B listens to some configured music > - After that A retrieve the call and start talking to B again > > Put a call in a queue or in a park will turn off the A channel, what > means > that when A desires to retrieve the call his phone will ring again. > > Therefore, what i want to know is if there is some way to hold a > call just > like the soft-phones do (X-lite for example), like: > putChannelOnHold(channel), retrieveChannel(channel) > > I search the entire Java-asterisk API and found nothing similar to > that. > > Below is my extensions.conf > > Best regards > > ---------------------------------------------------------------------------- > ------------------------------- > ;! > ;! Automatically generated configuration file > ;! Filename: extensions.conf (/etc/asterisk/extensions.conf) > ;! Generator: Manager > ;! Creation Date: Fri May 16 03:51:37 2008 > ;! > [general] > static = yes > writeprotect = no > autofallthrough = yes > clearglobalvars = no > priorityjumping = no > > [globals] > trunk_1 = SIP/trunk_1 > trunk_2 = SIP/trunk_2 > trunk_2_cid = unknown > trunk_1_cid = 090909 > > [dundi-e164-canonical] > > [dundi-e164-customers] > > [dundi-e164-via-pstn] > > [dundi-e164-local] > include => dundi-e164-canonical > include => dundi-e164-customers > include => dundi-e164-via-pstn > > [dundi-e164-switch] > switch => DUNDi/e164 > > [dundi-e164-lookup] > include => dundi-e164-local > include => dundi-e164-switch > > [macro-dundi-e164] > exten => s,1,Goto(${ARG1},1) > include => dundi-e164-lookup > > [iaxtel700] > exten => _91700XXXXXXX,1,Dial(IAX2/${IAXINFO}@iaxtel.com/${EXTEN: > 1}@iaxtel) > > [iaxprovider] > > [trunkint] > exten => _9011.,1,Macro(dundi-e164,${EXTEN:4}) > exten => _9011.,n,Dial(${TRUNK}/${EXTEN:${TRUNKMSD}}) > > [trunkld] > exten => _91NXXNXXXXXX,1,Macro(dundi-e164,${EXTEN:1}) > exten => _91NXXNXXXXXX,n,Dial(${TRUNK}/${EXTEN:${TRUNKMSD}}) > > [trunklocal] > exten => _9NXXXXXX,1,Dial(${TRUNK}/${EXTEN:${TRUNKMSD}}) > > [trunktollfree] > exten => _91800NXXXXXX,1,Dial(${TRUNK}/${EXTEN:${TRUNKMSD}}) > exten => _91888NXXXXXX,1,Dial(${TRUNK}/${EXTEN:${TRUNKMSD}}) > exten => _91877NXXXXXX,1,Dial(${TRUNK}/${EXTEN:${TRUNKMSD}}) > exten => _91866NXXXXXX,1,Dial(${TRUNK}/${EXTEN:${TRUNKMSD}}) > > [international] > ignorepat => 9 > include => longdistance > include => trunkint > > [longdistance] > ignorepat => 9 > include => local > include => trunkld > > [local] > ignorepat => 9 > include => default > include => parkedcalls > include => trunklocal > include => iaxtel700 > include => trunktollfree > include => iaxprovider > > [macro-stdexten] > exten => s,1,Dial(${ARG2},20) > exten => s,2,Goto(s-${DIALSTATUS},1) > exten => s-NOANSWER,1,Voicemail(${ARG1},u) > exten => s-NOANSWER,2,Goto(default,s,1) > exten => s-BUSY,1,Voicemail(${ARG1},b) > exten => s-BUSY,2,Goto(default,s,1) > exten => _s-.,1,Goto(s-NOANSWER,1) > exten => a,1,VoicemailMain(${ARG1}) > > [macro-stdPrivacyexten] > exten => s,1,Dial(${ARG2},20|p) > exten => s,2,Goto(s-${DIALSTATUS},1) > exten => s-NOANSWER,1,Voicemail(u${ARG1}) > exten => s-NOANSWER,2,Goto(default,s,1) > exten => s-BUSY,1,Voicemail(b${ARG1}) > exten => s-BUSY,2,Goto(default,s,1) > exten => s-DONTCALL,1,Goto(${ARG3},s,1) > exten => s-TORTURE,1,Goto(${ARG4},s,1) > exten => _s-.,1,Goto(s-NOANSWER,1) > exten => a,1,VoicemailMain(${ARG1}) > > [macro-page] > exten => s,1,ChanIsAvail(${ARG1}|js) > exten => s,n,GoToIf([${AVAILSTATUS} = "1"]?autoanswer:fail) > exten => s,n(autoanswer),Set(_ALERT_INFO="RA") > exten => s,n,SIPAddHeader(Call-Info: Answer-After=0) > exten => s,n,NoOp() > exten => s,n,Dial(${ARG1}||) > exten => s,n(fail),Hangup > > [demo] > exten => s,1,Wait(1) > exten => s,n,Answer > exten => s,n,Set(TIMEOUT(digit)=5) > exten => s,n,Set(TIMEOUT(response)=10) > exten => s,n(restart),BackGround(demo-congrats) > exten => s,n(instruct),BackGround(demo-instruct) > exten => s,n,WaitExten > exten => 2,1,BackGround(demo-moreinfo) > exten => 2,n,Goto(s,instruct) > exten => 3,1,Set(LANGUAGE()=fr) > exten => 3,n,Goto(s,restart) > exten => 1000,1,Goto(default,s,1) > exten => 1234,1,Playback(transfer,skip) > exten => 1234,n,Macro(stdexten,1234,${CONSOLE}) > exten => 1235,1,Voicemail(u1234) > exten => 1236,1,Dial(Console/dsp) > exten => 1236,n,Voicemail(u1234) > exten => #,1,Playback(demo-thanks) > exten => #,n,Hangup > exten => t,1,Goto(#,1) > exten => i,1,Playback(invalid) > exten => 500,1,Playback(demo-abouttotry) > exten => 500,n,Dial(IAX2/gu...@mi.../s@default) > exten => 500,n,Playback(demo-nogo) > exten => 500,n,Goto(s,6) > exten => 600,1,Playback(demo-echotest) > exten => 600,n,Echo > exten => 600,n,Playback(demo-echodone) > exten => 600,n,Goto(s,6) > exten => 76245,1,Macro(page,SIP/Grandstream1) > exten => _7XXX,1,Macro(page,SIP/${EXTEN}) > exten => 7999,1,Set(TIMEOUT(absolute)=60) > exten => > 7999,2,Page(Local/Grandstream1@page&Local/Xlite1@page&Local/ > 1234@page/n|d) > exten => 8500,1,VoicemailMain > exten => 8500,n,Goto(s,6) > > [page] > exten => _X.,1,Macro(page,SIP/${EXTEN}) > > [voicemenu-custom-1] > include = default > comment = Welcome > alias_exten = 7000 > exten = s,1,Answer > exten = s,2,Wait(1) > exten = s,3,Background(thank-you-for-calling) > exten = s,4,Background(if-u-know-ext-dial) > exten = s,5,Background(otherwise) > exten = s,6,Background(to-reach-operator) > exten = s,7,Background(pls-hold-while-try) > exten = s,8,WaitExten(6) > exten = 0,1,Goto(default|6010|1) > > [numberplan-custom-1] > plancomment = DialPlan1 > include = default > include = parkedcalls > exten = _9011XXXXXXX!,1,Macro(trunkdial,${}/${EXTEN:1}) > comment = _9011XXXXXXX!,1,International,standard > exten = _911!,1,Macro(trunkdial,${}/${EXTEN:0}) > comment = _911!,1,911,standard > exten = > _9256XXXXXXX!,1,Macro(trunkdial,${trunk_1}/${EXTEN:4},${trunk_1_cid}) > comment = _9256XXXXXXX!,1,Local,standard > exten = > _91XXXXXXXXXX!,1,Macro(trunkdial,${trunk_1}/${EXTEN:1},${trunk_1_cid}) > comment = _91XXXXXXXXXX!,1,Longdistance,standard > exten = > _91700XXXXXXX!,1,Macro(trunkdial,${trunk_1}/${EXTEN:1},${trunk_1_cid}) > comment = _91700XXXXXXX!,1,IAXTEL,standard > exten = _8!,1,Macro(trunkdial,${trunk_1}/${EXTEN:0},${trunk_1_cid}) > comment = _8!,1,Oi,standard > exten = _0XXXXXXX!,1,Macro(trunkdial,${trunk_1}/${EXTEN:1},$ > {trunk_1_cid}) > comment = _0XXXXXXX!,1,Local,standard > exten = > _0800XXXXXXXX!,1,Macro(trunkdial,${trunk_1}/${EXTEN:0},${trunk_1_cid}) > comment = _0800XXXXXXXX!,1,0800,standard > > [macro-trunkdial] > exten = s,1,set(CALLERID(all)=${IF($["${LEN(${CALLERID(num)})}" > > "6"]?${CALLERID(all)}:${ARG2})}) > exten = s,n,Dial(${ARG1}) > exten = s,n,Goto(s-${DIALSTATUS},1) > exten = s-NOANSWER,1,Hangup > exten = s-BUSY,1,Hangup > exten = _s-.,1,NoOp > exten = s-BUSY,1,Hangup > exten = _s-.,1,NoOp > > [asterisk_guitools] > exten = executecommand,1,System(${command}) > exten = executecommand,n,Hangup() > exten = record_vmenu,1,Answer > exten = record_vmenu,n,Playback(vm-intro) > exten = record_vmenu,n,Record(${var1}) > exten = record_vmenu,n,Playback(vm-saved) > exten = record_vmenu,n,Playback(vm-goodbye) > exten = record_vmenu,n,Hangup > exten = play_file,1,Answer > exten = play_file,n,Playback(${var1}) > exten = play_file,n,Hangup > > [voicemenu-custom-2] > comment = ura cobranca > alias_exten = 9000 > exten = s,1,Answer > exten = s,2,Background(you-wish-to-join) > > [default] > exten = 6050,1,VoiceMailMain > exten = 7000,1,Goto(voicemenu-custom-1|s|1) > exten = 8000,1,MeetMe(${EXTEN}|MsI) > exten = 6000,1,Queue(${EXTEN}) > exten = 9000,1,Goto(voicemenu-custom-2|s|1) > exten = 6001,1,Queue(${EXTEN}) > exten = 1300,1,Agi(agi://localhost/hello.agi) > exten = 6100,1,Goto(ringroups-custom-1|s|1) > exten = 3030,1,Answer > exten = 3030,2,Playback(vm-intro) > exten = 3030,3,Wait(3) > exten = 3030,4,Hangup > > [ringroups-custom-1] > gui_ring_groupname = discador > exten = s,1,NoOp(RINGGROUP) > exten = s,n,Dial(SIP/6012&SIP/6016&SIP/6013&SIP/6014&SIP/6015,20) > exten = s,n,Hangup > > [DID_trunk_1] > include = default > include = default > include = default > exten = _X.,1,Goto(default|6010|1) > exten = s,1,ExecIf($[ "$ > {CALLERID(num)}"="" ],SetCallerPres,unavailable) > exten = s,2,ExecIf($[ "$ > {CALLERID(num)}"="" ],Set,CALLERID(all)=unknown > <0000000>) > exten = s,3,Goto(default|6010|1) > > [DID_trunk_1] > > [DID_trunk_1] > > [DID_trunk_2] > include = default > ---------------------------------------------------------------------------- > ------------------------------- > > > ------------------------------------------------------------------------- > This SF.net email is sponsored by: Microsoft > Defy all challenges. Microsoft(R) Visual Studio 2008. > http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ > _______________________________________________ > Asterisk-java-users mailing list > Ast...@li... > https://lists.sourceforge.net/lists/listinfo/asterisk-java-users |