@azrobert:
thank you very much for your quick response. Really appreciate for your help. I will give it a try and let you if it works. I may bug you more if I have encountered any issues.
update:
Looks like everything works. I made some changes from your suggestions. Since everything was working for freepbx, I only changed the ip address from the box of freepbx to that of asterisk. In asterisk, I added the section of trunk taking from the freepbx to the sip.conf. It is essentially the same as yours except the username and password was their. I have to use "host=dynamic" rather than to specify the obi110's ip address.
In the extensions.conf. I added the dial-out statement for the obi trunk. I have also added a dial in section as:
[obi-in]
exten => 8585551212,1,Dial(SIP/101&SIP/102&SIP/103&SIP/104,60,tr) ; phone must be registered
exten => 8585551212,2,Hangup
For the obi, the InboundCallRoute: should be sp2(8585551212), the same as for freepbx.
Thank you for your help. Once done, it is actually pretty simple, but I will need to test more.