Skip to main content

call park on MT 7.4.1.1

Posted by Glen.C on Tue, 10/15/2019

Anyone got any tips on getting call park working for a multi tenant setup using Thirdlane 7.4.1.1 on asterisk 1.8.32.3?

I was looking at this post https://www.thirdlane.com/forum/simplest-call-parking-option and followed this setup but it didn't work.

What happens when i try to park a call on 700 is asterisk tries to dial 700 out the trunk as and actual phone number.

In extensions.include i have
include => parkedcalls-thirdlane ;;=Asterisk-1.6 in all the relevent places (it was in there by default from the ISO install)

features.conf also has

[parkinglot_thirdlane]
context => parkedcalls-thirdlane
parkingtime => 180
parkext => 700
parkpos => 701-704
findslot => next

What am i missing here?


Submitted by volodya on Tue, 10/15/2019 Permalink

Hello!

Do you happen to have outbound route that covers ext. 700?

Please execute dialplan show parkedcalls-TENANT_NAME command in the Asterisk CLI to see if you have this context correctly generated. Please also post the call trace from Asterisk CLI after trying to dial 700. This will show exactly what is happening on your system.

Submitted by Glen.C on Tue, 10/15/2019 Permalink

Hi volodya, thanks for responding. This is probably going to sound like a stupid question but what do i need to put in the outbound route for 700?

I can add _700 as a pattern but what else do i need to do from there?

- What type do i set it to?

- and the associated script to use? At present it has "lt-dialout-1-trunk

In reply to by volodya

Submitted by volodya on Tue, 10/15/2019 Permalink

It can be as obvious as 700 or some pattern that covers 700. However call parking should have higher priority. That's why it is crucial to look at call trace. It will show exactly what is happening.

Submitted by Glen.C on Wed, 10/16/2019 Permalink

Hi volodya

700 was already covered by _X. in the outbound routes, thats how 700 gets dialled

