BLF(Busy Lamp Field) – 它是什么以及如何工作(订阅,通知)

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消息示例。SUBSCRIBEUNSUBSCRIBE 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– 错误事件。指定的事件包不受支持。