Turns out that this is pretty easy to implement in SAIL. We'll probably integrate it properly in a near release but you can do it now with a custom app. One of the guys at our UK Disti has been playing with it so here's an example he sent me
In the extension asterisk tab you have to add a couple of lines for each phone you want to enable the feature for
[4009]
type=friend
username=Ext4009
secret=xxxxxx
mailbox=
host=dynamic
qualify=3000
canreinvite=no
context=internal
callerid="Ext4009" <4009>
pickupgroup=1
callgroup=1
call-limit=3
subscribecontext=extensions
disallow=all
allow=alaw
allow=ulaw
; add these two lines
cc_agent_policy=generic
cc_monitor_policy=generic
[5008]
type=friend
username=Ext5058
secret=xxxxxxx
mailbox=
host=dynamic
qualify=3000
transport=tcp,udp
context=internal
call-limit=99
callerid="Ext5058" <5058>
subscribecontext=extensions
canreinvite=no
pickupgroup=1
callgroup=1
disallow=all
allow=g722
allow=alaw
allow=ulaw
; add these two
cc_agent_policy=generic
cc_monitor_policy=generic
Now create an app (with a span of internal) to action the CCSS
exten => 30,1,CallCompletionRequest
exten => 30,n,Hangup
exten => 31,1,CallCompletionCancel
exten => 31,n,Hangup
5058 dials 4009, 4009 is already on call and rejects the call or If call waiting is turned off 5058 will automatically get busy tone. 5058 then dials 30 (you can change this to whatever you fancy) to activate CCSS. As soon as 4009 hangs up the call, Asterisk dials 5058 and then 4009 to achieve call completion. If you get tired of waiting do 31 to cancel the feature
Turns out it still works even if your initial call dropped to Voicemail (just hang-up and dial 30). Looks pretty cool on the few tests we've done. Give it a go and let me know how you get on
S