这里主要是针对几个话机共享一个号码的情况来进行分析。多个话机共享一个号码的主要应用场景比如是前台,前台有多部电话一起工作,一个call来了之后,可以有多个人进行响应。或者说如果有人在响应这个号码,再有人打进来的话,可以让其他人来接。接下来会介绍多种共享号码的方法,每一种对应的情况和产生的效果都不同,具体的用途可以自己去想。图1是本次试验的拓扑图。

 

图1
图中,IP_Phone1的号码是1001,IP_Phone2的号码是2001。IP_Phone2其实是两个电话,号码都是2001。由于有很多图片,所以文章显得比较长,语音的基本配置就不做过多的讲解了,只针对于号码管理。
 
首先这里先来介绍一个自动给注册的IP电话分配号码的方法。一般我们知道,通过ephone-dn 配置了号码之后,通过ephone 选择话机,然后通过button命令来给话机分配号码,比如button 1:1就可以将dn1分配给话机的第一个按钮。现在告诉大家一个自动给话机分配dn的方法。在telephony-service 下使用 auto assign命令
R2(config-telephony)#auto assign start-dn to end-dn [type  type ]
就可以按顺序,从start-dn到end-dn来分配号码给依次注册的话机。比如从dn1到dn3的话,就是第一个话机注册上来就给他分配dn1,第二个分配dn2
当然,从 show run上来看的话,还是相当于是配置了button的
 
让多部电话拥有一个号码主要有以下几种方式:
一.1 个dn ,多个ephone button 对应
我们来看如下配置
ephone-dn 1 dual-line
 number 2001
ephone 1
 mac-address 0050.56C0.0008
 type CIPC
 button 1:1
ephone 2
 mac-address 14DA.E9E9.CFE7
 type 7960
 button 1:1
在这里将ephone1和ephone2的button都设置成1:1。我们观察下ephone的情况
R2#sh ephone
ephone-1 Mac:0050.56C0.0008 TCP socket:[2] activeLine:0 REGISTERED in SCCP ver 15 and Server in ver 8
mediaActive:0 offhook:0 ringing:0 reset:0 reset_sent:0 paging 0 debug:0 caps:8
IP:192.168.2.2 4142 CIPC    keepalive 51 max_line 8
button 1: dn 1 number 2001 CH1    IDLE         CH2   IDLE         shared
 
ephone-2 Mac:14DA.E9E9.CFE7 TCP socket:[3] activeLine:0 REGISTERED in SCCP ver 4 and Server in ver 3
mediaActive:0 offhook:0 ringing:0 reset:0 reset_sent:0 paging 0 debug:0 caps:5
IP:192.168.2.2 4498 Telecaster 7960 keepalive 16 max_line 6
button 1: dn 1 number 2001 CH1    IDLE         CH2   IDLE         shared
 
对比R1的show ephone,我们可以发现shared关键字被显示了
R1#sh ephone
ephone-1 Mac:000C.29D8.8E57 TCP socket:[1] activeLine:0 REGISTERED in SCCP ver 15 and Server in ver 8
mediaActive:0 offhook:0 ringing:0 reset:0 reset_sent:0 paging 0 debug:0 caps:8
IP:192.168.1.1 3686 CIPC    keepalive 43 max_line 8
button 1: dn 1 number 1001 CH1    IDLE    
 
那么实际上的电话在拨打的过程中,当1001拨打2001的时候,两部电话都会振铃,当其中一部电话摘机之后,另一部电话则会停止振铃,同时上面会显示另一个设备正在使用这个号码进行通话。如图2所示,当1001拨打2001时,两台设备同时振铃。
 

 
                                                           图2
而且当其中一部电话摘机之后,另一台设备会显示2001正在被使用,1001此时无法呼入,显示busy。即使有一台设备实际上正在空闲。
 
二.配置两个dn ,两个dn 都使用同一个号码,dn 的优先级相同
ephone-dn 1 dual-line
 number 2001
ephone-dn 3
 number 2001
ephone 1
 mac-address 0050.56C0.0008
 type CIPC
 button 1:1
ephone 2
 mac-address 14DA.E9E9.CFE7
 type 7960
 button 1:3
此时观察下ephone的情况:
R2#sh ephone
ephone-1 Mac:0050.56C0.0008 TCP socket:[1] activeLine:0 REGISTERED in SCCP ver 15 and Server in ver 8
mediaActive:0 offhook:0 ringing:0 reset:0 reset_sent:0 paging 0 debug:0 caps:8
IP:192.168.2.2 3619 CIPC    keepalive 24 max_line 8
button 1: dn 1 number 2001 CH1    IDLE         CH2   IDLE        
 
