Feature code to seamlessly move active call between a user's multiple devices

Spent some time talking on the phone yesterday with @kendalldever15 where we discussed how one might setup a way of transferring a call seamlessly between a single user’s multiple devices. So if I’m talking on my desk phone, and need to continue the call on my mobile client, I can press a button and go.

Recalling that @PitzKey shared this clever snippet a few months ago, I spent a few minutes this morning on #FridayFun creating dialplan for this purpose.

So this is a bit rough, but pretty much works as intended. If I dial *37 from one of my idle extensions, it will grab any call already in progress from any of my other extensions. Tested with PJSIP, but should work for chan_sip as well. I tested using Sangoma Phone desktop and a desk phone. There’s even a hint so you can create a BLF of the format *37<ext#> and use the BLF as a one touch button to seize the active call.

There is one major problem at the moment, perhaps there’s someone who can identify what’s going on. I have a conversation in progress, I dial *37 and the call is moved exactly as expected. I then attempt to move the call again by dialing *37 from another of my extensions, and all channels instantly drop. Testing with Asterisk 20.5.2.

4 Likes

I tried reproducing this, I was able to do 4 times between two devices. I did see tho that the hangup extension is getting called incorrectly.

Would you mind sharing a calltrace? (note: many errors don’t contain the call ID, so you’ll likely need to tail -f the full file and copy/paste)

Found the issue yesterday. Issue was related to using an exten of _. instead of _X.. We all know it’s sloppy practice, but as far as I can recall, this is the first time I’ve gotten burned in 15 years of doing dialplan.

Gist is updated and ready for wider testing

1 Like