I had you enable X_SpoofCallerID to pass CallerID. "ui=$1" is another method to pass CalledID on a bridged call. "ui" is UserID and $1 is an OBi variable that contains the CallerID on an inbound call. This was a wild guess on solving your problem and probably won't help.
In the U.S. on a PSTN line the CallerID is transmitted between the 1st and 2nd ring. The OBi needs the RingDelay to pause processing and give it enough time to receive the CallerID. For example if you are sending a call to the Auto Attendant based on CallerID you need to set the RingDelay high enough, otherwise the OBi will not see the CallerID in time to process the call properly.
I believe (not positive) if you are just sending the call to the Phone Port you can set the RingDelay to zero (it still has a delay) and the CallerID might not be displayed until the 2nd ring. I don't know how this process works with a bridged call to Astterisk.
Anyway, I have my RingDelay set to 3 seconds and it works fine. I had it set around 2.5 seconds ( can't remember exactly), but the OBi stopped working correctly after I installed new firmware. It seems odd that you have to set yours so high.