Heres a cli dump when trying to transfer a call to call park on 700 (i've changed a few details such as tenant name and both the number used to dial in and the number dialled in on)

-- Called SIP/100-Tenant-name
-- SIP/100-Tenant-name-00001b14 is ringing
-- SIP/100-Tenant-name-00001b14 answered SIP/09660442-00001b12
-- Started music on hold, class 'default', on SIP/09660442-00001b12
== Using SIP RTP TOS bits 184
== Using SIP RTP CoS mark 5
-- Executing [700@from-inside-Tenant-name:1] Macro("SIP/100-Tenant-name-00001b15", "tl-set-variables2,from-inside-redir-Tenant-name,Tenant-name") in new stack
-- Executing [s@macro-tl-set-variables2:1] Set("SIP/100-Tenant-name-00001b15", "__tenant=Tenant-name") in new stack
-- Executing [s@macro-tl-set-variables2:2] Set("SIP/100-Tenant-name-00001b15", "DYNAMIC_FEATURES=nway-start#mix-mon") in new stack
-- Executing [s@macro-tl-set-variables2:3] GotoIf("SIP/100-Tenant-name-00001b15", "0?setorigin") in new stack
-- Executing [s@macro-tl-set-variables2:4] GotoIf("SIP/100-Tenant-name-00001b15", "0 ?havetenant") in new stack
-- Executing [s@macro-tl-set-variables2:5] Set("SIP/100-Tenant-name-00001b15", "HASH(__T)=41,1,,,default,,1,indial-number,,,,external,,1,,night,,1") in new stack
-- Executing [s@macro-tl-set-variables2:6] NoOp("SIP/100-Tenant-name-00001b15", "") in new stack
-- Executing [s@macro-tl-set-variables2:7] Set("SIP/100-Tenant-name-00001b15", "CHANNEL(parkinglot)=parkinglot_09661767") in new stack
-- Executing [s@macro-tl-set-variables2:8] Set("SIP/100-Tenant-name-00001b15", "CDR(userfield)=Tenant-name") in new stack
-- Executing [s@macro-tl-set-variables2:9] Set("SIP/100-Tenant-name-00001b15", "__FROM_INSIDE=1") in new stack
-- Executing [s@macro-tl-set-variables2:10] Set("SIP/100-Tenant-name-00001b15", "__CALL_ID=localhost-1571209700.10003") in new stack
-- Executing [s@macro-tl-set-variables2:11] GotoIf("SIP/100-Tenant-name-00001b15", "1?check_tenant_language") in new stack
-- Goto (macro-tl-set-variables2,s,13)
-- Executing [s@macro-tl-set-variables2:13] GotoIf("SIP/100-Tenant-name-00001b15", "1?cont") in new stack
-- Goto (macro-tl-set-variables2,s,15)
-- Executing [s@macro-tl-set-variables2:15] Goto("SIP/100-Tenant-name-00001b15", "from-inside-redir-Tenant-name,700,1") in new stack
-- Goto (from-inside-redir-Tenant-name,700,1)
== Channel 'SIP/100-Tenant-name-00001b15' jumping out of macro 'tl-set-variables2'
-- Executing [700@from-inside-redir-Tenant-name:1] Macro("SIP/100-Tenant-name-00001b15", "tl-dialout-1-trunk,60,SIP/Tenant-name,,,")
-- Executing [s@macro-tl-dialout-1-trunk:1] GotoIf("SIP/100-Tenant-name-00001b15", "0?dial") in new stack
-- Executing [s@macro-tl-dialout-1-trunk:2] Set("SIP/100-Tenant-name-00001b15", "__DIALED_NUMBER=700") in new stack
-- Executing [s@macro-tl-dialout-1-trunk:3] Macro("SIP/100-Tenant-name-00001b15", "tl-dialout-base,60,SIP/Tenant-name,,,") in new stack
-- Executing [s@macro-tl-dialout-base:1] GotoIf("SIP/100-Tenant-name-00001b15", "1 ?havetenant") in new stack
-- Goto (macro-tl-dialout-base,s,3)
-- Executing [s@macro-tl-dialout-base:3] GotoIf("SIP/100-Tenant-name-00001b15", "1?enabled") in new stack
-- Goto (macro-tl-dialout-base,s,6)
-- Executing [s@macro-tl-dialout-base:6] GotoIf("SIP/100-Tenant-name-00001b15", "1?allclear") in new stack
-- Goto (macro-tl-dialout-base,s,13)
-- Executing [s@macro-tl-dialout-base:13] Set("SIP/100-Tenant-name-00001b15", "i=2") in new stack
-- Executing [s@macro-tl-dialout-base:14] Macro("SIP/100-Tenant-name-00001b15", "tl-set-myvariables") in new stack
-- Executing [s@macro-tl-set-myvariables:1] Set("SIP/100-Tenant-name-00001b15", "MY_CHAN=100-Tenant-name-00001b15") in new stack
-- Executing [s@macro-tl-set-myvariables:2] NoOp("SIP/100-Tenant-name-00001b15", "THECHANNEL=SIP/100-Tenant-name-00001b15") in new stack
-- Executing [s@macro-tl-set-myvariables:3] Set("SIP/100-Tenant-name-00001b15", "dahdi=0") in new stack
-- Executing [s@macro-tl-set-myvariables:4] GotoIf("SIP/100-Tenant-name-00001b15", "1?usechannel") in new stack
-- Goto (macro-tl-set-myvariables,s,10)
-- Executing [s@macro-tl-set-myvariables:10] Set("SIP/100-Tenant-name-00001b15", "local=0") in new stack
-- Executing [s@macro-tl-set-myvariables:11] GotoIf("SIP/100-Tenant-name-00001b15", "0?local") in new stack
-- Executing [s@macro-tl-set-myvariables:12] Set("SIP/100-Tenant-name-00001b15", "__MYEXTENSION=100") in new stack
-- Executing [s@macro-tl-set-myvariables:13] Set("SIP/100-Tenant-name-00001b15", "__MYID=Tenant-name-100") in new stack
-- Executing [s@macro-tl-set-myvariables:14] Set("SIP/100-Tenant-name-00001b15", "__CALL_ID=localhost-1571209700.10003") in new stack
-- Executing [s@macro-tl-set-myvariables:15] MacroExit("SIP/100-Tenant-name-00001b15", "") in new stack
-- Executing [s@macro-tl-dialout-base:15] GotoIf("SIP/100-Tenant-name-00001b15", "1?afterperm") in new stack
-- Goto (macro-tl-dialout-base,s,17)
-- Executing [s@macro-tl-dialout-base:17] NoOp("SIP/100-Tenant-name-00001b15", "after tl-dialing-permissions") in new stack
-- Executing [s@macro-tl-dialout-base:18] SetAMAFlags("SIP/100-Tenant-name-00001b15", "billing") in new stack
-- Executing [s@macro-tl-dialout-base:19] GotoIf("SIP/100-Tenant-name-00001b15", "1?use_myid_from_channel") in new stack
-- Goto (macro-tl-dialout-base,s,22)
-- Executing [s@macro-tl-dialout-base:22] Set("SIP/100-Tenant-name-00001b15", "HASH(CALLER)=268,268,0,,0466302815,0,,,1,99,0,,99,0,99,99,0,0,0,0,0,0,0,0,0,1,1,1,1,1,,0,,0,0,0,,0,,2016-04-18 09:04:39,2019-07-15 13:58:51,root,Tenant-name-100,indial-number,indial-number,,,") in new stack
-- Executing [s@macro-tl-dialout-base:23] Gosub("SIP/100-Tenant-name-00001b15", "tl-recording-helper,s,1") in new stack
-- Executing [s@tl-recording-helper:1] GotoIf("SIP/100-Tenant-name-00001b15", "1?newschema") in new stack
-- Goto (tl-recording-helper,s,31)
-- Executing [s@tl-recording-helper:31] NoOp("SIP/100-Tenant-name-00001b15", "New recording schema will be used") in new stack
-- Executing [s@tl-recording-helper:32] GotoIf("SIP/100-Tenant-name-00001b15", "0?record_new") in new stack
-- Executing [s@tl-recording-helper:33] Set("SIP/100-Tenant-name-00001b15", "CALLEE_NUMBER=700") in new stack
-- Executing [s@tl-recording-helper:34] Set("SIP/100-Tenant-name-00001b15", "CALLER_NUMBER=100") in new stack
-- Executing [s@tl-recording-helper:35] Set("SIP/100-Tenant-name-00001b15", "RECORD_CALLEE_ALL=") in new stack
-- Executing [s@tl-recording-helper:36] ExecIf("SIP/100-Tenant-name-00001b15", "0?Set(RECORD_CALLEE=1):Set(RECORD_CALLEE=0)") in new stack
-- Executing [s@tl-recording-helper:37] Set("SIP/100-Tenant-name-00001b15", "RECORD_CALLER_ALL=1") in new stack
-- Executing [s@tl-recording-helper:38] ExecIf("SIP/100-Tenant-name-00001b15", "1?Set(RECORD_CALLER=1):Set(RECORD_CALLER=0)") in new stack
-- Executing [s@tl-recording-helper:39] ExecIf("SIP/100-Tenant-name-00001b15", "1?Set(RECORDING_FORMAT=wav)") in new stack
-- Executing [s@tl-recording-helper:40] GotoIf("SIP/100-Tenant-name-00001b15", "0?external-incoming") in new stack
-- Executing [s@tl-recording-helper:41] GotoIf("SIP/100-Tenant-name-00001b15", "1?external-outgoing") in new stack
-- Goto (tl-recording-helper,s,52)
-- Executing [s@tl-recording-helper:52] NoOp("SIP/100-Tenant-name-00001b15", "External Outgoing Call") in new stack
-- Executing [s@tl-recording-helper:53] Set("SIP/100-Tenant-name-00001b15", "RECORD_CALLER_EXT_OUT=1") in new stack
-- Executing [s@tl-recording-helper:54] ExecIf("SIP/100-Tenant-name-00001b15", "1?Set(RECORD_CALLER=1") in new stack
-- Executing [s@tl-recording-helper:55] GotoIf("SIP/100-Tenant-name-00001b15", "0?done:record_new") in new stack
-- Goto (tl-recording-helper,s,56)
-- Executing [s@tl-recording-helper:56] Set("SIP/100-Tenant-name-00001b15", "NOW=1571209700") in new stack
-- Executing [s@tl-recording-helper:57] Set("SIP/100-Tenant-name-00001b15", "DAY=16") in new stack
-- Executing [s@tl-recording-helper:58] Set("SIP/100-Tenant-name-00001b15", "MONTH=10") in new stack
-- Executing [s@tl-recording-helper:59] Set("SIP/100-Tenant-name-00001b15", "YEAR=2019") in new stack
-- Executing [s@tl-recording-helper:60] Set("SIP/100-Tenant-name-00001b15", "FULL_FNAME=extensions/2019/10/16/700-0-2019-10-16-17-08-20-100-1-Tenant-name-localhost-1571209700.10003.wav") in new stack
-- Executing [s@tl-recording-helper:61] Set("SIP/100-Tenant-name-00001b15", "result=0") in new stack
-- Executing [s@tl-recording-helper:62] Set("SIP/100-Tenant-name-00001b15", "CDR(recording)=extensions/2019/10/16/700-0-2019-10-16-17-08-20-100-1-Tenant-name-localhost-1571209700.10003.wav") in new stack
-- Executing [s@tl-recording-helper:63] ExecIf("SIP/100-Tenant-name-00001b15", "1?StopMixMonitor(extensions/2019/10/16/700-0-2019-10-16-17-08-20-100-1-Tenant-name-localhost-1571209700.10003.wav,b)") in new stack
-- Executing [s@tl-recording-helper:64] ExecIf("SIP/100-Tenant-name-00001b15", "1?MixMonitor(extensions/2019/10/16/700-0-2019-10-16-17-08-20-100-1-Tenant-name-localhost-1571209700.10003.wav,b)") in new stack
-- Executing [s@tl-recording-helper:65] Set("SIP/100-Tenant-name-00001b15", "TOUCH=0") in new stack
== Begin MixMonitor Recording SIP/100-Tenant-name-00001b15
-- Executing [s@tl-recording-helper:66] Set("SIP/100-Tenant-name-00001b15", "__MIX_MONITOR_STATUS=1") in new stack
-- Executing [s@tl-recording-helper:67] Return("SIP/100-Tenant-name-00001b15", "") in new stack
-- Executing [s@macro-tl-dialout-base:24] Set("SIP/100-Tenant-name-00001b15", "CALLERID(name)=") in new stack
-- Executing [s@macro-tl-dialout-base:25] GotoIf("SIP/100-Tenant-name-00001b15", "0?calleridallowed") in new stack
-- Executing [s@macro-tl-dialout-base:26] Set("SIP/100-Tenant-name-00001b15", "temp=1") in new stack
-- Executing [s@macro-tl-dialout-base:27] GotoIf("SIP/100-Tenant-name-00001b15", "1?accountcodeallowed") in new stack
-- Goto (macro-tl-dialout-base,s,29)
-- Executing [s@macro-tl-dialout-base:29] Set("SIP/100-Tenant-name-00001b15", "CALLERID(num)=indial-number") in new stack
-- Executing [s@macro-tl-dialout-base:30] GotoIf("SIP/100-Tenant-name-00001b15", "1?calleridallowed") in new stack
-- Goto (macro-tl-dialout-base,s,32)
-- Executing [s@macro-tl-dialout-base:32] Set("SIP/100-Tenant-name-00001b15", "CLI=indial-number") in new stack
-- Executing [s@macro-tl-dialout-base:33] GotoIf("SIP/100-Tenant-name-00001b15", "1?chkcallfwd") in new stack
-- Goto (macro-tl-dialout-base,s,35)
-- Executing [s@macro-tl-dialout-base:35] NoOp("SIP/100-Tenant-name-00001b15", "INCOMINGCLI=") in new stack
-- Executing [s@macro-tl-dialout-base:36] NoOp("SIP/100-Tenant-name-00001b15", "CALLFWD=") in new stack
-- Executing [s@macro-tl-dialout-base:37] GotoIf("SIP/100-Tenant-name-00001b15", "1?dontuseincomingcli") in new stack
-- Goto (macro-tl-dialout-base,s,42)
-- Executing [s@macro-tl-dialout-base:42] GotoIf("SIP/100-Tenant-name-00001b15", "0?nocallerid") in new stack
-- Executing [s@macro-tl-dialout-base:43] Set("SIP/100-Tenant-name-00001b15", "CALLERID(num)=indial-number") in new stack
-- Executing [s@macro-tl-dialout-base:44] Set("SIP/100-Tenant-name-00001b15", "temp=indial-number") in new stack
-- Executing [s@macro-tl-dialout-base:45] GotoIf("SIP/100-Tenant-name-00001b15", "0?onetrunk,1") in new stack
-- Executing [s@macro-tl-dialout-base:46] Set("SIP/100-Tenant-name-00001b15", "CALLERID(name)=indial-number") in new stack
-- Executing [s@macro-tl-dialout-base:47] Goto("SIP/100-Tenant-name-00001b15", "onetrunk,1") in new stack
-- Goto (macro-tl-dialout-base,onetrunk,1)
-- Executing [onetrunk@macro-tl-dialout-base:1] Set("SIP/100-Tenant-name-00001b15", "FULLNAME=SIP/Tenant-name") in new stack
-- Executing [onetrunk@macro-tl-dialout-base:2] Set("SIP/100-Tenant-name-00001b15", "CDR(trunk)=SIP/Tenant-name") in new stack
-- Executing [onetrunk@macro-tl-dialout-base:3] Set("SIP/100-Tenant-name-00001b15", "TRUNK_NAME=Tenant-name") in new stack
-- Executing [onetrunk@macro-tl-dialout-base:4] GotoIf("SIP/100-Tenant-name-00001b15", "0?failed,1") in new stack
-- Executing [onetrunk@macro-tl-dialout-base:5] Set("SIP/100-Tenant-name-00001b15", "HASH(TRUNK)=SIP,0,,0,,,,1,,,,") in new stack
-- Executing [onetrunk@macro-tl-dialout-base:6] Set("SIP/100-Tenant-name-00001b15", "TRUNK_STATUS=") in new stack
-- Executing [onetrunk@macro-tl-dialout-base:7] GotoIf("SIP/100-Tenant-name-00001b15", "0?next,1") in new stack
-- Executing [onetrunk@macro-tl-dialout-base:8] Set("SIP/100-Tenant-name-00001b15", "ROUTE_PREPEND=") in new stack
-- Executing [onetrunk@macro-tl-dialout-base:9] Set("SIP/100-Tenant-name-00001b15", "ROUTE_STRIP=") in new stack
-- Executing [onetrunk@macro-tl-dialout-base:10] Set("SIP/100-Tenant-name-00001b15", "ROUTE_OPTIONS=") in new stack
-- Executing [onetrunk@macro-tl-dialout-base:11] Set("SIP/100-Tenant-name-00001b15", "NUMBER_TO_DIAL=700") in new stack
-- Executing [onetrunk@macro-tl-dialout-base:12] Set("SIP/100-Tenant-name-00001b15", "TRUNK_DIALSTRING=") in new stack
-- Executing [onetrunk@macro-tl-dialout-base:13] Set("SIP/100-Tenant-name-00001b15", "TRUNK_PROTOCOL=SIP") in new stack
-- Executing [onetrunk@macro-tl-dialout-base:14] Set("SIP/100-Tenant-name-00001b15", "TRUNK_STRIP=0") in new stack
-- Executing [onetrunk@macro-tl-dialout-base:15] Set("SIP/100-Tenant-name-00001b15", "TRUNK_PREPEND=") in new stack
-- Executing [onetrunk@macro-tl-dialout-base:16] Set("SIP/100-Tenant-name-00001b15", "TRUNK_DIALING_OPTIONS=") in new stack
-- Executing [onetrunk@macro-tl-dialout-base:17] Set("SIP/100-Tenant-name-00001b15", "CALLERID(num)=indial-number") in new stack
-- Executing [onetrunk@macro-tl-dialout-base:18] GotoIf("SIP/100-Tenant-name-00001b15", "1?end_did_chk") in new stack
-- Goto (macro-tl-dialout-base,onetrunk,23)
-- Executing [onetrunk@macro-tl-dialout-base:23] NoOp("SIP/100-Tenant-name-00001b15", "") in new stack
-- Executing [onetrunk@macro-tl-dialout-base:24] GotoIf("SIP/100-Tenant-name-00001b15", "0?dial-CUSTOM,1") in new stack
-- Executing [onetrunk@macro-tl-dialout-base:25] Goto("SIP/100-Tenant-name-00001b15", "dial-SIP,1") in new stack
-- Goto (macro-tl-dialout-base,dial-SIP,1)
-- Executing [dial-SIP@macro-tl-dialout-base:1] Set("SIP/100-Tenant-name-00001b15", "headernum=1") in new stack
-- Executing [dial-SIP@macro-tl-dialout-base:2] SIPRemoveHeader("SIP/100-Tenant-name-00001b15", "Alert-Info:") in new stack
-- Executing [dial-SIP@macro-tl-dialout-base:3] Set("SIP/100-Tenant-name-00001b15", "HEADER=") in new stack
-- Executing [dial-SIP@macro-tl-dialout-base:4] GotoIf("SIP/100-Tenant-name-00001b15", "1?dial") in new stack
-- Goto (macro-tl-dialout-base,dial-SIP,8)
-- Executing [dial-SIP@macro-tl-dialout-base:8] Dial("SIP/100-Tenant-name-00001b15", "SIP/700@Tenant-name,60,") in new stack
== Using SIP RTP TOS bits 184
== Using SIP RTP CoS mark 5
-- Called SIP/700@Tenant-name
-- SIP/Tenant-name-00001b16 is making progress passing it to SIP/100-Tenant-name-00001b15
-- Got SIP response 603 "Decline" back from carrier-gateway:5060
-- SIP/Tenant-name-00001b16 is busy
== Everyone is busy/congested at this time (1:1/0/0)

Submitted by volodya on Wed, 10/16/2019 Permalink

Hello Glen,

Please run dialplan show from-inside-redir-Tenant-name and dialplan show parkedcalls-TENANT_NAME in Asterisk CLI and show your results.

Thanks.

Submitted by Glen.C on Wed, 10/16/2019 Permalink

Thanks volodya

heres what i get back

l*CLI> dialplan show parkedcalls-09661767
[ Context 'parkedcalls-09661767' created by 'pbx_config' ]
'700' => 1. Park() [features]
'dummy' => 1. NoOp() [pbx_config]

-= 2 extensions (2 priorities) in 1 context. =-

*CLI> dialplan show from-inside-redir-09661767
[ Context 'from-inside-redir-09661767' created by 'pbx_config' ]
'h' => 1. Hangup() [pbx_config]
'i' => 1. Playback(invalid) [pbx_config]
2. Hangup() [pbx_config]
't' => 1. Hangup() [pbx_config]
Include => 'local-extensions-09661767' [pbx_config]
Include => 'feature-extensions-09661767' [pbx_config]
Include => 'outgoing-emergency-09661767' [pbx_config]
Include => 'outgoing-unrestricted-09661767' [pbx_config]
Include => 'outgoing-09661767' [pbx_config]
Include => 'parkedcalls-09661767' [pbx_config]

-= 3 extensions (4 priorities) in 1 context. =-

Submitted by volodya on Wed, 10/16/2019 Permalink

Everything looks correct. Could you please confirm that you do not have 700 in your Outbound routes? You may also try to restart Asterisk just in case.

Submitted by Glen.C on Wed, 10/16/2019 Permalink

Ok i figured out what the issue is

my "catch all" _X. in the outbound routes was what was causing it to be sent out the trunk to the carrier. So removing that and putting in more specific routes for numbers that doesn't cover 700 was my issue.

Feel a bit silly, i should have tried that first but thank you for your help volodya, much appreciated.