News:

On Tuesday September 6th the forum will be down for maintenance from 9:30 PM to 11:59 PM PDT

Main Menu

DigitMap & OutboundCallRoute Help

Started by scott818, June 28, 2017, 01:35:44 PM

Previous topic - Next topic

scott818

I would like to configure my OBi202 so that the following occurs when a user picks up the telephone to make a call:


  • User is prompted with a dial tone
  • User enters 10-digit number (A)
  • User is then prompted with a second dial tone
  • User enters another 10-digit number (B)

After the second 10-digit number is entered, the OutboundCallRoute rule is called. In OutboundCallRoute I want to be able to reference both entered numbers (A) and (B) separately (i.e. $1 = number A, $2 = number B).

Can this be done?

drgeoff

My understanding of the relevant part of the Admin Guide is that the 20 digits are applied to the OutboundCallRoute as a single dialled number.  But so far I gave not grasped how that would prohibit whatever you are trying to do.  Can you elucidate?

scott818

Quote from: drgeoff on June 28, 2017, 02:22:38 PM
My understanding of the relevant part of the Admin Guide is that the 20 digits are applied to the OutboundCallRoute as a single dialled number.  But so far I gave not grasped how that would prohibit whatever you are trying to do.  Can you elucidate?

I need each number to be able to be referenced separately in OutboundCallRoute - not as one 20 digit number.

drgeoff

Quote from: scott818 on June 28, 2017, 03:00:04 PM
Quote from: drgeoff on June 28, 2017, 02:22:38 PM
My understanding of the relevant part of the Admin Guide is that the 20 digits are applied to the OutboundCallRoute as a single dialled number.  But so far I gave not grasped how that would prohibit whatever you are trying to do.  Can you elucidate?

I need each number to be able to be referenced separately in OutboundCallRoute - not as one 20 digit number.
I'll try again.

The OutboundCallRoute is not an end in itself.  You have not explained why you need, or think you need, the two 10 digit numbers 'to be referenced separately'.

scott818

Quote from: drgeoff on June 28, 2017, 03:34:51 PM
The OutboundCallRoute is not an end in itself.  You have not explained why you need, or think you need, the two 10 digit numbers 'to be referenced separately'.

Well let's say for example I wanted to ring number A and number B simultaneously. How could I "parse" number A and number B separately from OutboundCallRoute so I can do something like: SP1(number_A), SP1(number_B)? Is it even possible?

drgeoff

Quote from: scott818 on June 28, 2017, 04:20:11 PM
Quote from: drgeoff on June 28, 2017, 03:34:51 PM
The OutboundCallRoute is not an end in itself.  You have not explained why you need, or think you need, the two 10 digit numbers 'to be referenced separately'.

Well let's say for example I wanted to ring number A and number B simultaneously. How could I "parse" number A and number B separately from OutboundCallRoute so I can do something like: SP1(number_A), SP1(number_B)? Is it even possible?
At the risk of someone else coming along and (metaphorically) chopping my head off, I'll stick my neck out and say that is not possible.

You can dial a first call and while it is active use a hook-flash and dial a second number. Hook flash again to have a 3-way call.

azrobert

There is a hack you can use that "should" do what you want.  The hack is looping a call out an SP trunk and back to the same device. You would route a 20 digit number out SP3 and SP4, looping it back to itself. In the SP3 inbound route you would send the 1st 10 digits to SP1 and in SP4 the 2nd 10 digits. This would require using OBi Expert to define a dummy trunk on SP3 and SP4, plus code to the digit map and out/inbound routes. I tested this looping a while ago and not for outbound calls, so I can't guarantee this will work. Let me know if you want to try this and I'll show you how.

Note: After one of the calls is answered the other call will end. You won't get a 3-way.

scott818

Quote from: azrobert on June 29, 2017, 12:09:19 PM
There is a hack you can use that "should" do what you want.  The hack is looping a call out an SP trunk and back to the same device. You would route a 20 digit number out SP3 and SP4, looping it back to itself. In the SP3 inbound route you would send the 1st 10 digits to SP1 and in SP4 the 2nd 10 digits. This would require using OBi Expert to define a dummy trunk on SP3 and SP4, plus code to the digit map and out/inbound routes. I tested this looping a while ago and not for outbound calls, so I can't guarantee this will work. Let me know if you want to try this and I'll show you how.

Yes! I would love to give that a try.

Quote from: azrobert on June 29, 2017, 12:09:19 PM
Note: After one of the calls is answered the other call will end. You won't get a 3-way.

That's fine. That's exactly the behavior that I want.

azrobert

Service Providers -> ITSP Profile C SIP -> ProxyServer: 127.0.0.1
Service Providers -> ITSP Profile C SIP -> ProxyServerPort: 5063
Voice Services -> SP3 Service -> AuthUserName: loop1
Voice Services -> SP3 Service -> X_RegisterEnable: unchecked
Voice Services -> SP3 Service -> X_ServProvProfile: C
Voice Services -> SP3 Service -> X_InboundCallRoute:
{>(xxxxxxxxxx<xxxxxxxxxx:>):sp1},{sp1(6235941000)}

Service Providers -> ITSP Profile D SIP -> ProxyServer: 127.0.0.1
Service Providers -> ITSP Profile D SIP -> ProxyServerPort: 5062
Voice Services -> SP4 Service -> AuthUserName: loop2
Voice Services -> SP4 Service -> X_RegisterEnable: unchecked
Voice Services -> SP4 Service -> X_ServProvProfile: D
Voice Services -> SP4 Service -> X_InboundCallRoute:
{>(<xxxxxxxxxx:>xxxxxxxxxx):sp1},{sp1(6235941000)}

