Ok, for anyone who is struggling with this problem and landed on this thread, here is what causing the problem and how to solve it.
Lets say this is your dialplan
[myhome]
exten => 10,hint,SIP/livingroom
exten => 11,hint,SIP/bedroom
exten => s,n,Dial(SIP/livingroom&SIP/bedroom,30,kKtT)
exten => s,n,Hangup()
exten => 10,1,Dial(SIP/livingroom,30,kKtT)
same => n,Hangup()
exten => 11,1,Dial(SIP/bedroom,30,kKtT)
same => n,Hangup()
Very simple. 2 SIP-devices. One in the livingroom and one in the bedroom. Two hints, to monitor the status of both devices and make BLF work. And if an external call comes in, it’s send to both SIP-devices.
But here is what’s going wrong. If extension 10 is called internally, Asterisk knows the extension is called. And therefore you can pick it up from another device. Most likely via the BLF-button. But when an external call comes in, Asterisk directs directly to the SIP-devices. And that means extension 10 isn’t called. Not as fas as Asterisk is concerned, anyway. So you can push that BLF-button all you want, it’s going to give a busy tone.
The solution is not to direct incoming calls directly to the SIP-devices themselves, but instead to the appropriate extension. This can be done with Local, instead of SIP.
[myhome]
exten => 10,hint,SIP/livingroom
exten => 11,hint,SIP/bedroom
exten => s,n,Dial(Local/10@myhome&Local/11@myhome,30,kKtT)
exten => s,n,Hangup()
exten => 10,1,Dial(SIP/livingroom,30,kKtT)
same => n,Hangup()
exten => 11,1,Dial(SIP/bedroom,30,kKtT)
same => n,Hangup()
Now Asterisk is going to call extension 10 and therefore knows about it. And now the call can be picked up from another location. The @contextname was mandatory in my case. Leaving it out didn’t work. Even when everything is in the same context.
This problem has been bugging me for months. I’ve been plowing through forums and everything. I did notice this was a common problem, because it’s asked a lot. But no sulotions. Now I finally managed to fix it!
I hope this solution will benefit someone.