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

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


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




More information about the asterisk-users mailing list