BLF是Busy Lamp Field的英文缩写,是IP通讯中的一个专业术语。BLF(Busy Lamp Field)从狭义上讲是监控分机上的指示灯,它通过某个分机上预先配置好的指示灯(BLF)来监控其它分机的工作状态,该指示灯会根据被监控分机的工作状态呈现不同的状态。状态如下:
被监控的分机状态 | BLF指示灯的状态 |
空闲 | 绿色常亮 |
振铃中 | 红色闪烁 |
占线(忙) | 红色常亮 |
它是如何工作的?
BLF功能的实现需要监控分机与3CX(3CX(IP PBX))配合才能实现,其基本流程是:
1、监控分机向3CX(IP PBX)“订阅”被监控分机的状态;
2、3CX(IP PBX)向监控分机通知被监控分机状态的变化;
3、监控分机根据3CX(IP PBX)通知的信息,将对应的BLF指示灯显示为不同的状态。
当某个分机(订阅者)想要监控另1个分机时,它会向IP PBX 发送SUBSCRIBE SIP消息。如果设置了身份验证,则会进行身份验证,如果订阅者成功通过身份验证,则会向订阅者发送200 OK SIP消息响应。NOTIFY SIP,其包括在消息主体中的XML消息发送到订阅者告知被订阅分机的当前状态。一旦被订阅分机的状态从空闲变为忙或反之,则从IP PBX向用户通知NOTIFY SIP消息。订阅者必须通过200 OK SIP响应来确认NOTIFY SIP消息信息。订阅者可以通过向PBX 发送SUBSCRIBE SIP消息并将Expires头设置为0来取消订阅此资源。这种方式的工作方式分为三个步骤。
订阅流程
在这种情况下,我们有一部话机配置为在分机8008上注册PBX 。以下是订阅被通知有关扩展8009的状态的该话机的SUBSCRIBE SIP消息的示例捕获。请注意,示例已缩短以用于文档目的。
从下面的示例中我们可以看到:
1、SUBSCRIBE sip:8009@168.1.227:5060SIP / 2.0 – 请求订阅分机:8009的SUBSCRIBE SIP消息 发送到3CX(IP PBX):10.168.1.227。
2、From:- 订阅者,也就是分机:8008。
3、Accept:application / dialog-info + xml – 指明A订阅者(分机:8008)支持使用XML语言封装的dialog事件包。
4、Expires:3600 – 指示此次订阅的有效时长(以秒为单位)。因此,在3600秒之前的有效时间内,订阅者应使用相同的事件头和ID参数发送SUBSCRIBE SIP消息以刷新订阅。请注意,3CX(IP PBX)服务器的响应可以稍稍延迟一点,但无法延长有效时长。
5、Content-Length:0 – 指明此SIP数据包没有附加XML消息体。
一旦从3CX(IP PBX)服务器接收到SUBSCRIBE SIP消息并成功处理,就会向订阅者发送200 SIP OK消息,如下面的示例所示。
通知流程
以下示例显示被订阅分机状态变化情况。以XML语言主体的NOTFIY SIP消息被发送给订阅者,通知订阅者被订阅分机的状态
从下面面的示例中我们可以看到:
1、NOTIFY sip:8008@168.1.227:5060 SIP/ 2.0 – 从这一行我们可以看到这是发送到订阅者(分机:8008)的SIP通知消息。
2、Subscription-State:active; expires = 900- 这里说明阅已被接受且授权成功以及订阅的有效时长。
3、Content-Length:212- 附加到此NOTIFY SIP消息的XML消息正文大小(以字节为单位)。
4、entity =“sip:8009@168.1.227:5060” – 在XML消息正文中指出被订阅分机。
一旦订阅者接收到NOTIFY SIP消息,订阅者就向通知者发回200 OK SIP消息,如下面的示例所示。
取消订阅流程
以下是从订阅者发送到通知程序以取消订阅资源的SUBSCRIBE SIP消息示例。SUBSCRIBE和UNSUBSCRIBE SIP消息之间的唯一区别在于取消订阅Expire标头时设置为0。
从下面的示例中我们可以看到:
1、SUBSCRIBE sip:8009@168.1.227:5060SIP / 2.0 – 在这一行中,我们可以看到SIP消息是SUBSCRIBE消息,并且被订阅分机是8009。
2、From:<sip:8008@168.1.227:5060>; tag = 232874093 – 订阅者即分机:8008。
3、Expires:0 – 指明订阅者取消了订阅。
一旦3CX(IP PBX)接收并成功处理了SUBSCRIBE SIP消息,就会向用户发送200 SIP消息,如下面的示例所示。
订阅事件的常见错误代码。
- 403– 禁止。服务器未授权该请求。
- 423– 有效时长太短。SIP消息中指定的Expires值太小。
- 481– 订阅不存在。
- 489– 错误事件。指定的事件包不受支持。