简介
本文档介绍如何确定和定义语音转换规则。
先决条件
要求
本文档没有任何特定的要求。
使用的组件
本文档不限于特定的软件和硬件版本。
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您的网络处于活动状态,请确保您了解所有命令的潜在影响。
规则
有关文档约定的信息,请参阅Cisco技术提示约定。
背景信息
本文档使用的语法是:
语法 |
定义 |
rule precedence /match pattern/ /replacement pattern/ |
/ - /分隔整数。 |
rule precedence /match pattern/ /replacement pattern/ |
/ - /分隔整数。 |
简单匹配和替换
示例 1
此示例将第一次出现的数字123替换为456。
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] |
任意字符范围或序列 |
* |
限定符 - 匹配不出现或多次出现 |
+ |
限定符 - 匹配一次或多次出现 |
? |
限定符 - 匹配不出现或一次出现 |
通配符组合 |
定义 |
.* |
任何数字后接零次或多次。这包括null或任何其他数字。 |
.+ |
任何数字后接零次或多次。这包括null或任何其他数字。 |
^$ |
无数字,空 |
示例 1
此示例将以40开头的所有五位数数字替换为6666000。
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替换除null之外的所有数字。
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
此示例将以0的组合(0、00等)开头的所有数字替换为909。
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/
将匹配的数字拆分为三组x、y和z。反斜线 (\) 指示切分号码的位置。括号 () 指示要在替换模式中重复使用的集。Thw表示要插入替换号码的附加数字。
-
集1变成表达式。
-
集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开头,并且类型为national,则规则会将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,将类型设置为national。
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: .. 2位
替换语句指定集 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
相关信息