News:

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

Main Menu

OBi110 DigitMap help

Started by wally_walrus, December 11, 2013, 09:11:41 AM

Previous topic - Next topic

wally_walrus

Hello, newbie here... I just bought and set up a new OBi110 (coming from an SPA3102, spent most of 3 days understanding the differences). Located in Canada and finally getting it to work close to what I want, but still having few issues.

I'm trying to accomplish the following:
- only using SP1 with a SIP provider (SP2 disabled)
- replace **[1-9] codes to select the output trunk with #[1-9] to increase the WAF (Wife Acceptance Factor)
- 311, 411, 611, 911 routed through PSTN (as soon as matched)
- select local numbers (friends) also routed through PSTN
- all other local numbers (10 digits) routed through VG6
- select Long Distance calls (friends) routed through VG3
- all other Long Distance calls (11 digits) routed through VG6
- all Toll Free numbers routed through VG4
- all International calls routed through VG7
- I still want to be able to force either SP1, VG[3,4,6,7] or LI by dialing #1, #3, #4, #6, #7 or #8 no matter what the number dialed

Here are my DigitMaps and OutboundcallRoutes:

Physical Interfaces -> PHONE Port -> DigitMap:
(!**5S0|[1-9]x?*(Mpli)|[1-9]S9|[1-9][0-9]S9|[3469]11|<#8>"local_friends"|**0|***|#|#1(Msp1)|#2(Msp2)|#3(Mvg3)|#4(Mvg4)|#6(Mvg6)|#7(Mvg7)|#8(Mli)|#9(Mpp)|(Mpli))

Physical Interfaces -> PHONE Port -> OutboundCallRoute:
{([1-9]x?*(Mpli)):pp},{(<#:>|[3469]11):li},{**0:aa},{***:aa2},{(<#1:>Msp1):sp1},{(<#2:>(Msp2)):sp2},{(<#3:>(Mvg3)):vg3},{(<#4:>(Mvg4)):vg4}, {(<#6:>(Mvg6)):vg6},{(<#7:>(Mvg7)):vg7},{(<#8:>(Mli)):li},{(<#9:>(Mpp)):pp},{(Mpli):pli}

Service Providers -> ITSP Profile A -> General -> DigitMap:
(*xx.|**275*x.|<#3>"LD_friends"|<#6><1>"all_other_local_numbers"|<#6>1[2-7]xx[2-9]xxxxxx|<#4>18(00|88|77|66|55)xxxxxxx|<#7>011xx.|(Mipd)|[^*#]@@.)


where:
<#8>"local_friends" is a |-separated list of 10 digit local numbers
<#3>"LD_friends" is a |-separated list of 11 digit Long Distance numbers
<#6><1>"all_other_local_numbers" is a |-separated list of 10 digit local numbers that only specifies the local area code

The setup works for the most part, exception is I had to remove #1 in front of (Msp1) in Phone Port DigitMap and OutboundCallRoute for it was appending both #1 and #7 when I was dialing 011. Hence I am not able to force the use of SP1 by using #1

I realize my setup is not the simplest by any means, and would much appreciate all the help I can get

Thanks everyone!

ianobi

I think that the problem here is that you are trying to use the Primary Line DigitMap (Msp1) to redirect numbers as required and also use it as a normal service for 011. I suggest:

User Settings > User Defined Digit Maps > User Defined Digit Map2 >
Label: ww
DigitMap: (<#1>*xx.|<#1>**275*x.|<#3>"LD_friends"|<#61>"all_other_local_numbers"|<#6>1[2-7]xx[2-9]xxxxxx|<#4>18(00|88|77|66|55)xxxxxxx|<#7>011xx.)

Physical Interfaces -> PHONE Port -> DigitMap:
(!**5S0|[1-9]x?*(Mpli)|[1-9]S9|[1-9][0-9]S9|[3469]11|<#8>"local_friends"|**0|***|#|#1(Msp1)|#2(Msp2)|#3(Mvg3)|#4(Mvg4)|#6(Mvg6)|#7(Mvg7)|#8(Mli)|#9(Mpp)|(Mww))

Physical Interfaces -> PHONE Port -> OutboundCallRoute:
{([1-9]x?*(Mpli)):pp},{(<#:>|[3469]11):li},{**0:aa},{***:aa2},{(<#1:>Msp1):sp1},{(<#2:>(Msp2)):sp2},{(<#3:>(Mvg3)):vg3},{(<#4:>(Mvg4)):vg4}, {(<#6:>(Mvg6)):vg6},{(<#7:>(Mvg7)):vg7},{(<#8:>(Mli)):li},{(<#9:>(Mpp)):pp}

Service Providers > ITSP Profile A > General > DigitMap:
(*xx.|**275*x.|1xxxxxxxxxx|<1>[2-9]xxxxxxxxx|011xx.|xx.|(Mipd)|[^*#]@@.)

This would mean that Primary Line is now irrelevant, all routing is controlled by (Mww). This should avoid the conflicts.


wally_walrus

#2
Thank you!

I did what you suggested, however when I try to force the use of SP1 (by dialing #1011xx.) I still get the SIT error tone saying "There is no route available". Any clue why?

Also *123 (SP1 voicemail) doesn't work - same SIT error tone



Cheers,

ianobi

Correct punctuation is important  :)

There are parentheses missing in your original post. I copied and pasted. If you copied and pasted from me, then the error is still there.

In the OutboundCallRoute this is a mistake {(<#1:>Msp1):sp1} it should be {(<#1:>(Msp1)):sp1}

I hope that fixes it!

wally_walrus

It did fix it indeed, thank you!

One last question... How can I reduce the dial out delay on international calls? I understand this is due to the DigitMap match timing out on the Long Interdigit Timer (10s for the OBi110). Is it just a matter of adding an S2 or such after 011xx. in both User Defined as well as Service Providers -> ITSP Profile A -> General DigitMaps? Would this work the same regardless of the forced outgoing trunk (by using #3 for example)?

Thanks again!

ianobi

Yes, <#7>011xx.S2 and 011xx.S2 will both reduce the Long Interdigit Timer to two seconds for those number formats.

The general need for timers depends on how you dial. For instance, if you always use dect handsets you would be sending a number into the OBi as a string of digits with minimal gaps, so timers don't really matter except for the final delay after the whole number has been dialled. If you were pressing keys slowly on a conventional phone, then timers matter much more.

This rule might give you a problem {(<#:>|[3469]11):li}. This part <#:> is designed to connect the Phone Port directly to the Line Port, so that you have PSTN dial tone and can dial out directly. Many of your number formats now start with # so if dialled slowly all numbers would go to PSTN. I suggest {(<##:>|[3469]11):li} so you have to dial ## to get direct access to PSTN. If you do this then # has also to be changed to ## in the Phone Port DigitMap.

There are a few other tips and tweaks that can be applied to your config, but we'll save them for another day!

wally_walrus

Thank you so much for helping! I did what you suggested and I think now everything works as expected. I mostly dial using a cordless phone (dial the number first then press Talk) so I only wanted to reduce the final delay. The only thing I added was <#1>*123 to the User Defined Digit Map to speed up voicemail retrieval

Would really appreciate if you could offer your tips and tweaks to optimize, here's my current configuration:


User Defined Digit Maps > ww
(<#1>*xx.|<#1>*123|<#1>**275*x.|<#3>"LD_friends"|<#61>"all_other_local_numbers"|<#6>1[2-7]xx[2-9]xxxxxx|<#4>18(00|88|77|66|55)xxxxxxx|<#7>011xx.S3)

Physical Interfaces > Phone Port > DigitMap:
(!**5S0|[1-9]x?*(Mpli)|[1-9]S9|[1-9][0-9]S9|[3469]11|<#8>"local_friends"|**0|***|##|#1(Msp1)|#2(Msp2)|#3(Mvg3)|#4(Mvg4)|#6(Mvg6)|#7(Mvg7)|#8(Mli)|#9(Mpp)|(Mww))

Physical Interfaces > Phone Port > OutboundCallRoute:
{([1-9]x?*(Mpli)):pp},{(<##:>|[3469]11):li},{**0:aa},{***:aa2},{(<#1:>(Msp1)):sp1},{(<#2:>(Msp2)):sp2},{(<#3:>(Mvg3)):vg3},{(<#4:>(Mvg4)):vg4}, {(<#6:>(Mvg6)):vg6},{(<#7:>(Mvg7)):vg7},{(<#8:>(Mli)):li},{(<#9:>(Mpp)):pp}

Service Providers > ITSP Profile A > General > DigitMap:
(*xx.|**275*x.|1xxxxxxxxxx|<1>[2-9]xxxxxxxxx|011xx.S3|xx.|(Mipd)|[^*#]@@.)

ianobi

#7
Your config looks pretty good to me, so we are only talking about some very fine tuning.

I would always drop these from any DigitMap: xx.|(Mipd)|[^*#]@@.

xx. matches any digit followed by any number of digits, the "catch all" rule. It adds two seconds to number processing as it is always in an "Indefinitely Matched" state.

Mipd allows you to dial IP addresses – not likely to be useful.

[^*#]@@. allows you to use sip uri calling. It allows any alphanumeric character followed by any number of alphanumeric characters, but not starting with "*" or "#". This rule also acts as "xx." as far as digits are concerned. If needed, then use @@.'@'@@.


Outbound number processing in an OBi is in most cases a two stage process. Firstly using DigitMaps to match allowed digits / number formats – what order rules are in does not matter for this first stage. The second stage compares whole numbers with each rule in the Phone Port OutboundCallRoute. It compares the number with each rule from left to right, so it's an advantage to have the most precise matching rules at the beginning of DigitMaps. See first post here:

http://www.obitalk.com/forum/index.php?topic=513.msg3001#msg3001

With all that in mind, I would make small changes like so:

Service Providers > ITSP Profile A > General > DigitMap:
(*123|**275*x.|*xx.|1xxxxxxxxxx|<1>[2-9]xxxxxxxxx|011xx.S3)


I don't know how busy your OBi110 is, but you could spread the load between sp1 and sp2. You could set up a "fake provider" on sp2 and use it for some of your Voice Gateways.


Dialling out over PSTN is set up for worst case long lines. Your OBi110 sends out DTMF tones 200ms long. I find 80ms works fine for me, but you may need to experiment to see what is reliable for you. Some users find 80ms on and 50ms off works fine. Set these at:
Physical Interfaces > LINE Port > DialDigitOnTime
Physical Interfaces > LINE Port > DialDigitOffTime

Last point for now: Don't forget that your Auto Attendant has its own DigitMap and OutboundCallRoute. You might want to set it up in a similar way to your Phone Port's DigitMap and OutboundCallRoute – not exactly the same as it has a few special rules it needs.

And we haven't even started on InboundCallRoutes or Trunk Groups...    :)

azrobert

If you always send a specific country to SP1 you could do the following.

Change <#7>011xx.S3 in DigitMap ww to:
<#1>01161xxxxxxxxxx|<#7>(01144xxxxxxxxxxx|..all other countries)

There are 2 benefits doing it this way.
You don't have to dial "#1" to force the number to SP1.
When you match on the full number (no x.) there is zero delay.

If you call a large number of countries this might not be practical (DigitMap too large), you could combine the two techniques:
<#1>01161xxxxxxxxxx|<#7>011xx.S3

If you call different cities within a country that have different length numbers just include the city code in the digit map rules.

I don't use the technique of prefixing the dialed number with **n, so I hope I didn't make a mistake. The last time I made a suggestion using this technique it had a bug.

ianobi

In OBiLAND there's always more than one way to configure stuff...   :)

wally_walrus

Your help is invaluable!

Isn't there a duplication match in User Defined Digit Map and Service Providers > ITSP Profile A > General > DigitMap when dialing *123? I thought so, but when I removed the <#1>*123 from ITSP profile A then *123 wasn't working anymore

Puzzled...

PS: Saw your subsequent post while writing mine... I don't intend to use SP1 for more then acting as DID and maybe occasionally when any other VGx isn't working


ianobi

*123 needs to be in the Phone Port DigitMap. (Mww) is only in the Phone Port DigitMap. #1(Msp1) only allows for #1*123 to be dialled in the Phone Port DigitMap.  We also transform *123 in (Mww) by prepending #1  therefore:

#1*123 needs to be in the Phone Port OutboundCallRoute. {(<#1:>(Msp1)):sp1} removes the #1 then sends *123 to sp1. (Although the less specific #1*xx. also works)

In this case ITSP Profile A > General > DigitMap = (Msp1)

wally_walrus

#12
I am getting a little lost here... let's start fresh, here's my requirements:

- only use SP1 with a SIP account (SP2 disabled, no Google Voice account) - working
- replace **[1-9] codes to select the output route with #[1-9] to increase the WAF (Wife Acceptance Factor) - working
- 311, 411, 611, 911 routed through PSTN (as soon as matched) - working
- select local numbers (friends) routed through PSTN - working
- all other local numbers (10 digits) routed through VG6 - working
- select Long Distance calls (friends) routed through VG3 - working
- all other Long Distance calls (11 digits) routed through VG6 - working
- all Toll Free numbers routed through VG4 - working
- all International calls routed through VG7 - working
- I still want to be able to force either SP1, VG[3,4,6,7] or LI by prefixing ANY number with #1, #3, #4, #6, #7 or #8 respectively - working
- * codes (in particular *123, **275* and a few others) should work for SP1 mostly - not sure it's optimal


Below is my current config, please note I had to have <#1>*123 and <#1>**275*x. in User Defined DigitMap, as well as *123 and **275*x. in Service Providers -> ITSP Profile A -> General -> DigitMap in order for the * codes to go to SP1. This is the duplication I was talking about, is it really needed and if so why? Would * codes work if I prefix them with #3 so instead of SP1 they would be directed to VG3?

Edit: Tested star codes prefixed with #3 and it didn't work. Is there a way to achieve this?
Edit 2: Replaced VG3 default (xx.) with (XX.) and that worked! So I think I have everything working the way I want it now!

Thanks a million ianobi!!!


Thanks again!



User Settings -> User Defined DigitMap: ww
(<#1>*xx.|<#1>*123|<#1>**275*x.|<#3>LD_friends|<#8>local_friends|<#61>local_others|<#6>1[2-7]xx[2-9]xxxxxx|<#4>18(00|88|77|66|55)xxxxxxx|<#7>011xx.S3)

Physical Interfaces -> PHONE Port -> DigitMap:
(!**5S0|[1-9]x?*(Mpli)|[1-9]S9|[1-9][0-9]S9|[3469]11|**0|***|##|#1(Msp1)|#2(Msp2)|#3(Mvg3)|#4(Mvg4)|#6(Mvg6)|#7(Mvg7)|#8(Mli)|#9(Mpp)|(Mww))

Physical Interfaces -> PHONE Port -> OutboundCallRoute:
{([1-9]x?*(Mpli)):pp},{(<##:>|[3469]11):li},{**0:aa},{***:aa2},{(<#1:>(Msp1)):sp1},{(<#2:>(Msp2)):sp2},{(<#3:>(Mvg3)):vg3},{(<#4:>(Mvg4)):vg4}, {(<#6:>(Mvg6)):vg6},{(<#7:>(Mvg7)):vg7},{(<#8:>(Mli)):li},{(<#9:>(Mpp)):pp}

Service Providers -> ITSP Profile A -> General -> DigitMap:
(*xx.|*123|**275*x.|1xxxxxxxxxx|011xx.S3)

ianobi

My turn to be confused. Is the provider on vg3 the same as the provider on sp1? If so, then I'm not sure why have a vg3.

In (Mww) do the first three rules now prepend #3 instead of #1  ?

Interesting use of XX. instead of xx. Most of us forget that X includes the *

We did not speak about the digit maps for the Voice Gateways. The same applies - if they are used in the Phone Port DigitMap, then matching exactly does matter. However, if all the number matching is done in (Mww) and the vg digitmaps are only used in the Phone Port OutboundCallRoute, then XX. is fine.

I think that the hardest concept to grasp with an OBi is this two-stage processing of numbers. It's a particular problem if you are used to a different ATA. As you dial each digit from the phone, the Phone Port DigitMap checks for the best possible match after each digit until its interdigit timer times out. If it's an allowed number, then it passes this number to the Phone Port OutboundCallRoute for routing. (I have left out the transforming part.)

Anyhow, it's been a good OBi config workout for me! I'm sure you will refine further as you find what else OBi's can do.

wally_walrus

SP1 is different from VG3...

- SP1 is mostly used as a DID provider, with the occasional outgoing call forced through SP1 by MANUALLY prefixing the number with #1. Also *-codes will mostly be used to access features on SP1 (*123 - voicemail, **275 - SIP broker calls, *72 / *73 - activate / deactivate Call Treatments, etc)

- VG3 is an outgoing provider ONLY, but it also has some features accessible through *-codes so I'd like to be able to MANUALLY dial #3*30 to force the call through VG3 and use a PSTN trunk (for example)

So... what about the duplication, is it required?


Thanks

ianobi

We are back to the two-stage thing again:

Stage 1: You dial *123. The only place that this can be matched in the Phone Port DigitMap is using rule <#1>*123 in (Mww). It is matched, then transformed by prepending #1, so now the number is #1*123.

Stage 2: #1*123 is now offered to the Phone Port OutboundCallRoute. #1*123 is compared to every rule in the Phone Port OutboundCallRoute and can only be matched by this rule {(<#1:>(Msp1)):sp1} which accepts any number that starts #1 and is within (Msp1), so #1*123 is matched. Then this part of the rule <#1:> removes the #1 before it is sent to sp1.

Therefore the *123 rule needs to be in two different digitmaps.


When forcing through vg3 you use #3(Mvg3) in Stage 1 and you use {(<#3:>(Mvg3)):vg3} in Stage 2. In effect you are using the same XX. rule twice in (Mvg3).


All numbers need to be "allowed" in the Phone Port DigitMap and the Phone Port OutboundCallRoute. 911 is a good example it is used in Stage 1 to be "allowed" and in Stage 2 to be routed.


I may not be the best at explaining. Posts by RonR and azrobert have both put the same idea over in various posts. It may look over complicated, but this two-stage thing makes the OBi very powerful and processing, transforming and routing numbers.


Friday evening now where I live - beer time - I feel I deserve it   :D

wally_walrus

Beer was absolutely deserved! Wish I could send you a pack :)

Your explanation makes it clear, I guess what confused me was that I could have had {(<#1:>(Mww)):sp1} instead of {(<#1:>(Msp1)):sp1} in the OutboundCallRoute, so then I wouldn't have needed the *-codes in Msp1. This is probably to allow for greater flexibility, it does introduce an element of confusion for new users but totally worth it.


Cheers!

ianobi

The (Mww) is an unusual solution, but you had an unusual request - using #7011 (by prepending the #7) and using #1011 (by direct dialling #1011).

To achieve this my solution was to remove (Mpli) from your Phone Port DigitMap and replace it with (Mww). Also to remove {(Mpli):pli} from your Phone Port OutboundCallRoute. In your original config the following was true and was causing conflicts:

ITSP Profile A > General > DigitMap = (Msp1) = (Mpli)

Normally, having an (Mpli) is quite useful for routing numbers around, but in your case it was a problem. My solution was to use (Mww) as a kind of telephone exchange directing calls to where they should be.

If you intend to use OBiON /OBiAPP with cell phones or softphones etc then you may wish to start looking at InboundCallRoutes - I reckon you should be OK with all that now!

It's enough to drive you to beer   :)