Public users aren't hearing disconnet tone when extension is busy

My setup is a SPA3102 and freebpx12, I’ve followed a few guides getting it plumb up, which are on both the freepbx site and also the “Linksys SPA 3102 – Making it Work with Asterisk”

I am using the PSTN and have no public SIP providers

In general the system seems to be working but I have a couple of last issues I’m having trouble finding the cause of.

  1. If on the inbound route I have the destination set to Terminate Call it doesn’t terminate any public calls, the external party just hears ringing.
    I did have issues with voice mail not hanging up the PSTN so in the SPA I changed the disconnect tone to 425@-30,425@-30;2(.25/.25/.25/.25) if this could have anything to do with it

  2. If the extension that is mapped to LINE1 of the SPA is offline for any reason, when an external call comes in, the external party hear ringing. I would like their call to be disconnected with a disconnect tone.
    OR
    I would like to hear an indication on the handset that there is another call and for the handset to ring when the first call is hung up. At the moment when the user of the LINE1 extension places the phone back on hook the phone does nothing to indicate there is another call waiting to be answered.

In general it works great but would love to nut these last few things out.

Using the debug from Asterisk I can see it attempts to play the busy state and in the SPA3102 I can see it never comes off the hook. Next this is to factory reset the SPA3102 and take Freepbx out the equation .

Here is the debug from Asterisks

== Everyone is busy/congested at this time (1:1/0/0)
– Executing [s@macro-dial-one:45] ExecIf(“SIP/1-pstn-0000000e”, “0?MacroExit()”) in new stack
– Executing [s@macro-dial-one:46] ExecIf(“SIP/1-pstn-0000000e”, “0?Set(DIALSTATUS=)”) in new stack
– Executing [s@macro-dial-one:47] GosubIf(“SIP/1-pstn-0000000e”, “0?s-BUSY,1()”) in new stack
– Executing [s@macro-dial-one:48] MacroExit(“SIP/1-pstn-0000000e”, “”) in new stack
– Executing [s@macro-exten-vm:17] Set(“SIP/1-pstn-0000000e”, “SV_DIALSTATUS=BUSY”) in new stack
– Executing [s@macro-exten-vm:18] GosubIf(“SIP/1-pstn-0000000e”, “0?docfu,1()”) in new stack
– Executing [s@macro-exten-vm:19] GosubIf(“SIP/1-pstn-0000000e”, “0?docfb,1()”) in new stack
– Executing [s@macro-exten-vm:20] Set(“SIP/1-pstn-0000000e”, “DIALSTATUS=BUSY”) in new stack
– Executing [s@macro-exten-vm:21] ExecIf(“SIP/1-pstn-0000000e”, “0?MacroExit()”) in new stack
– Executing [s@macro-exten-vm:22] GotoIf(“SIP/1-pstn-0000000e”, “1?s-BUSY,1”) in new stack
– Goto (macro-exten-vm,s-BUSY,1)
– Executing [s-BUSY@macro-exten-vm:1] GotoIf(“SIP/1-pstn-0000000e”, “0?exit,1”) in new stack
– Executing [s-BUSY@macro-exten-vm:2] PlayTones(“SIP/1-pstn-0000000e”, “busy”) in new stack
– Executing [s-BUSY@macro-exten-vm:3] Busy(“SIP/1-pstn-0000000e”, “20”) in new stack
== Spawn extension (macro-exten-vm, s-BUSY, 3) exited non-zero on ‘SIP/1-pstn-0000000e’ in macro ‘exten-vm’
== Spawn extension (ext-local, 1000, 2) exited non-zero on ‘SIP/1-pstn-0000000e’
– Executing [h@ext-local:1] Macro(“SIP/1-pstn-0000000e”, “hangupcall,”) in new stack
– Executing [s@macro-hangupcall:1] ExecIf(“SIP/1-pstn-0000000e”, “0?Set(CDR(recordingfile)=.wav)”) in new stack
– Executing [s@macro-hangupcall:2] GotoIf(“SIP/1-pstn-0000000e”, “1?theend”) in new stack
– Goto (macro-hangupcall,s,4)
– Executing [s@macro-hangupcall:4] Hangup(“SIP/1-pstn-0000000e”, “”) in new stack
== Spawn extension (macro-hangupcall, s, 4) exited non-zero on ‘SIP/1-pstn-0000000e’ in macro ‘hangupcall’
== Spawn extension (ext-local, h, 1) exited non-zero on ‘SIP/1-pstn-0000000e’

Hi John,

You should be able to datafill the requirements you are trying to achieve.

1st, make sure Call Waiting is disabled on the PSTN line. Search the Internet for the dial code for your carrier, or better still, contact the Carrier and request the tele-service Call Waiting be removed from the PSTN line or lines.

2nd, the majority of PSTN lines cannot be back busied (there are some exceptions with limited availability in some Carrier networks, but just too complicated for most to utilise). So you will need to answer the incoming call (ie charged to the calling party) and then direct FreePBX send a tone. You could do this with an Announcement.

  1. Add Recording of Busy Tone
  2. Add Announcement of the Recording from step 1.
  3. Edit Extension, in Optional Destinations, set the Busy entry to the Announcement from Step 2.

If you dont want to Answer the incoming call and send Busy tone, then you will need to change your PSTN connectivity to protocol driven interface such as ISDN or SIP.

I’m curious why you would not set this to go to Voicemail, as this is the normal behaviour for most networks?

HI tcom, thanks for your answers.
The main cause of buying this unit was to stop midnight telemarketers from calling us so we wanted it to stay as much like a normal land line as possibly.

As this is a home landline I didn’t want to be charging my friends and family every time they made a call to our house as all of them are outside the local free calling zone and I did investigate the playing of tones etc but all of these inure a cost to the caller which is what I was trying to prevent.

The last option I can think of is any time ext1000 is offline I can take the pstn line offline but unsure how to do this, eg all inbound routing uses Asterisk and outbound uses Linksys

Hummm … Interesting issue John. I don’t believe you can do what your trying to do with a spa3102. Whilst you could write a script to watch your sip extension, and reflect this back to spa ( eg dial 1 & hold), the pstn will digit receive timeout and return congestion or busy or number unavailable tone. The spa listens for these and will drop the line loop. You cannot turn this off else you will end up with line loops incorrectly.

Maybe time to talk with your carrier for options available.

Here is some revision items to help you understand the complexity.

http://www.commsalliance.com.au/__data/assets/pdf_file/0012/20802/S003-1_2010r.pdf