Hello, everyone,
what settings should I use to skip waiting for an answer from a primary extension, if it is unavailable, and proceed directly to the followme phone? Now, if a FreePBX subscriber is away, the primary extension is called until the timeout, specified for an available extension (let’s say, 20 seconds).
The obvious question is “How do you know the person is there or not?” If the phone doesn’t ring, it’s hard to answer…
The phone is ringing during the timeout. The phone rings to make sure that the person is actually not there. If the phone is off, DND is set, or the phone is busy, the FMFM will catch instantly.
How do you want it to work?
I mean, I need it i situations where a particular endpoint is unavailable (for example, the softphone is turned off).
If the phone is not on, the phone won’t ring and the FMFM should go direct to the extension. If that’s not happening, you’ll need to show us some logs, since it’s a bug.
I suspect, some of my settings are wrong. Here is an excerpt of the log, that shows, that the primary extension is unavailable, but FreePBX skips calling the secondary extension until the initial calling timeout expires:
– Executing [s@macro-simple-dial:1] Set(“Local/FMPR-XXXXXXXXXXX@from-internal-000001f2;2”, “__EXTTOCALL=XXXXXXXXXXX”) in new stack
– Executing [s@macro-simple-dial:2] Set(“Local/FMPR-XXXXXXXXXXX@from-internal-000001f2;2”, “RT=20”) in new stack
– Executing [s@macro-simple-dial:3] Set(“Local/FMPR-XXXXXXXXXXX@from-internal-000001f2;2”, “CFUEXT=”) in new stack
– Executing [s@macro-simple-dial:4] Set(“Local/FMPR-XXXXXXXXXXX@from-internal-000001f2;2”, “CFBEXT=”) in new stack
– Executing [s@macro-simple-dial:5] Set(“Local/FMPR-XXXXXXXXXXX@from-internal-000001f2;2”, “CWI_TMP=”) in new stack
– Executing [s@macro-simple-dial:6] Macro(“Local/FMPR-XXXXXXXXXXX@from-internal-000001f2;2”, “dial-one,20,HhTtr,XXXXXXXXXXX”) in new stack
– Executing [s@macro-dial-one:1] Set(“Local/FMPR-XXXXXXXXXXX@from-internal-000001f2;2”, “DEXTEN=XXXXXXXXXXX”) in new stack
– Executing [s@macro-dial-one:2] ExecIf(“Local/FMPR-XXXXXXXXXXX@from-internal-000001f2;2”, “0?Set(__EXTTOCALL=XXXXXXXXXXX)”) in new stack
– Executing [s@macro-dial-one:3] Set(“Local/FMPR-XXXXXXXXXXX@from-internal-000001f2;2”, “DIALSTATUS_CW=”) in new stack
– Executing [s@macro-dial-one:4] GosubIf(“Local/FMPR-XXXXXXXXXXX@from-internal-000001f2;2”, “0?screen,1()”) in new stack
– Executing [s@macro-dial-one:5] GosubIf(“Local/FMPR-XXXXXXXXXXX@from-internal-000001f2;2”, “0?cf,1()”) in new stack
– Executing [s@macro-dial-one:6] GotoIf(“Local/FMPR-XXXXXXXXXXX@from-internal-000001f2;2”, “1?skip1”) in new stack
– Goto (macro-dial-one,s,9)
– Executing [s@macro-dial-one:9] GotoIf(“Local/FMPR-XXXXXXXXXXX@from-internal-000001f2;2”, “0?nodial”) in new stack
– Executing [s@macro-dial-one:10] GotoIf(“Local/FMPR-XXXXXXXXXXX@from-internal-000001f2;2”, “0?continue”) in new stack
– Executing [s@macro-dial-one:11] Set(“Local/FMPR-XXXXXXXXXXX@from-internal-000001f2;2”, “EXTHASCW=”) in new stack
– Executing [s@macro-dial-one:12] GotoIf(“Local/FMPR-XXXXXXXXXXX@from-internal-000001f2;2”, “1?next1:cwinusebusy”) in new stack
– Goto (macro-dial-one,s,13)
– Executing [s@macro-dial-one:13] GotoIf(“Local/FMPR-XXXXXXXXXXX@from-internal-000001f2;2”, “0?docfu:skip3”) in new stack
– Goto (macro-dial-one,s,17)
– Executing [s@macro-dial-one:17] GotoIf(“Local/FMPR-XXXXXXXXXXX@from-internal-000001f2;2”, “1?next2:continue”) in new stack
– Goto (macro-dial-one,s,18)
– Executing [s@macro-dial-one:18] GotoIf(“Local/FMPR-XXXXXXXXXXX@from-internal-000001f2;2”, “1?continue”) in new stack
– Goto (macro-dial-one,s,26)
– Executing [s@macro-dial-one:26] GotoIf(“Local/FMPR-XXXXXXXXXXX@from-internal-000001f2;2”, “0?nodial”) in new stack
– Executing [s@macro-dial-one:27] GosubIf(“Local/FMPR-XXXXXXXXXXX@from-internal-000001f2;2”, “1?dstring,1():dlocal,1()”) in new stack
– Executing [dstring@macro-dial-one:1] Set(“Local/FMPR-XXXXXXXXXXX@from-internal-000001f2;2”, “DSTRING=”) in new stack
– Executing [dstring@macro-dial-one:2] Set(“Local/FMPR-XXXXXXXXXXX@from-internal-000001f2;2”, “DEVICES=XXXXXXXXXXX”) in new stack
– Executing [dstring@macro-dial-one:3] ExecIf(“Local/FMPR-XXXXXXXXXXX@from-internal-000001f2;2”, “0?Return()”) in new stack
– Executing [dstring@macro-dial-one:4] ExecIf(“Local/FMPR-XXXXXXXXXXX@from-internal-000001f2;2”, “0?Set(DEVICES=XXXXXXXXXXX)”) in new stack
– Executing [dstring@macro-dial-one:5] Set(“Local/FMPR-XXXXXXXXXXX@from-internal-000001f2;2”, “LOOPCNT=1”) in new stack
– Executing [dstring@macro-dial-one:6] Set(“Local/FMPR-XXXXXXXXXXX@from-internal-000001f2;2”, “ITER=1”) in new stack
– Executing [dstring@macro-dial-one:7] Set(“Local/FMPR-XXXXXXXXXXX@from-internal-000001f2;2”, “THISDIAL=PJSIP/XXXXXXXXXXX”) in new stack
– Executing [dstring@macro-dial-one:8] GosubIf(“Local/FMPR-XXXXXXXXXXX@from-internal-000001f2;2”, “1?zap2dahdi,1()”) in new stack
– Executing [zap2dahdi@macro-dial-one:1] ExecIf(“Local/FMPR-XXXXXXXXXXX@from-internal-000001f2;2”, “0?Return()”) in new stack
– Executing [zap2dahdi@macro-dial-one:2] Set(“Local/FMPR-XXXXXXXXXXX@from-internal-000001f2;2”, “NEWDIAL=”) in new stack
– Executing [zap2dahdi@macro-dial-one:3] Set(“Local/FMPR-XXXXXXXXXXX@from-internal-000001f2;2”, “LOOPCNT2=1”) in new stack
– Executing [zap2dahdi@macro-dial-one:4] Set(“Local/FMPR-XXXXXXXXXXX@from-internal-000001f2;2”, “ITER2=1”) in new stack
– Executing [zap2dahdi@macro-dial-one:5] Set(“Local/FMPR-XXXXXXXXXXX@from-internal-000001f2;2”, “THISPART2=PJSIP/XXXXXXXXXXX”) in new stack
– Executing [zap2dahdi@macro-dial-one:6] ExecIf(“Local/FMPR-XXXXXXXXXXX@from-internal-000001f2;2”, “0?Set(THISPART2=DAHDIIP/XXXXXXXXXXX)”) in new stack
– Executing [zap2dahdi@macro-dial-one:7] Set(“Local/FMPR-XXXXXXXXXXX@from-internal-000001f2;2”, “NEWDIAL=PJSIP/XXXXXXXXXXX&”) in new stack
– Executing [zap2dahdi@macro-dial-one:8] Set(“Local/FMPR-XXXXXXXXXXX@from-internal-000001f2;2”, “ITER2=2”) in new stack
– Executing [zap2dahdi@macro-dial-one:9] GotoIf(“Local/FMPR-XXXXXXXXXXX@from-internal-000001f2;2”, “0?begin2”) in new stack
– Executing [zap2dahdi@macro-dial-one:10] Set(“Local/FMPR-XXXXXXXXXXX@from-internal-000001f2;2”, “THISDIAL=PJSIP/XXXXXXXXXXX”) in new stack
– Executing [zap2dahdi@macro-dial-one:11] Return(“Local/FMPR-XXXXXXXXXXX@from-internal-000001f2;2”, “”) in new stack
– Executing [dstring@macro-dial-one:9] GotoIf(“Local/FMPR-XXXXXXXXXXX@from-internal-000001f2;2”, “0?docheck”) in new stack
– Executing [dstring@macro-dial-one:10] NoOp(“Local/FMPR-XXXXXXXXXXX@from-internal-000001f2;2”, “Debug: Found PJSIP Destination PJSIP/XXXXXXXXXXX”) in new stack
– Executing [dstring@macro-dial-one:11] GotoIf(“Local/FMPR-XXXXXXXXXXX@from-internal-000001f2;2”, “0?doset”) in new stack
– Executing [dstring@macro-dial-one:12] NoOp(“Local/FMPR-XXXXXXXXXXX@from-internal-000001f2;2”, “Debug: Updating PJSIP Destination with PJSIP_DIAL_CONTACTS”) in new stack
– Executing [dstring@macro-dial-one:13] Set(“Local/FMPR-XXXXXXXXXXX@from-internal-000001f2;2”, “THISDIAL=”) in new stack
– Executing [dstring@macro-dial-one:14] ExecIf(“Local/FMPR-XXXXXXXXXXX@from-internal-000001f2;2”, “1?Set(DIALSTATUS=CHANUNAVAIL)”) in new stack
– Executing [dstring@macro-dial-one:15] GotoIf(“Local/FMPR-XXXXXXXXXXX@from-internal-000001f2;2”, “1?skipset”) in new stack
– Goto (macro-dial-one,dstring,17)
– Executing [dstring@macro-dial-one:17] Set(“Local/FMPR-XXXXXXXXXXX@from-internal-000001f2;2”, “ITER=2”) in new stack
– Executing [dstring@macro-dial-one:18] GotoIf(“Local/FMPR-XXXXXXXXXXX@from-internal-000001f2;2”, “0?begin”) in new stack
– Executing [dstring@macro-dial-one:19] ExecIf(“Local/FMPR-XXXXXXXXXXX@from-internal-000001f2;2”, “1?Return()”) in new stack
– Executing [s@macro-dial-one:28] GotoIf(“Local/FMPR-XXXXXXXXXXX@from-internal-000001f2;2”, “1?nodial”) in new stack
– Goto (macro-dial-one,s,59)
– Executing [s@macro-dial-one:59] NoOp(“Local/FMPR-XXXXXXXXXXX@from-internal-000001f2;2”, “”) in new stack
– Executing [s@macro-dial-one:60] ExecIf(“Local/FMPR-XXXXXXXXXXX@from-internal-000001f2;2”, “0?Set(DIALSTATUS=NOANSWER)”) in new stack
– Executing [s@macro-dial-one:61] NoOp(“Local/FMPR-XXXXXXXXXXX@from-internal-000001f2;2”, “Returned from dial-one with nothing to call and DIALSTATUS: CHANUNAVAIL”) in new stack
– Executing [s@macro-dial-one:62] MacroExit(“Local/FMPR-XXXXXXXXXXX@from-internal-000001f2;2”, “”) in new stack
– Executing [s@macro-simple-dial:7] Set(“Local/FMPR-XXXXXXXXXXX@from-internal-000001f2;2”, “__CWIGNORE=”) in new stack
– Executing [s@macro-simple-dial:8] Set(“Local/FMPR-XXXXXXXXXXX@from-internal-000001f2;2”, “PR_DIALSTATUS=CHANUNAVAIL”) in new stack
– Executing [s@macro-simple-dial:9] GosubIf(“Local/FMPR-XXXXXXXXXXX@from-internal-000001f2;2”, “0?docfu,1()”) in new stack
– Executing [s@macro-simple-dial:10] GosubIf(“Local/FMPR-XXXXXXXXXXX@from-internal-000001f2;2”, “0?docfb,1()”) in new stack
– Executing [s@macro-simple-dial:11] Set(“Local/FMPR-XXXXXXXXXXX@from-internal-000001f2;2”, “DIALSTATUS=CHANUNAVAIL”) in new stack
– Executing [s@macro-simple-dial:12] Goto(“Local/FMPR-XXXXXXXXXXX@from-internal-000001f2;2”, “s-CHANUNAVAIL,1”) in new stack
– Goto (macro-simple-dial,s-CHANUNAVAIL,1)
– Executing [s-CHANUNAVAIL@macro-simple-dial:1] NoOp(“Local/FMPR-XXXXXXXXXXX@from-internal-000001f2;2”, “Extension is reporting s-CHANUNAVAIL”) in new stack
– Executing [FMPR-XXXXXXXXXXX@from-internal:6] ExecIf(“Local/FMPR-XXXXXXXXXXX@from-internal-000001f2;2”, “0?Set(SHARED(FM_DND,PJSIP/si3000-0000092e)=DND)”) in new stack
– Executing [FMPR-XXXXXXXXXXX@from-internal:7] Hangup(“Local/FMPR-XXXXXXXXXXX@from-internal-000001f2;2”, “”) in new stack
== Spawn extension (from-internal, FMPR-XXXXXXXXXXX, 7) exited non-zero on ‘Local/FMPR-XXXXXXXXXXX@from-internal-000001f2;2’
– Executing [h@from-internal:1] Macro(“Local/FMPR-XXXXXXXXXXX@from-internal-000001f2;2”, “hangupcall”) in new stack
– Executing [s@macro-hangupcall:1] GotoIf(“Local/FMPR-XXXXXXXXXXX@from-internal-000001f2;2”, “1?theend”) in new stack
– Goto (macro-hangupcall,s,3)
– Executing [s@macro-hangupcall:3] ExecIf(“Local/FMPR-XXXXXXXXXXX@from-internal-000001f2;2”, “0?Set(CDR(recordingfile)=)”) in new stack
– Executing [s@macro-hangupcall:4] NoOp(“Local/FMPR-XXXXXXXXXXX@from-internal-000001f2;2”, " montior file= ") in new stack
– Executing [s@macro-hangupcall:5] GotoIf(“Local/FMPR-XXXXXXXXXXX@from-internal-000001f2;2”, “1?skipagi”) in new stack
– Goto (macro-hangupcall,s,7)
– Executing [s@macro-hangupcall:7] Hangup(“Local/FMPR-XXXXXXXXXXX@from-internal-000001f2;2”, “”) in new stack
== Spawn extension (macro-hangupcall, s, 7) exited non-zero on ‘Local/FMPR-XXXXXXXXXXX@from-internal-000001f2;2’ in macro ‘hangupcall’
== Spawn extension (from-internal, h, 1) exited non-zero on ‘Local/FMPR-XXXXXXXXXXX@from-internal-000001f2;2’
– Executing [FMGL-YYYYYYYYYYY#@from-internal:6] GotoIf(“Local/FMGL-YYYYYYYYYYY#@from-internal-000001f3;2”, “1?start”) in new stack
– Goto (from-internal,FMGL-YYYYYYYYYYY#,4)
– Executing [FMGL-YYYYYYYYYYY#@from-internal:4] GotoIf(“Local/FMGL-YYYYYYYYYYY#@from-internal-000001f3;2”, “0?dodnd”) in new stack
– Executing [FMGL-YYYYYYYYYYY#@from-internal:5] Wait(“Local/FMGL-YYYYYYYYYYY#@from-internal-000001f3;2”, “1”) in new stack
– Executing [FMGL-YYYYYYYYYYY#@from-internal:6] GotoIf(“Local/FMGL-YYYYYYYYYYY#@from-internal-000001f3;2”, “1?start”) in new stack
– Goto (from-internal,FMGL-YYYYYYYYYYY#,4)
– Executing [FMGL-YYYYYYYYYYY#@from-internal:4] GotoIf(“Local/FMGL-YYYYYYYYYYY#@from-internal-000001f3;2”, “0?dodnd”) in new stack
– Executing [FMGL-YYYYYYYYYYY#@from-internal:5] Wait(“Local/FMGL-YYYYYYYYYYY#@from-internal-000001f3;2”, “1”) in new stack
– Executing [FMGL-YYYYYYYYYYY#@from-internal:6] GotoIf(“Local/FMGL-YYYYYYYYYYY#@from-internal-000001f3;2”, “1?start”) in new stack
– Goto (from-internal,FMGL-YYYYYYYYYYY#,4)
I’ve seen problems when the primary extension is not included in the follow-me list.
I tested with Ring Strategy set to ringallv2-prim and had no trouble.
If you still have problems, post a screenshot of follow-me settings, as well as a new log. Get the log from the GUI at Reports -> Asterisk Logfiles, or by directly accessing /var/log/asterisk/full . That contains timestamps that are very useful for this type of problem.
I have this strategy, but the primary extension is not included in the follow-me list. I assume it is supposed that if it does not answer there is no reason to call it again. Should I indeed include it?
Recent versions are smart enough so it keeps ringing; if the person is slow to answer he can still pick up on his office phone. Also, this allows you to set Initial Ring Time much shorter, avoiding the issue where a caller who hears ringing for 30 seconds assumes that there is no answer and abandons the call.
I don’t know whether the behavior you are seeing (when the original extension is not included) is intentional or a bug.
This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.