Multiple calls not following dialplans

I have a DID on my system that has a lengthy dialplan when people don’t answer. Assuming no one answers, here is the full plan:

DID->TimeCondition->Group(2 exts)->Group(cell#)->IVR

In order to get to the next level, the NoAnswer must get hit.

When I call my DID with a cell phone (external to our system) the call will get as far as dialing the cell from the Group but never hit the IVR. When I call from an extension internal to our system it works properly. Here are some things I noticed while debugging.

The 8888888888 number in the below logs is the cell phone that is part of the dialplan.

When calling from a cell (the call that does not work properly) the logs show that after no one picks up from the Group(cell#) it immediately calls macro-hangupcall instead of checking for NoAnswer (which would send it to the IVR).

[2017-12-20 16:54:42] VERBOSE[1695][C-0003b0e7] pbx.c: Spawn extension (outbound-allroutes, 8888888888, 6) exited non-zero on ‘Local/8888888888@from-internal-00070f08;2’
[2017-12-20 16:54:42] VERBOSE[1578][C-0003b0e7] pbx.c: Executing [s@macro-hangupcall:4] Hangup(“SIP/UC1-001180df”, “”) in new stack

When calling my DID from an internal extension asterisk will spawn an outbound call, which will in-turn spawn a new call for the incoming call to the DID. That second (incoming) call works properly. After it gets to the cell# and no one picks up it checks for NoAnswer and moves to the IVR.

[2017-12-20 16:53:11] VERBOSE[1112][C-0003b0da] pbx.c: Spawn extension (outbound-allroutes, 8888888888, 6) exited non-zero on ‘Local/8888888888@from-intern
al-00070ee9;2’
[2017-12-20 16:53:11] VERBOSE[990][C-0003b0da] pbx.c: Executing [s@macro-dial:36] GosubIf(“SIP/UC1-00118096”, “0?NOANSWER,1()”) in new stack

One other interesting tidbit is that when calling from an external number (the call that doesn’t work properly) the logs do not show the following line when no one answers the cell#:

app_dial.c: Nobody picked up in 20000 ms

That line does appear every other time for both the good and bad call; it’s just missing that single time (when an external number calls my DID and no one picks up the cell once it gets to that level).

Any thoughts? I’m struggling to figure out why it’s behaving this way.

Asterisk is a Back to Back User Agent, so your call flow isn’t correct. It should look more like this:

DID->TimeCondition->Group->Extension1->Group(Cell)->IVR
                         |>Extension2->Group(Cell)->IVR

The call splits into two calls after the Group gets involved, so you’re going to end up with a crap shoot as to where the call will actually go.

Ok, understandable. But the problem is the same either way. The NoAnswer setting of the Group(cell#) isn’t getting hit when someone external to our PBX dials this DID.

My next guess would be that the cell# is capturing the call and it isn’t returning to the PBX. I had a problem like this with a cell phone and it was because the cell was “expiring” the call and routing it to VM before the system would have expired the call.

While sending a call to a cell phone sometimes works, it’s not always going to. If the cell, for example, marks the call as “complete” with the PBX, even if you didn’t answer it, the call is considered “answered” and you will never return to the error-logic leg.

This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.