Asterisk FreepPBX。来自IVR的呼叫转接应根据分机';s州

Asterisk FreepPBX。来自IVR的呼叫转接应根据分机';s州,asterisk,freepbx,Asterisk,Freepbx,从一个本地分机呼叫另一个本地分机。如果SIP电话不可用,则播放所需的信息,而不是占线信号 cat /etc/asterisk/extensions_override_freepbx.conf [from-internal-custom] exten => _XXXX,1,NoOp(-------INTERNAL-CALL----------) same => n,Set(DEVSTATE=${DEVICE_STATE(PJSIP/${EXTEN})}) same => n,G

从一个本地分机呼叫另一个本地分机。如果SIP电话不可用,则播放所需的信息,而不是占线信号

cat /etc/asterisk/extensions_override_freepbx.conf 
[from-internal-custom]
exten => _XXXX,1,NoOp(-------INTERNAL-CALL----------)
same => n,Set(DEVSTATE=${DEVICE_STATE(PJSIP/${EXTEN})})
same => n,GotoIf($[ "${DEVSTATE}" = "UNAVAILABLE" ]?go-unvailable)
same => n,Dial(Local/${EXTEN}@default,60,tT)
same => n,HangUp
same => n(go-unvailable),Noop(----unvailable----)
same => n,PlayBack(silence/1&ss-noservice)
same => n,HangUp
尝试对IVR上下文执行相同的操作

[ext-local-custom]
exten => _XXXX,1,NoOp(-------IVR-CALL----------)
...
但它不起作用,因为freepbx创建了以下配置

[ext-local]
include => ext-local-custom

exten => 0101,1,Set(__RINGTIMER=${IF($["${DB(AMPUSER/0101/ringtimer)}" > "0"]?${DB(AMPUSER/0101/ringtimer)}:${RINGTIMER_DEFAULT})})
exten => 0101,n,Macro(exten-vm,novm,0101,0,0,0)
exten => 0101,n(dest),Set(__PICKUPMARK=)
exten => 0101,n,GotoIf($["${IVR_CONTEXT}" != ""]?${IVR_CONTEXT},return,1)
exten => 0101,hint,PJSIP/0101&Custom:DND0101,CustomPresence:0101

include
语句中的匹配扩展发生在
ext local
上下文中的匹配之后。因此,在这种情况下根本不使用include语句。

问题是什么?对于我来说,您希望有人为您调试它。问题是如何强制include语句为我工作,因为扩展是在[ext local]中指定的,但我想在[ext local custom]中执行其他处理您自己已经回答了这个问题。用户覆盖文件。但实际上,您应该编写php模块并在其中使用“splice”。您可以使用
[ext local](+)
,但覆盖或更改默认FreePBX拨号计划的最可靠方法是滚动您自己的FreePBX模块。实际上,无需在拨号计划中使用plus。