本文档介绍如何确定和定义语音转换规则。
本文档没有任何特定的要求。
本文档不限于特定的软件和硬件版本。
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您的网络处于活动状态,请确保您了解所有命令的潜在影响。
本文档使用的语法是:
| 语法 |
定义 |
| rule precedence /match pattern/ /replacement pattern/ |
/ - /分隔整数。 |
| rule precedence /match pattern/ /replacement pattern/ |
/ - /分隔整数。 |
此示例将第一次出现的数字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的号码。具体而言,可使用号码指示符的开头和末尾。这些示例显示了这一点。
此示例显示如何用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
如果只想匹配确切号码,则指定开头和末尾号码指示符:
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] |
任意字符范围或序列 |
| * |
限定符 - 匹配不出现或多次出现 |
| + |
限定符 - 匹配一次或多次出现 |
| ? |
限定符 - 匹配不出现或一次出现 |
| 通配符组合 |
定义 |
| .* |
任何单个字符,后面不出现或多次。这意味着它可以匹配空字符串、单个字符或许多字符的序列(默认情况下换行字符除外)。 |
| .+ |
任何单个字符后接一个或多个匹配项。缺省情况下,除换行符外。 |
| ^$ |
无数字,空 |
此示例将以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
此示例使用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
此示例使用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
此示例将以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/
集1:12
集2:45
忽略:3
router#test voice translation-rule 1 12345 Matched with rule 1 Original number: 12345 Translated number: 61245
可对与特定号码或方案类型的匹配加以限制。也可修改替换方案或类型。
在本示例中,如果数字以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) 删除国内和国际号码的接入代码时,这非常有用。可根据号码类型添加正确的前缀。
本示例更改号码类型和方案。
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
使用reject关键字拒绝匹配的呼叫。此示例拒绝所有以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
| 版本 | 发布日期 | 备注 |
|---|---|---|
4.0 |
29-May-2026
|
重新认证 |
2.0 |
13-Nov-2023
|
已更新格式和拼写。 |
1.0 |
10-Aug-2004
|
初始版本 |