FollowMe Issues

Continuing this thread: Follow Me with Prompt Callee Enabled - VitalPBX Community

This dialplan is working and does not cause any issues when the callee answers on their external cellphone, as well as it continues ringing after the initial ringtime without any interruption.

[cos-all-custom]
exten => 100,1,Noop(Testing follow me)
exten => 100,n,Dial(Local/deskphone-100@my-phones&Local/cellphone-100@my-phones,30)
exten => 100,n,Hangup

[my-phones]
exten => deskphone-100,1,Noop(Dialing extension 100)
exten => deskphone-100,n,Dial(SIP/100)

exten => cellphone-100,1,Noop(Calling cellphone of extension 100 and 5 seconds before dialing)
exten => cellphone-100,n,Wait(5)
exten => cellphone-100,n,Dial(local/812XXXXXXX@cos-all,,HhTtU(followme-confirmation))

[followme-confirmation]
exten => s,1,Noop(Entered follow me confirmation sub)
exten => s,n(start),Set(attempts=$[0${attempts}+1])
exten => s,n,Read(accept,followme/no-recording&followme/options,1,,1,5)
exten => s,n,GotoIf($[$["${accept}" != ""] | $["${attempts}" = "3"]]?end:start)
exten => s,n(end),ExecIf($["${accept}" = "1"]?Noop(Connecting Call...):Set(_GOSUB_RESULT=ABORT))
exten => s,n,Return()

Of course, this needs to be adjusted to not prompt for confirmation if the callee is an internal extension as well if the initial ring extension is not part of the follow me list. But this proof of concept is working.

It is quite crucial to get followme working reliable, since many people are using on-call queue setups with external cellphone numbers through followme.

Please let me know if you need any additional information.

Thank you

1 Like

Any chance this is going to be looked at? Is there anyway I can perhaps work with an internal git to officially do a PR?

Thanks

Bump?

Is there anyway we can do something to make FollowMe rock solid?

Thanks

1 Like

I have tried this and it doesn’t work

Hi @miguel,

Thanks so much for testing it.

I see the issue. I made a couple of changes, please test the below:

I changed 4 things.

  1. I deleted extension 100, since it was impossible to reach this dialplan.
  2. I changed the device it calls to PJSIP/103
  3. Increased the ring time to 35 seconds, so it can ring full 30 seconds on the cellphone.
  4. Changed the dialplan in followme-confirmation to properly set the GOSUB_RESULT
[cos-all-custom]
exten => 100,1,Noop(Testing follow me)
exten => 100,n,Dial(Local/deskphone-100@my-phones&Local/cellphone-100@my-phones,35)
exten => 100,n,Hangup

[my-phones]
exten => deskphone-100,1,Noop(Dialing device 103)
exten => deskphone-100,n,Dial(PJSIP/103)

exten => cellphone-100,1,Noop(Calling cellphone of extension 6406 and 5 seconds before dialing)
exten => cellphone-100,n,Wait(5)
exten => cellphone-100,n,Dial(local/845XXXXXXX@cos-all,,HhTtU(followme-confirmation))

[followme-confirmation]
exten => s,1,Noop(Entered follow me confirmation sub)
exten => s,n,Set(_GOSUB_RESULT=CONTINUE)
exten => s,n(start),Set(attempts=$[0${attempts}+1])
exten => s,n,Read(accept,followme/no-recording&followme/options,1,,,5)
exten => s,n,GotoIf($[$["${accept}" != ""] | $["${attempts}" = "3"]]?end:start)
exten => s,n(end),Set(_GOSUB_RESULT=${IF($["${accept}" = "1"]?:CONTINUE)})
exten => s,n,Return()

Let me know if you have any questions

Thank you

This doesn’t work when there is more than one device connected to the same account.

I will test this ASAP and let you know my comments.

True, we will need something like: (Assuming we have the callee extension set as arg1)

exten => deskphone-100,n,Dial(${DB(${TENANT_PATH}/extensions/${ARG1}/dial)})

This is rather a proof of concept than a 100% working solution.

1 Like

