hi there. i'm developing a kind of collaborative phone system in which groups of users need to navigate phone menus together, and run into problems with the '#' character. here's a scenario: 1) person_a dials into my asterisk server. 2) asterisk parks the call, and initiates an outgoing call to person_b 3) after verifying person_b (by requiring a keypress), asterisk bridges persons_a&b. 4) person_b initiates a 3-way call to some_phone, which is an automated menu-driven service developed by someone other than me. currently, i have all this working. however, i encounter difficulty if some_phone asks the users to enter '#' - asterisk interprets this as 'transfer', and things go horribly wrong. i know that the 'Dial' application allows me to disable the transfer function, in which case asterisk ignores '#' (i've tested steps 1,2&4 of the above scenario using 'Dial', and confirmed that it works). however, i can't seem to figure out how to disable transfer for outgoing calls that are initiated through the Manager interface (or through .call files, for that matter). i've checked the manual, wiki, and google, and so far have come up empty. i have also looked at several source files, but am - frankly - a bit overwhelmed by them ;) does anyone know of any easy way to do this, or have a pointer to more detailed documentation of how outgoing calls work than i've been able to find at the above references? also, in case you're wondering, i can't simply use the 'Dial' application because i need to verify callers (step 3 in the scenario)... at least, i don't think this is possible with 'Dial'. thanks much, tad
Philipp von Klitzing
2004-Jan-22 17:03 UTC
[Asterisk-Users] disable transfer on outgoing calls?
Hi!> of the above scenario using 'Dial', and confirmed that it works). however, > i can't seem to figure out how to disable transfer for outgoing calls that > are initiated through the Manager interface (or through .call files, for that matter).Interesting problem. Try to use a "Local" channel and an extension in your call file. That way you can trigger a Dial() statement from your dialplan for both legs, and there you should have full control over transfer rights... check the wiki for local channels (and pay attention to the /n option). Cheers, Philipp
hi philipp (et al). thanks for the suggestion - but i
can't seem to get it to work.
i am able to use a local channel to pass arguments to a dial application.
for example, this successfully enables transfer on one leg of the call:
[incoming]
exten => s,1, Answer
exten => s,2, Dial(Local/s@outgoing/n|15|t)
[outgoing]
exten => s,1, Dial(Zap/2/95555555|15|r)
however, if i create the Local channel from either the manager interface
or a .call file, a subsequent Dial() call has transfer enabled on both legs,
regardless of what
arguments i pass.
for example, this successfully parks a call, initializes an outbound
call, and bridges the two - but transfer (and ringthrough) is always
enabled on both legs:
[incoming]
exten => s,1, Answer
exten => s,2, agi,InitCall.agi ;script creates .call file to
Local/s@outboundleg/n and return context localleg,s,1
exten => s,3, ParkAndAnnounce(PARKED|60|Console|incoming,i,1)
[outboundleg]
exten => s,1, Dial(Zap/2/95555555|15|r)
[localleg]
exten => s,1, Wait(2)
exten => s,2, ParkedCall(701)
in the Console, i see:
Executing
Dial("Local/s@outboundleg-efeb,2","Zap/2/95555555|15|r") in
new
stack
so, either i'm doing something wrong (quite possible) or it looks like
there are default permissions that are granted to calls that originate in .call
files that
cannot be disabled by Dial? does anyone out there know anything about
this - either where it might be documented, or which are the relevant
source files?
btw, i have tried this without '/n' on the local channel, and with
transfer=no in my zapata.conf file. neither seemd to have any effect.
thanks again for your time,
tad
> Subject: Re: [Asterisk-Users] disable transfer on outgoing calls?
> To: asterisk-users@lists.digium.com
> Organization: AEGEE
> Reply-To: asterisk-users@lists.digium.com
>
> Hi!
>
> > of the above scenario using 'Dial', and confirmed that it
works). however,
> > i can't seem to figure out how to disable transfer for outgoing
calls that
> > are initiated through the Manager interface (or through .call files,
for that matter).
>
> Interesting problem.
>
> Try to use a "Local" channel and an extension in your call file.
That way
> you can trigger a Dial() statement from your dialplan for both legs, and
> there you should have full control over transfer rights... check the wiki
> for local channels (and pay attention to the /n option).
>
> Cheers, Philipp
>
>
>