简介
本文档介绍如何确定和定义语音转换规则。
先决条件
要求
本文档没有任何特定的要求。
使用的组件
本文档不限于特定的软件和硬件版本。
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您的网络处于活动状态,请确保您了解所有命令的潜在影响。
规则
有关文档约定的信息,请参阅Cisco技术提示约定。
背景信息
本文档使用的语法是:
语法 |
定义 |
ruleprecedence/match pattern/ /replacement pattern/ |
/ - /分隔整数。 |
ruleprecedence/match pattern/ /replacement pattern/ |
/ - /分隔整数。 |
简单匹配和替换
示例 1
本示例用“456”替换首次出现的号码“123”。
voice translation-rule 1
rule 1 /123/ /456/
以下是 test voice translation-rule 示例:
router#test voice translation-rule 1 123
Matched with rule 1
Original number: 123 Translated number: 456
router#test voice translation-rule 1 1234
Matched with rule 1
Original number: 1234 Translated number: 4564
router#test voice translation-rule 1 6123
Matched with rule 1
Original number: 6123 Translated number: 6456
router#test voice translation-rule 1 6123123
Matched with rule 1
Original number: 6123123 Translated number: 6456123
Original number type: none Translated number type: none
Original number plan: none Translated number plan: none
在本示例中,规则匹配号码中任意位置首次出现的包含模式“123”的号码。具体而言,可使用号码指示符的开头和末尾。这些示例显示了这一点。
示例 2
本示例显示如何用“456”替换号码开头部分出现的“123”。
voice translation-rule 1
rule 1 /^123/ /456/
这些是最常用的语音转换规则示例。
router#test voice translation-rule 1 123
Matched with rule 1
Original number: 123 Translated number: 456
router#test voice translation-rule 1 1234
Matched with rule 1
Original number: 1234 Translated number: 4564
router#test voice translation-rule 1 6123
6123 Didn't match with any of rules
示例 3
如果只想匹配确切号码,则指定开头和末尾号码指示符:
voice translation-rule 1
rule 1 /^123$/ /456/
router#test voice translation-rule 1 123
Matched with rule 1
Original number: 123 Translated number: 456
router#test voice translation-rule 1 1234
1234 Didn't match with any of rules
router#test voice translation-rule 1 6123
6123 Didn't match with any of rules
与通配符的模式匹配
下面的表定义通配符和通配符组合,并显示一些示例。
通配符 |
定义 |
. |
任意单个数字 |
0 到 9、*、# |
任意特定字符 |
[0-9] |
任意字符范围或序列 |
* |
限定符 - 匹配不出现或多次出现 |
+ |
限定符 - 匹配一次或多次出现 |
? |
限定符 - 匹配不出现或一次出现 |
通配符组合 |
定义 |
.* |
后接不出现或多次出现的任意数字。这包括空值或任何其它数字。 |
.+ |
后接不出现或多次出现的任意数字。这包括空值或任何其它数字。 |
^$ |
无数字,空 |
示例 1
本示例用号码“6666000”替换以“40”开头的任意五位数号码。
voice translation-rule 1
rule 1 /^40.../ /6666000/
router#test voice translation-rule 1 40123
Matched with rule 1
Original number: 40123 Translated number: 6666000
示例 2
本示例用“5554000”替换所有号码。
voice translation-rule 2
rule 1 /.*/ /5554000/
router#test voice translation-rule 2 123
Matched with rule 1
Original number: 123 Translated number: 5554000
router#test voice translation-rule 2 86573
Matched with rule 1
Original number: 86573 Translated number: 5554000
router#test voice translation-rule 2 ""
Matched with rule 1
Original number: Translated number: 5554000
示例 3
本示例用“5554000”替换除空以外的所有号码。
voice translation-rule 2
rule 1 /.+/ /5554000/
router#test voice translation-rule 2 123
Matched with rule 1
Original number: 123 Translated number: 5554000
router#test voice translation-rule 2 ""
Didn't match with any of rules
示例 4
本示例用“909”替换以零组合(0、00 等等)开头的任意号码。
voice translation-rule 5
rule 1 /^0+/ /909/
router#test voice translation-rule 5 0123456
Matched with rule 1
Original number: 0123456 Translated number: 909123456
router#test voice translation-rule 5 00123456
Matched with rule 1
Original number: 00123456 Translated number: 909123456
router#test voice translation-rule 5 000123456
Matched with rule 1
Original number: 000123456 Translated number: 909123456
router#test voice translation-rule 5 123456
123456 Didn't match with any of rules
号码切分
当需要将一部分匹配号码复制到替换号码时,可使用号码切分。将匹配号码切分为可保留或可忽略的集。
字符 |
描述 |
\ |
在匹配模式中,指示切分号码的位置。 |
\ |
在替换模式中,指示复制要保留的集的位置。 |
() |
指示匹配号码中要保留的集。 |
字符用法 |
描述 |
(a\) |
保留表达式“a”。 |
b\ |
忽略表达式“b”。 |
\1 |
将第一个集复制到替换号码。 |
普通示例
本示例提供一般说明。
/ (x\) y\ (z\) / /w\1\2/
将匹配的数字拆分为三组,y和z。反斜线 (\) 指示切分号码的位置。括号 () 指示要在替换模式中重复使用的集。表示要插入替换号码的附加数字。
-
集1变为expressionx。
-
集2成为表达式。
-
表达式被忽略。
替换号码是一个连接号码:wxz。
相关示例
本示例提供更多详情:
voice translation-rule 1
rule 1 /^\(12\)3\(45\)$/ /6\1\2/
router#test voice translation-rule 1 12345
Matched with rule 1
Original number: 12345 Translated number: 61245
号码类型和方案
可对与特定号码或方案类型的匹配加以限制。也可修改替换方案或类型。
示例 1
在本示例中,如果号码以“4”开头,且类型为“国内”,规则将添加“90”作为前缀。如果类型为“国际”,规则将添加“900”作为前缀。
voice translation-rule 7
rule 1 /^4/ /904/ type national national
rule 2 /^4/ /9004/ type international international
router#test voice translation-rule 7 493456567 type national
Matched with rule 1
Original number: 493456567 Translated number: 90493456567
Original number type: national Translated number type: national
Original number plan: none Translated number plan: none
router#test voice translation-rule 7 493456567 type international
Matched with rule 2
Original number: 493456567 Translated number: 900493456567
Original number type: international Translated number type: international
Original number plan: none Translated number plan: none
当电话公司 (Telco) 删除国内和国际号码的接入代码时,这非常有用。可根据号码类型添加正确的前缀。
示例 2
本示例更改号码类型和方案。
voice translation-rule 8
rule 1 /^2\(...$\)/ /01779345\1/ type unknown national plan unknown isdn
此规则匹配以“2”开头的任意四位数号码。 此规则删除“2”,添加号码“01779345”作为前缀,并将方案设置为“isdn”、将类型设置为“国内”。
router#test voice translation-rule 8 2001 type unknown plan unknown
Matched with rule 1
Original number: 2001 Translated number: 01779345001
Original number type: unknown Translated number type: national
Original number plan: unknown Translated number plan: isdn
拒绝呼叫
使用rejectkeyword拒绝匹配的呼叫。本示例拒绝以“234”开头的所有呼叫。
rule 1 reject /^234/
router#test voice translation-rule 10 1234
1234 Didn't match with any of rules
router#test voice translation-rule 10 2345
blocked on rule 1
应用规则
将语音转换规则应用于语音转换配置文件。然后,将这些配置文件应用于拨号对等体或语音端口。配置文件可应用于VoIP或POTS拨号对等体或语音端口,并可应用于入站或出站呼叫。配置文件可转换被叫、主叫或重定向号码。
voice translation-rule 3
rule 1 /123/ /456/
voice translation-profile profile1
translate calling 3
dial-peer voice 10 pots
translation-profile outgoing profile1
其他示例
截断号码到最后两位
rule 1 /^.*\(..\)/ /\1/
以下是分为一个集和一个忽略语句的号码。
-
已忽略:^.*数字开头部分没有或更多数字
设置1:..两个数字
替换语句指定集合1。此规则复制号码的最后两个数字。
router#test voice translation-rule 9 12345
Matched with rule 1
Original number: 12345 Translated number: 45
router#test voice translation-rule 9 123456
Matched with rule 1
Original number: 123456 Translated number: 56
删除号码中不需要的数位
此示例非常有用,因为已知某些电信运营商将连字符插入主叫方号码。因为这与标准不符,所以将造成主叫方号码被忽略。电信公司以两种格式发送主叫号码,一种是连字符,有时是两种。语音转换规则要求两条规则。此外,第一种格式可以在连字符后有五六个数字。您可以使用带有“?”的一个规则匹配这两个条件 (匹配不出现或一次出现)。
特殊字符:
-
连字符用于指示匹配模式范围,例如 [0-9]。若要在此规则中指示要在连字符上匹配,必须使用“\”字符转义其含义。这是因为连字符是特殊字符。“\-”字符实际上是连字符。结束“\”表示号码在此处切分。
-
如果直接键入?,Cisco IOS®会将其视为请求帮助。必须键入Control-Vthen?。
voice translation-rule 12
rule 1 /^\(01...\)\-\(......?$\)/ /\1\2/
rule 2 /^\(0[12]..\)\-\(...\)\-\(....$\)/ /\1\2\3/
规则1:数字被分成三个序列,并保留两个集合。
-
设置1:01...
忽略:-
设置2:..... 或 .....
规则2:将编号分割为五个序列,并保留三个集合。
-
设置1:0[12]..
忽略:-
设置2:..
忽略:-
设置3:...
router#test voice translation-rule 12 "01208-333444"
Matched with rule 1
Original number: 01208-333444 Translated number: 01208333444
router#test voice translation-rule 12 "01208-72345"
Matched with rule 1
Original number: 01208-72345 Translated number: 0120872345
router#test voice translation-rule 12 "0161-333-4444"
Matched with rule 2
Original number: 0161-333-4444 Translated number: 01613334444
router#test voice translation-rule 12 "0208-123-4567"
Matched with rule 2
Original number: 0208-123-4567 Translated number: 02081234567
相关信息