我无法在 Aterisk 上启用忙时用户完成呼叫 (CCBS) 功能,它是呼叫完成补充服务 (CCSS) 的一部分,无响应时完成呼叫 (CCNR) 功能也是如此。
场景如下:马克拿起电话 (1000),拨打 2000 给理查德打电话。理查德正在通话中,所以马克听到忙音。然后马克挂断电话,拿起电话拨打 30 来调用 CallCompletionRequest 应用程序。过了一会儿,理查德结束通话并挂断电话。Asterisk 会自动回拨马克。当马克拿起电话时,Asterisk 将为他拨打分机 2000。
根据文档,我必须根据自己的需求(通用)添加 cc_agent_policy 和 cc_monitor_policy,将 CCSS 启用扩展添加到拨号计划,并在拨打占线电话后启用它。我就是这么做的。
问题是,当分机忙时使用的 CCBS 不起作用,因为拨打分机号 30 来启用对之前忙的分机的监控时什么也没有发生,这有点令人沮丧,因为另一个功能 CCNR(用于监控无响应分机的功能)可以正常工作。
有人能告诉我缺少了什么吗?
这是配置文件:
/etc/asterisk/sip.conf
[1000]
context=default
cc_agent_policy=generic
cc_monitor_policy=generic
[2000]
context=default
cc_agent_policy=generic
cc_monitor_policy=generic
/etc/asterisk/extensions.conf
[default]
exten => 1000,1,Dial(SIP/1000,20)
exten => 1000,n,Hangup
exten => 2000,1,Dial(SIP/2000,20)
exten => 2000,n,Hangup
exten => 30,1,CallCompletionRequest
exten => 30,n,Hangup
exten => 31,1,CallCompletionCancel
exten => 31,n,Hangup
这是在呼叫未应答的电话并启用 CCSS 拨打分机 30 后 CLI 中的 CC 报告状态:
Core ID Caller Status
----------------------------------------------------------------------------
0 SIP/1000 CC accepted by callee
|-->2000@default
|-->SIP/2000(CCNR)
在拨打一部占线电话(猜测应该显示 CC 状态)并尝试启用 CCSS 拨号分机 30 后:
CLI> There are currently no active call completion transactions
系统信息:
- 操作系统:Centos7
- 星号 13.13-cert6
答案1
要让 Asterisk 在 CallCompletionRequest 之后启用 CCBS,忙碌设备需要使用 486 Busy Here 响应来回答 SIP INVITE。也就是说,即使分机内部状态为“InUse”,Asterisk 也必须拨打分机,并且设备需要禁用“呼叫等待”功能。在我的环境中,我维护一个 Elastix 发行版,我必须为所有设备启用“呼叫等待”,以便 Asterisk 拨打分机,即使分机忙碌。然后,在设备上禁用“呼叫等待”后,它会响应 SIP 486 消息。
在纯 Asterisk 中,可以通过设置
busylevel = 2
在分机的 sip.conf 中。即使分机正在通话中,Asterisk 也会拨打分机,如果禁用“呼叫等待”设备功能,它将响应 486。
参考 sip.conf.sample,其中包含对 peer/user/friend 可用的配置: https://github.com/asterisk/asterisk/blob/13.26/configs/samples/sip.conf.sample