|
|
|
|
@ -320,7 +320,7 @@ This following dialplan will not perform as expected.
|
|
|
|
|
exten => 2,1,Dial(SIP/PHONE_B,,L(60000:45000:15000))
|
|
|
|
|
|
|
|
|
|
[internal]
|
|
|
|
|
exten => 4,1,Dial(Local/2@services);
|
|
|
|
|
exten => 4,1,Dial(Local/2@services)
|
|
|
|
|
|
|
|
|
|
By default, the Local channel will try to optimize itself out of the call path.
|
|
|
|
|
This means that once the Local channel has established the call between the
|
|
|
|
|
@ -342,12 +342,12 @@ channel specific information.
|
|
|
|
|
In order to make this behave as we expect (limiting the call), we would change:
|
|
|
|
|
|
|
|
|
|
[internal]
|
|
|
|
|
exten => 4,1,Dial(Local/2@services);
|
|
|
|
|
exten => 4,1,Dial(Local/2@services)
|
|
|
|
|
|
|
|
|
|
...into the following:
|
|
|
|
|
|
|
|
|
|
[internal]
|
|
|
|
|
exten => 4,1,Dial(Local/2@services/n);
|
|
|
|
|
exten => 4,1,Dial(Local/2@services/n)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
By adding /n to the end, our Local channel will now stay in the call path and
|
|
|
|
|
@ -362,7 +362,7 @@ discuss the information associated with the channels:
|
|
|
|
|
2) Asterisk accepts the INVITE and then starts processing dialplan logic in
|
|
|
|
|
the [internal] context.
|
|
|
|
|
|
|
|
|
|
3) Our dialplan calls Dial(Local/2@services); <-- notice no /n
|
|
|
|
|
3) Our dialplan calls Dial(Local/2@services) <-- notice no /n
|
|
|
|
|
|
|
|
|
|
4) The Local channel then executes dialplan at extension 2 within the [services]
|
|
|
|
|
context.
|
|
|
|
|
@ -373,11 +373,11 @@ discuss the information associated with the channels:
|
|
|
|
|
6) SIP/PHONE_B then answers the call.
|
|
|
|
|
|
|
|
|
|
7) Even though the L option was given when dialing the SIP device, the L
|
|
|
|
|
information is stored in channel that is doing the dial... which is the local
|
|
|
|
|
information is stored in the channel that is doing the Dial() which is the Local
|
|
|
|
|
channel, and not the endpoint SIP channel.
|
|
|
|
|
|
|
|
|
|
8) The Local channel in the middle, containing the information for tracking the
|
|
|
|
|
time allowance of the call is then optimized out of the call path, losing all
|
|
|
|
|
time allowance of the call, is then optimized out of the call path, losing all
|
|
|
|
|
information about when to terminate the call.
|
|
|
|
|
|
|
|
|
|
9) SIP/PHONE_A and SIP/PHONE_B then continue talking indefinitely.
|
|
|
|
|
@ -402,7 +402,7 @@ There are two workarounds for the above described scenario:
|
|
|
|
|
exten => 2,1,Dial(SIP/PHONE_B)
|
|
|
|
|
|
|
|
|
|
[internal]
|
|
|
|
|
exten => 4,1,Dial(Local/2@services,,L(60000:45000:15000));
|
|
|
|
|
exten => 4,1,Dial(Local/2@services,,L(60000:45000:15000))
|
|
|
|
|
|
|
|
|
|
Local channel modifiers
|
|
|
|
|
=======================
|
|
|
|
|
|