News:

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

Main Menu

Flow chart of outbound call

Started by dbdoshi, April 29, 2019, 01:15:34 PM

Previous topic - Next topic

dbdoshi

I looked at OBI a while back, but my setup worked at that time and so I never bothered to fully understand this. I have OBI 202. SP1 is GV & SP2 is CC. No line into the USB slot. One phone is hooked into Slot 1 in the 202.

SP1 handles all US and international calls. SP2 handles 911/933 and it is the main (and the only line) to receive incoming calls. GV forwards to CC on GV website. All works with my setup.

My understanding of outbound logic is:

1. I make a call, say 911 (PN).
2. OBI looks at the Phone's DigitMap (DM).
3. The PN is validated against this DM and optionally modified.
4. If a rule is matched, the processing of this call continues. If no rule is matched in DM, the call is blocked/dropped and the processing stops.
5. Assuming the DM check is good to go, the PN (original or modified) is matched against the Phone's OutboundCallRoute (OCR).
6. At this point, a rule needs to be present in OCR with something like "{(<**2:>(Msp2)):sp2}" so that ITSB Profile B is used with SP2's credentials to route this call.
-- Because the above rule has "(Msp2)", OBI will validate the PN against ITSB Profile B's DigitMap. If a match is found, call will be send to SP2 for processing. if no match is found, the call will be dropped.
-- if the above rule was "{(<**2:>):sp2}" instead, the ITSB Profile B's DM is NOT CHECKED and the phone call is "forced" to go out via SP2?

Am I correct in my understand?

I also have some additional questions:

1. Am I correct in assuming that DM (of phone or any ITSB) DOES NOT control routing of calls (meaning, deciding which terminal should handle the outgoing call)? The responsibility of that is with the phone's OCR and only with OCR... DMs are only responsible for validation and optionally modifying input phone numbers received by them...

2. My assumption that the phone's DM is verified BEFORE the phone's OCR is processed.. Is that correct?

3. The default DM of Phone has an entry "**2(Msp2)" and the default OCR of Phone has an entry of "{(<**2:>(Msp2)):sp2}". I am confused by this... Shouldn't the modification of the phone number be done in the DM and not in the OCR? Meaning, shouldn't  the "<**2:>" be done in DM and not in OCR?

4. What exactly is the function of setting a "primary line"? My understanding:
If no match is found in the phone's OCR, the SP designated as primary line is used for outgoing call. If my understanding is correct, is the primary line's DM (say, SP1 is the primary line. So SP1's DM) used for validation of the phone number? Or SP1's DM check is skipped and the call is forced out via SP1?

drgeoff

Your understanding of outbound logic is correct.

In your additional questions.

#1.  Your understanding is correct.

#2.  Your understanding is correct.

#3. The function of that entry is to remove the **2.  The **2 is used to route the call to the desired Service Provider but the **2 should not be sent to the SP.  Clearly if the **2 were removed before the OutboundCallRoute stage it could not control the routeing.

#4.  The only digit map which is unconditionally used is the phone port one.  No other digit map will be used unless it is explicitly referenced (directly or indirectly) in a digit map or OutboundCallRoute.

azrobert

#2
The Primary Line (PL) specifies the default outbound SP when no "**n" prefix is dialed.

The Phone DM validates the dialed number. The last rule "(Mpli)" includes the PL ITSP DM rules.

The last OCR rule "{(Mpli):pli}" will use the PL DM and on a match will route the call to the PL.

"{(<**2:>(Msp2)):sp2}" is used when **2 prefix is dialed to override the PL. "<**2:>" will strip the prefix before sending the call to SP2.

"{(<**2:>):sp2}" is ONLY checking for "**2", so it would not work. You would have to do "{(<**2:>(xx.)):sp2}" to check for a number. This is unnecessary because (Msp2) contains rule "xx.".

1. Correct, but there is a technique where the DM can determine which SP is used. Say you want international calls be routed to SP2. You can use this rule in the PL DM: "<**2>011xx.".
When you dial an international# the DM will prefix it with "**2". Now rule "{(<**2:>(Msp2)):sp2}" will route the call to SP2.

2. Correct

3. No. You dial the "**2". The OCR strips it before routing to SP2. If the DM had the rule, it would be stripped when the phone DM validated the number. The OCR would not see the prefix.

4. I explained this above.

dbdoshi

#3
Thanks guys. Still digesting, but getting the hang of it. Might come back with a few more Qs.

So, the functions of phone's OCR (in the chronological order) are:

1. Decide which terminal will handle the outgoing call based on the ORIGINAL number it received. Also, no more routing decisions can be made after this step completes.
2. Modify the phone number if need be. (This means that phone number modifications can be done BOTH in DM & OCR)
3. Send this original/modified number to the correct terminal for outbound delivery.

dbdoshi

Quote from: azrobert on April 29, 2019, 02:49:54 PM

1. Correct, but there is a technique where the DM can determine which SP is used. Say you want international calls be routed to SP2. You can use this rule in the PL DM: "<**2>011xx.".
When you dial an international# the DM will prefix it with "**2". Now rule "{(<**2:>(Msp2)):sp2}" will route the call to SP2.


Nice. Elegant way to accomplish routing.

One more question. The phone's DM has an entry of "**2(Msp2)" as an example. This means that no modifications are done to the phone number with this entry (it can still be done by Msp2). But, in either case, you have to dial "**2" to target SP2 for routing. I am assuming that most folks don't want and actually don't prepend "**n" before every number they dial manually. So, the "use rate" of PL's DM should be much more than the "use rate" of a ITSB's DM. Does that make logical sense?

azrobert

The OCR rules are processed from left to right. When a rule matches the MODIFIED (if modified in the phone DM) dialed number the call is routed to the specified SP. OCR processing stops on a match and all rules to the right are ignored.

Normally, no more routing decisions are made after the OCR. Trunk Groups are a different animal. TG's are used when you have more than 1 provider. You can use the 2nd provider as automatic backup if a call fails. You can also use TG's just for routing.

azrobert

#6
I'm not exactly sure what you are asking, so I'll give you an example.

Msp2 contains rule "<1>[2-9]xxxxxxxxx". This will prefix a 10 digit number with a "1".

When you dial "**28005551212", rule "**2(Msp2)" will validate it and the above rule will match the dialed number. The number will be modified and the OCR will see "**218005551212".

Edit:
"**2(Msp2)" is the equivalent of each rule in Msp2 having an "**2" prefix.

dbdoshi

Quote from: azrobert on April 29, 2019, 04:31:32 PM
I'm not exactly sure what you are asking, so I'll give you an example.

Msp2 contains rule "<1>[2-9]xxxxxxxxx". This will prefix a 10 digit number with a "1".

When you dial "**28005551212", rule "**2(Msp2)" will validate it and the above rule will match the dialed number. The number will be modified and the OCR will see "**218005551212".

Edit:
"**2(Msp2)" is the equivalent of each rule in Msp2 having an "**2" prefix.


Got it. Thanks for your lucid explanation and time on a working day!