[asterisk-users] Multi-tenant parking broken in 1.6.1.1?

John A. Sullivan III jsullivan at opensourcedevel.com
Wed Jul 1 01:53:43 CDT 2009


On Wed, 2009-07-01 at 02:17 -0400, John A. Sullivan III wrote:
> Hello, all.  With the assistance of very helpful folks, our brand new
> multi-tenant setup seems to be working smoothly from start to finish
> with just a bump or two.  The biggest is parking.  Now that we got most
> kinks worked out, I'm a little more comfortable in trying to resolve
> this.
> 
> There seem to be two problems:
>      1. Parking assigns parking spaces from the default group no matter
>         what we do.
>      2. When the parked call timer expires, the callback to the original
>         callee fails because a | delimiter is used in the Dial()
>         function.
> 
> Perhaps we have configured it incorrectly.  Here is the pertinent
> section from features.conf:
> 
> [parkinglot_a10] ; EBC
> context => a10parking
> parkpos => 101-110
> ;parkext => 100
> findslot => next
> 
> [parkinglot_a100] ; SSI
> context => a100parking
> ;parkext => 1000
> parkpos => 1001-1020
> findslot => next
> 
> If I understand this correctly, the parkinglog_a100 would be the channel
> variable and a100parking the context into which parking extensions are
> placed.
> 
> We set the channel parameter in sip.conf:
> 
> [a100](!,common)
> context=a100
> vmext=999
> parkinglot=parkinglot_a100
> subscribecontext=a100
> accountcode=a0000-0100
> fromdomain=ssiservices.biz
> 
> [userx](a100)
> mailbox=yyy at a100,xxx at a100
> secret=something
> callerid=John A. Sullivan III <xxx>
> fromuser=userid
> 
> and we included the context in extensions.conf:
> 
> [a100] ; SSI
> exten => 911,1,Macro(emergency-US,xxxxxxxxxx)
> exten => 9911,1,Macro(emergency-US,xxxxxxxxxx)
> 
> exten => 9999,1,VoiceMailMain(${CALLERID(num)}@a100) ; Direct mail
> retrieval
> include => a100pub
> include => a100conf
> include => a100parking
> include => US-international
> include => dial-uri
> 
> We also tried Set(CHANNEL(parkinglot)=parkinglot_a100).  We also tried
> creating our own parking which yielded interesting data but not
> solution.
> 
> Here is the console output using the regular setup described:
> 
> Call comes in and is answered:
> 
>    -- SIP/gss-cc01c918 answered SIP/localhost-cc002cf8
>     -- Native bridging SIP/localhost-cc002cf8 and SIP/gss-cc01c918
>     -- Started music on hold, class 'default', on SIP/localhost-cc002cf8
>   == Using SIP RTP TOS bits 176
>   == Using SIP RTP CoS mark 5
> 
> Call is parked:
> 
>     -- Executing [700 at a100:1] Park("SIP/gss-cc05ceb8", "") in new stack
>   == Parked SIP/gss-cc05ceb8 on 701 (lot default). Will timeout back to extension [a100] s, 1 in 60 seconds
>     -- Added extension '701' priority 1 to parkedcalls (0x2aaaacca3f70)
>     -- <SIP/gss-cc05ceb8> Playing 'digits/7.ulaw' (language 'en')
>     -- <SIP/gss-cc05ceb8> Playing 'digits/0.ulaw' (language 'en')
>     -- <SIP/gss-cc05ceb8> Playing 'digits/1.ulaw' (language 'en')
>     -- Started music on hold, class 'default', on SIP/gss-cc05ceb8                                                                                         
> 
> I'm not sure what is happening here but I think this is the original
> callee releasing the call.  I don't know what the ZOMBIE extension is
> about:
> 
>   == Spawn extension (a100, s, 1) exited non-zero on 'Parked/SIP/gss-cc05ceb8<ZOMBIE>'
>     -- Auto fallthrough, channel 'Parked/SIP/gss-cc05ceb8<ZOMBIE>' status is 'UNKNOWN'
>     -- Executing [h at a100:1] Answer("Parked/SIP/gss-cc05ceb8<ZOMBIE>", "0.5") in new stack
>   == Spawn extension (a100, h, 1) exited non-zero on 'Parked/SIP/gss-cc05ceb8<ZOMBIE>'
>     -- Stopped music on hold on SIP/gss-cc05ceb8
>     -- Stopped music on hold on SIP/localhost-cc002cf8
>     -- Started music on hold, class 'default', on SIP/localhost-cc002cf8
>   == Spawn extension (macro-common, s, 1) exited non-zero on 'SIP/gss-cc05ceb8<ZOMBIE>' in macro 'common'
>   == Spawn extension (a100pub, 314, 2) exited non-zero on 'SIP/gss-cc05ceb8<ZOMBIE>'
>   == Using SIP RTP TOS bits 176
>   == Using SIP RTP CoS mark 5
> 
> Then we see the destination callee attempting to pick up the call and is
> the output of our routine to catch misdialed/unknown extensions:
> 
>     -- Executing [701 at a100:1] GotoIf("SIP/jasiii-cc05ceb8", "0?:_.,1") in new stack
>     -- Goto (a100,_.,1)
>     -- Executing [_. at a100:1] Answer("SIP/jasiii-cc05ceb8", "0.5") in new stack
>     -- Executing [_. at a100:2] Playback("SIP/jasiii-cc05ceb8", "im-sorry") in new stack
>     -- <SIP/jasiii-cc05ceb8> Playing 'im-sorry.ulaw' (language 'en')
>     -- Executing [_. at a100:3] Wait("SIP/jasiii-cc05ceb8", "0.0.5") in new stack
>     -- Executing [_. at a100:4] Playback("SIP/jasiii-cc05ceb8", "you-dialed-wrong-number") in new stack
>     -- <SIP/jasiii-cc05ceb8> Playing 'you-dialed-wrong-number.ulaw' (language 'en')
>     -- Executing [_. at a100:5] Wait("SIP/jasiii-cc05ceb8", "0.4") in new stack
>     -- Executing [_. at a100:6] Playback("SIP/jasiii-cc05ceb8", "vm-goodbye") in new stack
>     -- <SIP/jasiii-cc05ceb8> Playing 'vm-goodbye.ulaw' (language 'en')
>     -- Executing [_. at a100:7] Hangup("SIP/jasiii-cc05ceb8", "") in new stack
>   == Spawn extension (a100, _., 7) exited non-zero on 'SIP/jasiii-cc05ceb8'
>     -- Executing [h at a100:1] Answer("SIP/jasiii-cc05ceb8", "0.5") in new stack
>   == Spawn extension (a100, h, 1) exited non-zero on 'SIP/jasiii-cc05ceb8'
> 
> We then see the park timeout and fail to return to the original callee:
> 
>     -- Stopped music on hold on SIP/localhost-cc002cf8
>     -- Added extension 'SIP0gss' priority 1 to park-dial (0x2aaaacca2050)
>   == Timeout for SIP/localhost-cc002cf8 parked on 701 (default). Returning to park-dial,SIP0gss,1
>     -- Executing [SIP0gss at park-dial:1] Dial("SIP/localhost-cc002cf8", "SIP/gss|30|") in new stack
> [Jul  1 01:54:56] WARNING[6401]: pbx.c:953 pbx_exec: The application delimiter is now the comma, not the pipe.  Did you forget to convert your dialplan?  (Dial(SIP/gss|30|))
>   == Using SIP RTP TOS bits 176
>   == Using SIP RTP CoS mark 5
> [Jul  1 01:54:57] WARNING[6401]: chan_sip.c:4526 create_addr: No such host: gss|30|
> [Jul  1 01:54:57] WARNING[6401]: app_dial.c:1518 dial_exec_full: Unable to create channel of type 'SIP' (cause 20 - Unknown)
>   == Everyone is busy/congested at this time (1:0/0/1)
>     -- Auto fallthrough, channel 'SIP/localhost-cc002cf8' status is 'CHANUNAVAIL'
> 
> Have I misconfigured anything or have I stumbled into a bug?
> 
> We next tried to create our own park channel.  We did this by adding the
> following to extensions.conf:
> 
> [a100parking]
> exten => 1000,1,Set(CHANNEL(parkinglot)=parkinglot_a100)
> exten => 1000,n,Park()
> 
> This gives us interestingly different results.  First we see the call
> come in:
> 
>    -- SIP/gss-1a513628 answered SIP/localhost-cc002cc8
>     -- Native bridging SIP/localhost-cc002cc8 and SIP/gss-1a513628
>     -- Started music on hold, class 'default', on SIP/localhost-cc002cc8
>   == Using SIP RTP TOS bits 176
>   == Using SIP RTP CoS mark 5
> 
> We next see the call parked but this time using extensions from the
> parkinglot_a100 parking lot:
> 
>     -- Executing [1000 at a100:1] Set("SIP/gss-1a56d498", "CHANNEL(parkinglot)=parkinglot_a100") in new stack
>     -- Executing [1000 at a100:2] Park("SIP/gss-1a56d498", "") in new stack
>   == Parked SIP/gss-1a56d498 on 1001 (lot parkinglot_a100). Will timeout back to extension [a100] s, 1 in 45 seconds
>     -- Added extension '1001' priority 1 to a100parking (0x1a512180)
>     -- <SIP/gss-1a56d498> Playing 'digits/1.ulaw' (language 'en')
>     -- <SIP/gss-1a56d498> Playing 'digits/0.ulaw' (language 'en')
>     -- <SIP/gss-1a56d498> Playing 'digits/0.ulaw' (language 'en')
>     -- <SIP/gss-1a56d498> Playing 'digits/1.ulaw' (language 'en')
>     -- Started music on hold, class 'default', on SIP/gss-1a56d498
> 
> We next see that section I don't understand with the ZOMBIE and s
> extensions:
> 
>   == Spawn extension (a100, s, 1) exited non-zero on 'Parked/SIP/gss-1a56d498<ZOMBIE>'
>     -- Auto fallthrough, channel 'Parked/SIP/gss-1a56d498<ZOMBIE>' status is 'UNKNOWN'
>     -- Executing [h at a100:1] Answer("Parked/SIP/gss-1a56d498<ZOMBIE>", "0.5") in new stack
>   == Spawn extension (a100, h, 1) exited non-zero on 'Parked/SIP/gss-1a56d498<ZOMBIE>'
>     -- Stopped music on hold on SIP/gss-1a56d498
>     -- Stopped music on hold on SIP/localhost-cc002cc8
>     -- Started music on hold, class 'default', on SIP/localhost-cc002cc8
>   == Spawn extension (macro-common, s, 1) exited non-zero on 'SIP/gss-1a56d498<ZOMBIE>' in macro 'common'
>   == Spawn extension (a100pub, 314, 2) exited non-zero on 'SIP/gss-1a56d498<ZOMBIE>'
>   == Using SIP RTP TOS bits 176
>   == Using SIP RTP CoS mark 5
> 
> Now we see the destination callee try to pickup the parked call only to
> be told there is no call parked on extension 1001:
> 
>     -- Executing [1001 at a100:1] ParkedCall("SIP/jasiii-1a56d498", "1001") in new stack
>     -- <SIP/jasiii-1a56d498> Playing 'pbx-invalidpark.ulaw' (language 'en')
>     -- Channel SIP/jasiii-1a56d498 tried to talk to nonexistent parked call 1001
>   == Spawn extension (a100, 1001, 1) exited non-zero on 'SIP/jasiii-1a56d498'
>     -- Executing [h at a100:1] Answer("SIP/jasiii-1a56d498", "0.5") in new stack
>   == Spawn extension (a100, h, 1) exited non-zero on 'SIP/jasiii-1a56d498'
> 
> Finally, we see the same failure to return after the timeout:
> 
>     -- Stopped music on hold on SIP/localhost-cc002cc8
>     -- Added extension 'SIP0gss' priority 1 to  (0x1a50e110)
>   == Timeout for SIP/localhost-cc002cc8 parked on 1001 (parkinglot_a100). Returning to ,SIP0gss,1
>     -- Executing [SIP0gss@:1] Dial("SIP/localhost-cc002cc8", "SIP/gss|30|") in new stack
> [Jul  1 02:06:42] WARNING[6432]: pbx.c:953 pbx_exec: The application delimiter is now the comma, not the pipe.  Did you forget to convert your dialplan?  (Dial(SIP/gss|30|))
>   == Using SIP RTP TOS bits 176
>   == Using SIP RTP CoS mark 5
> [Jul  1 02:06:42] WARNING[6432]: chan_sip.c:4526 create_addr: No such host: gss|30|
> [Jul  1 02:06:42] WARNING[6432]: app_dial.c:1518 dial_exec_full: Unable to create channel of type 'SIP' (cause 20 - Unknown)
>   == Everyone is busy/congested at this time (1:0/0/1)
>     -- Auto fallthrough, channel 'SIP/localhost-cc002cc8' status is 'CHANUNAVAIL'
> 
> What's going on and how do I fix it? This is our last major hurdle.  The
> other is segfaulting when we use IMAP storage in Zimbra but that's an
> option rather than a requirement.  Thanks - John

dialplan show is interesting:

pbx01*CLI> dialplan show
[ Context '' created by 'features' ]
  'SIP0gss' =>      1. Dial(SIP/gss|30|)
[features]
  'SIP0jasiii' =>   1. Dial(SIP/jasiii|30|)
[features]
pbx01*CLI>
[ Context 'a10parking' created by 'features' ]

[ Context 'a100-parking' created by 'features' ]
  '700' =>          1. Park()
[features]

[ Context 'a10-parking' created by 'features' ]
  '700' =>          1. Park()
[features]

[ Context 'parkedcalls' created by 'features' ]
  '700' =>          1. Park()
[features]                                                                               

It shows the invalid SIP channels being created by features.  Is also
shows extension 700 in context a100-parking and a10-parking which we
deleted long ago but not present in a10parking and a100parking which
exist! - John
-- 
John A. Sullivan III
Open Source Development Corporation
+1 207-985-7880
jsullivan at opensourcedevel.com

http://www.spiritualoutreach.com
Making Christianity intelligible to secular society




More information about the asterisk-users mailing list