Is there an update on this? This is very annoying for our clients. For a user that has follow me enabled and rejects the call on their follow-me number, the call gets disconnected from all other ringing devices. This is very annoying and frankly this feature is unusable. We never had this issue with FreePBX and can’t get our top customers onto vital till this is fixed. @miguel

Is there an update on this please?

3 Likes

@yanok,

No, there’s no update for this feature. Actually, the follow-me application for Asterisk doesn’t work either, so we developed our own solution that is not perfect, but it works for certain customers.

Making the perfect follow-me could take 1 month, 1 year, or 2 years, I don’t really know. If we found a solution, believe me, it will be included in future versions.

1 Like

Friendly bump!

Is there any progress with this? We are eagerly waiting for this, so we can complete migrations and respond to tickets from customer who are complaining about this.

Any way we can assist with this? If you guys want, you can PM me with a strategy you have, we can write and test it.

2 Likes

Curious me checking in if there is any progress on this…

Hello,

I worked with @PitzKey on this, we found that if you receive a FollowMe call to your cellphone, you answer, don’t press anything and hangup then the entire call gets disconnected without continuing to either voicemail or if you use a queue to the rest of the queue members.

After reviewing a bit the dialplan, we see that the reason is because of the GOSUB_RESULT is not set to ABORT or CONTINUE. Instead, the GOSUB_RESULT remains empty since the callee terminated the call prematurely before there was a chance for that variable to be set.

See log example:

[2021-11-06 22:52:55] VERBOSE[103935][C-000083ae] app_read.c: User disconnected
[2021-11-06 22:52:55] NOTICE[103935][C-000083ae] app_stack.c: Local/1234567890@T107_cos-all-0000c610;1 Abnormal 'Gosub(T107_FW1019-confirm,s,1())' exit.  Popping routine return locations.

We tested the following dialplan for a single extension and it seems to be working fine.

[T107_FW1019-confirm]
exten => s,1,NoOp(Confirm Call)
 same => n,Set(DIALED_NUMBER=${CUT(DIALEDPEERNUMBER,@,1)})
 same => n,Set(RECFILE=${ARG1})
 same => n,Set(SOUND=${IF($["${LEN(${RECFILE})}"="0"]?followme/no-recording:followme/call-from&${RECFILE})})
 same => n,GotoIf(${DB_EXISTS(${TENANT}/extensions/${DIALED_NUMBER}/name)}?accept)
 same => n,Set(GOSUB_RESULT=CONTINUE)
 same => n,Read(CONFIRM,${SOUND}&followme/options,1,,1,5)
; same => n,GotoIf($["${CONFIRM}"="1"]?:end)
; same => n(accept),NoOp(Accept Call)
; same => n,Return()
; same => n(end),NoOp(Reject Call)
 same => n(accept),Set(_GOSUB_RESULT=${IF($["${CONFIRM}" = "1"]?:${GOSUB_RESULT})})
 same => n,Return()

The reason we used CONTINUE instead of ABORT, is because when using a ABORT and you call the extension directly, it never gets to Voicemail.

Note: the correct way of implementing this, would be to apply the U option ONLY on the external FollowMe channel that is leaving through the trunk.

1 Like

Thanks @EINM!

@miguel, when you have a second, please take a look at this and see if you can push this to the next release?

Thanks

Definitely, I will check it. Unfortunately, we will release a new update tomorrow, and this change cannot be included without running some tests first.

1 Like

1 Like

Sorry for being pushy about this.

One of our Multi Tenant systems using 3.1.2-1 has this issue now where if you don’t answer FollowMe it never gets to Voicemail it just rings and rings the follow me number over and over again and again. From a client perspective, this is a extremely annoying.

With what @EINM posted yesterday it works fine.

1 Like

I just tested follow me with the prompt to accept press 1, and when i reject or disconnect on the external number, call gets disconnected without the option of leaving a voicemail, doing a search for the issue i found this.

Would be really appreciated to have a solution for this ASAP.

Also would be nice to have the prompt callee option when including an external number in a ring group.

@Zigring,

The solution provided by @EINM and @PitzKey will get included in the next update.

5 Likes

I see it was implemented in 3.1.4-1

Thank you.