目录

简介

先决条件

要求

使用的组件

规则

背景信息

简单匹配和替换

示例 1

示例 2

示例 3

与通配符的模式匹配

示例 1

示例 2

示例 3

示例 4

号码切分

普通示例

相关示例

号码类型和方案

示例 1

示例 2

拒绝呼叫

应用规则

其他示例

截断号码到最后两位

删除号码中不需要的数位

相关信息

简介

本文档介绍如何确定和定义语音转换规则。

先决条件

要求

本文档没有任何特定的要求。

使用的组件

本文档不限于特定的软件和硬件版本。

本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始（默认）配置。如果您的网络处于活动状态，请确保您了解所有命令的潜在影响。

规则

有关文档约定的信息，请参阅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/

- 集1:12

- 集2:45

- 忽略：3

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

相关信息

- 媒体网关中的语音翻译规则

- rule (voice translation-rule) Cisco IOS语音命令

- Cisco IP电话故障排除（Amazon上的预订）

- 技术支持和文档 - Cisco Systems