Single stage dialing involves a target OBi number, a number to be dialed from the target OBi, and a particular trunk to use on the target OBi. Originating the call from anything other than an OBi or OBiON app is problematic as there's no way to specify these three components and have them passed though Google Voice, a SIP provider, or the PSTN in a single stage process. Even OBi(ON) to OBi takes a limited approach of only supporting calling out the default (PrimaryLine) trunk (reducing the problem to two components).
The following is not from any documentation and is speculation on my as to what's happening internally.
The OBiTALK Service protocol supports passing a number to be called as data piggy-backed on the OBi(ON) to OBi call. When an incoming call arrives at the OBiTALK Service trunk, the CallerID of the originating OBi(ON) is available as well as the number to be called. These can be evaluated in the InboundCallRoute as:
{(CallerID)>(NumberToCall):terminal}
allowing single stage dialing to ensue. Calls arriving from Google Voice, SIP provider, or the PSTN have no way to convey a number to call, so two stage dialing is the only option.
The OBiTALK Service terminal appears to accept input in two formats:
1. ob200123456 : which initiates a simple OBi(ON) to OBi call with no number to call data.
2. <Speed Dial> * NumberToCall : which initiates an OBi(ON) to OBi call using the OBi number contained in <Speed Dial> with NumberToCall passed as data.
Quote from: freewilly on June 21, 2011, 12:06:37 PM
I would like to setup a single stage dialing as
Sip client -> Asterisk -> Obi110 #1 -> Obi110 #2 -> pstn
Is it possible?
I don't believe so. What can you dial at the Sip client that will be passed through Asterisk to OBi110 #1 such that OBi110 #1 can determine that you want OBi110 #2 called with a particular number to dial out the PSTN? The major hurdle is the Sip client -> Asterisk -> Obi110 #1 path.