Physical Interfaces -> Phone1 or Phone2 Port -> DigitMap
Add after the beginning parenthesis: xxxxxxxxxxxxxxxxxxxx|

Physical Interfaces -> Phone1 or Phone2 Port
Add to the beginning of the OutboundCallRoute:
{(xxxxxxxxxxxxxxxxxxxx):sp3,sp4},

127.0.0.1 is a loopback address.
Calls out SP3 will loopback to SP4 and SP4 will loopback on SP3.
There is a reason I did this. If you want to know why, ask.
The call leg coming into SP3 will have the last 10 digits removed before routing to SP1.
The call leg coming into SP4 will have the first 10 digits removed before routing to SP1.

623-594-1000 is the number for Cox Communications and is for diagnostics. If for some reason the call doesn't match the inbound call route rule, it will be routed to Cox.

drgeoff

Quote from: azrobert on June 29, 2017, 09:16:20 PM
Physical Interfaces -> Phone1 or Phone2 Port
Add to the beginning of the OutboundCallRoute:
{(xxxxxxxxxxxxxxxxxxxx):sp3,sp4},
That is interesting because the Admin Guide says (with my emphasis):
"Outbound Call Route Configuration

Every endpoint has an OutboundCallRoute parameter in the OBi device configuration. It tells the device where to send the call when the endpoint attempts to make a call. Endpoints may call each other or an outside number using one of the trunks. The OutboundCallRoute syntaxes are almost identical to those of the InboundCallRoute; the differences are mainly in the implied value when an optional field is omitted, no caller objects and one and only one terminal object per terminal-list in an OutboundCallRoute. Forking is not supported when routing outbound calls."

azrobert

I just tried outbound forking on an OBi110 and it worked.

drgeoff

Quote from: azrobert on June 30, 2017, 08:17:22 AM
I just tried outbound forking on an OBi110 and it worked.
That's useful to know!

scott818

#12
azrobert, thank you for posting the configuration. I will be playing around with it later on. I want to ask a related question.

Is it possible to take the first 10-digits of a 20-digit entered number and use that as the CID and then take the last 10-digits and use that as the destination number?

I know you can do something like the following in OutboundCallRoute:

{(xxxxxxxxxxxxxxxxxxxx):sp1(2125551212 > 8005551212)}

Which will set 2125551212 as the CID and call 8005551212 with the spoofed caller ID. I just don't know how to do it dynamically by parsing/splitting the 20-digits the user dials. In other words, taking the first 10-digits and using that as the CID and then taking the last 10-digits and using that as the destination.

azrobert

You can use the same hack to also accomplish spoofing. Add the full dialed number to the CallerID when you initially send the call. On the loopback remove the correct digits.

Outbound Route:
{(xxxxxxxxxxxxxxxxxxxx):sp3($2>$2)}

Inbound Route:
{(xxxxxxxxxx<xxxxxxxxxx:>)>(<xxxxxxxxxx:>xxxxxxxxxx):sp1}

Service Providers -> ITSP Profile C SIP -> X_SpoofCallerID: Checked

I did NOT fully test this setup.
I did test adding the dialed number to the CallerID.
It failed on an OBi110, but worked on an OBi200.
Your service provider must support spoofing for this to work.
GoogleVoice doesn't support spoofing.
If you want both the forking and spoofing functions, you will need to use a prefix to differentiate the 2 functions.

scott818

Quote from: azrobert on June 30, 2017, 03:32:54 PM
You can use the same hack to also accomplish spoofing. Add the full dialed number to the CallerID when you initially send the call. On the loopback remove the correct digits.

Outbound Route:
{(xxxxxxxxxxxxxxxxxxxx):sp3($2>$2)}

Inbound Route:
{(xxxxxxxxxx<xxxxxxxxxx:>)>(<xxxxxxxxxx:>xxxxxxxxxx):sp1}

Service Providers -> ITSP Profile C SIP -> X_SpoofCallerID: Checked

Can it be done with only one dummy profile? Or does there need to be two?

azrobert

I just tried a quick test on my OBi200 and looping a call on a single dummy trunk worked.
This is what I did:

Defined a speed dial: sp4(1@127.0.0.1:5063)

SP4 Inbound Route included: {>1:aa}

I then dialed the speed dial number and was connected to the Auto Attendant.

When I was previously testing looping (probably over a year ago) my OBi200 worked with a single trunk, but my OBi110 failed. The call history showed an error message something like "Loop Detected" and the call failed, so the firmware had code checking for a loop. I had to use 2 trunks on the OBi110 to get looping to work. I didn't know if OBiHai included this code into the OBi2xx until I just tested. I don't know if they will add this test to the OBi2xx in the future.

scott818

Thanks again, azrobert. I was able to configure just one dummy loopback profile and everything seems to work perfectly. I configured the dummy profile on SP4. At first calls wouldn't go through when I configured ProxyServerPort to 5062. When I changed the value to 5063, things started to work. Why does it have to be set to port 5063?

azrobert

5063 is the default SP4 port number defined by X_UserAgentPort.

In my Reply#8 definition SP4 looped back to SP3 and SP3 looped back to SP4. I wasn't 100% sure it would work looping back to the same SP because of the OBi110 problem I described in Reply#15.