SR140 Inbound Call Routing
Acronyms
Acronym | Description |
---|---|
API | Application Programming Interface. |
BFV | Boston Fax and Voice API. |
DID | Direct Inward Dialing |
SDK | Software Development Kit |
SIP | Session Initiation Protocol |
Product Issue Description
The OpenText RightFax product has several routing options that are tied to the port that a call rings in on. Using the RightFax product, inbound calls can be routed to specific ports of an analog board based on the called number information associated with the call.
In the current implementation of the Dialogic Brooktrout SR140 SIP product, inbound SIP calls are always routed to the first available SR140 channel and there’s no ability to route the call to a specific SR140 channel based on the called number or any other information associated with the call.
OpenText has requested the Dialogic Brooktrout SR140 SIP Product to provide support for Inbound SIP Call routing so that their RightFax product can route inbound SIP calls in a manner similar to the way it routes analog calls.
Overall Feature Description
Feature Request FR19312 will implement support for inbound SIP call routing on the SR140 product that will allow inbound SIP calls to be routed to specific SR140 channels based on information associated with each call. In order to achieve this functionality, a new, optional, parameter will be introduced to the callctrl.cfg configuration file. This new parameter will allow the user to specify a separate routing table configuration file that contains one or more routing rules. Using this new functionality, inbound SIP calls will be able to be routed to specific SR140 channels based on information associated with each call such as the called address and/or calling address.
Assumptions
- None
Feature Limitations, Caveats, or Restrictions
- The Dialogic Brooktrout Configuration utility (ConfigTool.exe) may not be updated to provide support for the new parameter in the callctrl.cfg configuration file or the routing rules specified in the new routing table configuration file introduced for FR19312.
Customer Use-Case
The callctrl.cfg configuration file is populated with the following information:
...
[module.41]
model=SR140
virtual=1
exists=1
vb_firm=C:\Brooktrout\Boston\fw\bostvb.dll
channels=8
[module.41/host_cc.1]
host_module=1
number_of_channels=8
[host_module.1]
module_library=brktsip.dll
enabled=true
routing_table=C:\Brooktrout\Boston\Config\routing.cfg
The Routing Table configuration file, routing.cfg, referenced by the routing_table parameter above is populated with the following information:
[routing.1]
channel=0
called_address="1001"
calling_address=""
[routing.2]
channel=1
called_address="2xxx"
calling_address=""
[routing.3]
channel=2
called_address="300[0-4]"
calling_address=""
[routing.4]
channel=3
called_address="4xxx"
calling_address="9732851832"
[routing.5]
channel=4-5
called_address=""
calling_address="9732851832"
NOTE: The specific keywords and syntax that will be used to define the SR140 inbound call routing rules are not defined at this time and will be defined in the High Level Design document for this feature. The example above is used for illustrative purposes and the final keywords and syntax are subject to change from what is presented here.
Once the Boston Host Service is initialized, a BFV application can wait for inbound calls on the 8 SR140 channels. The following table illustrates how inbound calls would be routed based on the routing table above and the information contained in each call:
Inbound Call Information | SR140 Channel Call Routed To | Comments |
---|---|---|
Called Address: 1001 Calling Address: 7814499009 | 0 | The call is routed to SR140 channel 0 since it matches the called address specified in Routing Rule #1. Since nothing is specified for the calling address in Routing Rule #1, the calling address information for an inbound call is ignored and isn’t used to determine if the call matches this routing rule . |
Called Address: 2345 Calling Address: 7814499009 | 1 | The call is routed to SR140 channel 1 since it matches the called address specified in Routing Rule #2. The ‘x’ characters specified in the called_address for this routing rule act as wildcard characters and therefore Routing Rule #2 will match any calls whose called address is in the range from 2000 to 2999. |
Called Address: 3002 Calling Address: 7814499009 | 2 | The call is routed to SR140 channel 2 since it matches the called address specified in Routing Rule #3. The “[0-4]” specified in the called_address for this routing rule indicates a range of values a digit can have (in this case, 0, 1, 2, 3 or 4). |
Called Address: 4123 Calling Address: 9732851832 | 3 | The call is routed to SR140 channel 3 since it matches both the called and calling addresses specified in Routing Rule #4. It should be noted that the called and calling addresses for this call also match Routing Rule #5. However, since this call matches both Routing Rules #4 and #5, the call will be directed to an available channel associated with the highest priority routing rule (i.e. #4). |
Called Address: 5000 Calling Address: 9732851832 | 4 or 5 | The call is routed to SR140 channel 4 or 5 (whichever is available first) since it matches the calling address specified in Routing Rule #5. |
Called Address: 5000 Calling Address: 7814499009 | 6 or 7 | The call is routed to SR140 channel 6 or 7 (whichever is available first) since it fails to match any of the specified Routing Rules. Any inbound calls that don’t match any of the routing rules will be routed to the first available SR140 channel (in this case 6 or 7) not assigned to a routing rule. |
Requirements:
RID# | Description |
1 | FR19312 (SR140 Inbound Call Routing) should be targeted for deployment on the Dialogic Brooktrout SDK 6.7.5 release. |
---|---|
2 | FR19312 feature support shall be available on all versions of operating systems supported by the Dialogic Brooktrout SDK. |
3 | FR19312 functionality shall only be supported on the SR140 product. |
4 | FR19312 functionality shall only be supported on the SIP IP Call Control protocol. |
5 | FR19312 functionality shall be optional and will be disabled by default. |
6 | FR19312 functionality shall be enabled and configured via parameter settings in the callctrl.cfg configuration file. |
7 | Configuration of FR19312 Inbound Call Routing functionality shall be performed during Boston Host Service initialization. |
8 | Configuration of FR19312 Inbound Call Routing functionality will not be configurable at runtime. |
9 | When FR19312 functionality is disabled in the callctrl.cfg configuration file, all inbound SIP calls will be routed to the first available SR140 channel.
NOTE: Within the context of these requirements, available is interpreted to mean a SR140 channel that is currently waiting for a call. |
10 | A new configuration section shall be supported in the callctrl.cfg configuration file to allow SR140 Inbound Call Routing Rules to be specified.
NOTE: The section name and the parameters supported in this section used to specify the Inbound Call Routing Rules are not defined at this time and will be defined in the High Level Design document for this feature. |
11 | When one or more SR140 Inbound Call Routing Rules are specified in a callctrl.cfg configuration file, this will constitute a Routing Table. FR19312 shall support an Inbound Call Routing Table size of at least 30 Routing Rules |
12 | The configuration of FR19312 SR140 Inbound Call Routing Rules shall support routing an inbound SIP call based on the “Called Address” and/or “Calling Address” information associated with the call to a group of one or more SR140 channels.
NOTE: The “Called Address” of an inbound SIP call is extracted from the TO header in the SIP INVITE request. The “Calling Address” of an inbound SIP call is extracted from the FROM header in the SIP INVITE request. |
13 | The FR19312 SR140 Inbound Call Routing Rules shall support a dial plan for matching inbound calls to individual routing rules. |
RID# | Description | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
14 | The FR19312 SR140 Inbound Call Routing Rules dial plan shall support one or more of the following decimal digits in a routing rule: 0, 1, 2, 3, 4, 5, 6, 7, 8, and 9 Examples of this are “1001” and “8007554444”. | ||||||||||
15 | The following special characters shall be supported by the FR19312 Inbound Call Routing Rules dial plan in order to support pattern matching:
Match ranges are created using [min-max]. A left bracket, hyphen (-) and a right bracket are required. Minimum and maximum values may range from 0 through 9. Brackets may be repeated, but not nested. For example, “[2-9]XX” matches any number from “200” through “999”. Similarly “1xxx” matches any number from “1000” to “1999”. | ||||||||||
16 | The FR19312 SR140 Inbound Call Routing Rules shall be specified in descending order with “Routing Rule #1” as the highest priority, “Routing Rule #2” as the second highest priority, “Routing Rule #3” as the third highest priority and so on.
NOTE: The routing files will not need to be specified in a consecutive order starting at 1. If the user specifies “Routing Rule #1”, “Routing Rule #5” and “Routing Rule #10” in a Routing Table configuration file, then a total of three routing rules would be specified with “Routing Rule #1” being the highest priority and “Routing Rule #10” being the lowest priority. | ||||||||||
17 | An inbound SIP call shall always be routed to the highest priority SR140 Inbound Call Routing Rule that matches the “Called Address” and/or “Calling Address” of the inbound call and has an SR140 channel available to receive the call. |
RID# | Description |
---|---|
18 | FR19312 shall support multiple SR140 Inbound Call Routing Rules with non-overlapping or overlapping SR140 channel ranges. For example, the following Routing Rule configurations will be supported: Example 1 (Non-Overlapping Channel Ranges): Routing Rule #1: SR140 channels 0-9 Routing Rule #2: SR140 channels 10-19 Routing Rule #3: SR140 channels 20-29 Example 1 (Partial-Overlapping Channel Ranges): Routing Rule #1: SR140 channels 0-14 Routing Rule #2: SR140 channels 10-19 Routing Rule #3: SR140 channels 15-29
Example 1 (Complete-Overlapping Channel Ranges): Routing Rule #1: SR140 channels 0-29 Routing Rule #2: SR140 channels 0-29 Routing Rule #3: SR140 channels 0-29 |
19 | Inbound SIP calls that do not match any of the currently configured SR140 Inbound Call Routing Rules shall be routed to the first available SR140 channel not assigned to any of the routing rules. |
20 | If an inbound SIP call is received that doesn’t match any of the currently configured SR140 Inbound Call Routing Rules and there are no SR140 channels not assigned to any of the routing rules available to receive the call, then the call shall be rejected with a SIP 486 (Busy Here). NOTE: The existing inbound call timeout mechanism within the Dialogic Brooktrout Call Control stack will remain operational whether FR19312 Inbound Call Routing functionality is enabled or disabled. In the case where an inbound SIP call is received that matches a Routing Rule but there’s currently no SR140 channel from the routing rule available to receive the call, the call will be queued up until either a matching SR140 channel picks up the call or the inbound call timeout occurs. If the inbound call timeout occurs, the call will be rejected with a SIP 486 (Busy Here). Similarly, in the case where an inbound SIP call is received that doesn’t match any Routing Rules and there’s currently no SR140 channel available to receive the call, the call will be queued up until either a SR140 channel picks up the call or the inbound call timeout occurs. If the inbound call timeout occurs, the call will be rejected with a SIP 486 (Busy Here). |
22 | No changes to the Dialogic Brooktrout BFV API shall be required to support FR19312 Inbound Call Routing functionality. |
Reference List
RFC 3261 – SIP: Session Initiation Protocol (http://www.ietf.org/rfc/rfc3261.txt)
RFC 2705 – Media Gateway Control Protocol (MGCP) Version 1.0 (http://www.ietf.org/rfc/rfc2705.txt)
Product Areas Affected
- This feature will only affect inbound calls using the SIP call control protocol.
API/Library Change(s):
- None
Performance Change(s):
- None
Documentation Change(s):
- The Dialogic Brooktrout Bfv APIs Reference Manual will be updated to document the new callctrl.cfg configuration file parameter that specifies the pathname to the routing table configuration file as well as the new parameters supported in the routing table configuration file. Updates to this manual will also illustrate how to configure SR140 Inbound Call Routing Rules.
Configuration Change(s):
- The callctrl.cfg configuration file will be updated to support the changes required for FR19312. These changes will include a new parameter to specify the pathname to a routing table configuration file.
- The new routing table configuration file will define the SR140 Inbound Call Routing Rules. For each Routing Rule defined in this configuration file, new parameters will be defined to allow the user to specify the following:
- SR140 channel(s) that the routing rule applies to
- Called address the inbound call must match
- Calling address the inbound call must match
Build and Installation Change(s):
- None
Specific Product Deliverables:
File | Windows | Linux | Solaris* |
---|---|---|---|
bostdlld.dll | (/) |
|
|
brktsip.dll | (/) |
|
|
| (/) | (/) | |
| (/) | (/) |
*This feature will be implemented on the Windows Linux and Solaris Operating Systems (OSs). However, testing of this feature will be limited to Windows and Linux OSs. Testing of this feature on the Solaris OS will not be performed.
Required Purchases:
- None
Product SKUs and Materials:
- None
Test Scenario(s):
The developer test plan will document the full description of the test cases below along with the results of the developer testing. This testing shall, at a minimum, contain the following test case
No Routing Rules Configured:
This test case verifies that when FR19312 functionality is disabled and no routing rules are specified, that an inbound SIP call can be successfully routed to the first available SR140 channel waiting for a call.Routing Rules Configured, Inbound Call Match
This test case verifies when FR19312 functionality is enabled and one or more routing rules are specified, that when an inbound SIP call is received that matches at least one of the configured routing rules, the call is successfully routed to an SR140 channel specified in the matching routing rule. This test should be repeated for when a single SR140 channel and when multiple SR140 channels are assigned to a routing rule.Routing Rules Configured, Inbound Call Doesn’t Match, No Extra SR140 channels
This test case verifies when FR19312 functionality is enabled and one or more routing rules are specified, that when an inbound SIP call is received that doesn’t match any one of the configured routing rules and there aren’t any extra SR140 channels not assigned to routing rules, the call is rejected with a SIP 486 (Busy Here).Routing Rules Configured, Inbound Call Doesn’t Match, Extra SR140 channels
This test case verifies when FR19312 functionality is enabled and one or more routing rules are specified, that when an inbound SIP call is received that doesn’t match any one of the configured routing rules and there are extra SR140 channels not assigned to routing rules, the call is successfully routed to a SR140 channel not assigned to a routing rule.Routing Rules Configured, Inbound Call Matches Wildcard Pattern
This test case verifies when FR19312 functionality is enabled and one or more routing rules with wildcard patterns are specified, that when an inbound SIP call is received that matches at least one of the configured wildcard pattern routing rules, the call is successfully routed to a SR140 channel specified in the matching routing rule.Routing Rules Configured, Inbound Call Matches Range Pattern
This test case verifies when FR19312 functionality is enabled and one or more routing rules with range patterns are specified, that when an inbound SIP call is received that matches at least one of the configured range pattern routing rules, the call is successfully routed to a SR140 channel specified in the matching routing rule.Routing Rules Configured, Inbound Call Match, No Channel Available
This test case verifies when FR19312 functionality is enabled and one or more routing rules are specified, that when an inbound SIP call is received that matches at least one of the configured routing rules but none of the SR140 channels assigned to the routing rule are available, the call is rejected with a SIP 486 (Busy Here).Routing Rules Configured, Inbound Call Match, Overlapping Channels in Routing Rules
This test case verifies when FR19312 functionality is enabled and multiple routing rules are specified, that when an inbound SIP call is received that matches one of the configured routing rules but the SR140 channels assigned to the routing rule overlap with the channels assigned to a non-matching routing rule, the call is successfully routed to a SR140 channel specified in the matching routing rule.Routing Rules Configured, Inbound Call Match, Overlapping Called/Calling Addresses in Routing Rules
This test case verifies when FR19312 functionality is enabled and multiple routing rules are specified that have overlapping called and/or calling addresses, that when an inbound SIP call is received that matches multiple routing rules, the call is successfully routed to a SR140 channel specified in the highest priority matching routing rule.FRRD FR19312 - SR140 Inbound Call Routing.doc