在 Asterisk 上的呼叫等待中播放文件

Playback file in Call Waiting on Asterisk

请帮忙解决我最近遇到的问题

在实现通知调用者的功能时"User talking on the first line Please wait or call back later."在Asterisk中的功能"Call Waiting"我使用这个宏:

extensions_custom.conf

[from-internal-custom]
exten => _XXX,1,Macro(check-number,${EXTEN})
include => macro-check-number

[macro-check-number]
exten => s,1,NoOp(Enter in macro-check-number)
exten => s,n,Set(devst=${DEVICE_STATE(SIP/${ARG1})})
exten => s,n,ExecIf($["${devst}" = "INUSE"]?Playback(ml))
exten => s,n,NoOp(Exit from macro-check-number)

ml - 播放文件名

而且这个功能有效!

但是这个宏适用于整个 Asterisk,这个队列呼叫,群组呼叫 - 这就是问题所在。

我有一个想法 - 一组呼叫和队列呼叫分配号码四位分机,例如:2222 - 但不是你不应该的,它是一个错误的问题解决方案,因为它以后可能会出问题!

也许有人遇到过类似的问题?

您已经根据您的拨号规则分析了通话环境。

有关此类拨号方案的示例,您可以在 freepbx 项目中查看 recoring 宏。然而,最简单的方法就是为 ringgroup/queues 和直接拨号使用不同的上下文。

电路中的问题已解决。 由于我们为不超过 250 名成员提供服务的电话服务器 - 我们决定为群组和队列创建一个四位数的号码。

您不需要在 from-internal-custom 上下文中包含部分 因为 extensions_custom.conf 文件包含在拨号计划中。

您需要更改扩展名的格式:

[from-internal-custom]
exten => _99XXX,1,Macro(check-number,${EXTEN:2})

[macro-check-number]
exten => s,1,NoOp(Enter in macro-check-number)
exten => s,n,Set(devst=${DEVICE_STATE(SIP/${ARG1})})
exten => s,n,ExecIf($["${devst}" = "INUSE"]?Playback(ml))
exten => s,n,NoOp(Exit from macro-check-number)