ephone-2 Mac:14DA.E9E9.CFE7 TCP socket:[3] activeLine:0 REGISTERED in SCCP ver 4 and Server in ver 3
mediaActive:0 offhook:0 ringing:0 reset:0 reset_sent:0 paging 0 debug:0 caps:5
IP:192.168.2.2 3807 Telecaster 7960 keepalive 5 max_line 6
button 1: dn 3 number 2001 CH1    IDLE
可以看见两台设备都是number为2001,不同的只是dn3是single-line,dn1是dual-line。
 
那么此时1001拨打2001是一个什么效果呢,我们看图3
 

图3
只有一台电话在振铃(该电话是第一台设备,也就是ephone1)。如果ephone1在忙(此处是按了免提),那么再拨打的时候,就是ephone2在响了。见图4
 

图4
 
三.配置两个dn ,两个dn 都使用同一个号码,dn 的优先级不同
以上的方式所带来的明显问题是无法控制想要先响应的话机。如果想可控的让其中一部话机先振铃的话,那么就需要使用preference来控制,preference越大的,优先级越小。dn默认的优先级是0。修改配置为
ephone-dn 1 dual-line
 number 2001
 preference 2
ephone-dn 3
 number 2001
 preference 1
ephone 1
 mac-address 0050.56C0.0008
 type CIPC
 button 1:1
ephone 2
 mac-address 14DA.E9E9.CFE7
 type 7960
 button 1:3
从以上的配置可以看出,如果此时1001呼叫2001的话,那么应该是ephone2来应答。见图5,ephone1没有在忙,但是是ephone2振的铃。

 
图5
那么此时如果ephone2 busy的话,是不是ephone1就会振铃呢。结果是错误的,见图6,ephone2在忙,ephone1没有收到电话
 

图6
原因在于什么。因为dn默认是配有huntstop的。什么是huntstop,huntstop在CME检查该dn正在忙,无法呼叫时,会阻止继续寻找下一个dn。那么dn1也就无法被呼叫。导致ephone2的dn3 无法呼叫时,ephone1的dn1也不能工作。
 
四.配置两个dn ,两个dn 都使用同一个号码,dn 的优先级不同,使用no huntstop
R2增加如下配置,为dn3添加no huntstopR2(config)#ephone-dn 3
R2(config-ephone-dn)#no hunts
R2(config-ephone-dn)#no huntstop
R2(config-ephone-dn)#exit
 
此时ephone2摘机,1001呼叫2001,结果见图7
 

图7
修改配置之后,可见ephone2在忙时,ephone1可以振铃,帮助接听
 
在以上的情况中,dn1是dual-line,dn3是single-line。那么如果同样的方法用在dn1上,是不是也可以成功呢,答案是不行。因为dn1是dual-line,有两个通话通道,一个通道被占用了还是可以继续打进来。修改配置,将dn1 preference设置为0(默认不显示),并加上no huntstop
ephone-dn 1 dual-line
 number 2001
 no huntstop
ephone-dn 3
 number 2001
 preference 1
此时ephone1 被2002拨打通话之后。由1001再次拨打2001,可以发现ephone1还是会响应,而ephone2依然没有响应。见图8
 

图8
 
五.配置两个dn ,两个dn 都使用同一个号码,dn 的优先级不同,使用no huntstop+huntstop channel
给dn1修改配置如下,增加huntstop channel
ephone-dn 1 dual-line
 number 2001
 huntstop channel
 no huntstop
此时ephone1 被2002拨打通话之后。由1001再次拨打2001,可以发现ephone1没有响应该呼叫,而是转为ephone2来响应该呼叫。见图9
 

图9
 
六.配置两个dn ,两个dn 都使用不同号码,使用ephone-hunt
ephone-hunt 1 sequential
 pilot 2012
 list 2001, 2002
 
ephone-dn 1 dual-line
 number 2001
 huntstop channel
 no huntstop
 
ephone-dn 2
 number 2002
 
ephone 1
mac-address 0050.56C0.0008
button 1:1
ephone 2
mac-address 14DA.E9E9.CFE7
type 7960
button 1:2
将ephone2的号码改为2002, 创建一个ephone-hunt ,选择sequential选项,这个选项可以在无人接听的时候选择顺序让后面配置的list中的号码振铃。这时ephone1拨打2012这个号码的时候,主叫电话上面会先显示拨打2012,后来变为拨打2001。然后后面的ephone1的2001就会响,此时按住DnD建略过这次呼叫,呼叫就会转移到ephone2的2002上。见图10和图11
 

图10
此时ephone1被呼叫,按下DnD
 

图11
ephone1按下DnD键之后,显示1 New Missed Call。号码随后拨到2002上面。如果list上面所以的话机全部都DnD处理的话,主叫电话上会显示Busy。此处ephone-hunt 1 sequential 的子选项里面可以选择timeout 选择,后面跟秒。这个选项是可以设置在多少秒之内,如果话机没有应答的话,就转到下一台list的设备上。一次振铃是3s钟,所以设置为3的倍数的话,可以实际上变为振铃多少次之后转移到下一个话机振铃。这个很有意思,可以试试。