John A. Sullivan III
2009-Jul-01 06:17 UTC
[asterisk-users] Multi-tenant parking broken in 1.6.1.1?
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 -- 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
John A. Sullivan III
2009-Jul-01 06:53 UTC
[asterisk-users] Multi-tenant parking broken in 1.6.1.1?
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 - Johndialplan 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
John A. Sullivan III
2009-Jul-17 17:29 UTC
[asterisk-users] Multi-tenant parking broken in 1.6.1.1?
Hello, all. My apologies for troubling the developer list as an end user but we were not able to resolve this issue on the user list and it is smelling like a possible bug when using multi-tenant call parking. 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. The second was fixed by backporting a patch from SVN but we still have the first problem. 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' What's going on and how do I fix it? Thanks - 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