我正在尝试解决 IVR 的问题,我正在尝试弄清楚如何在职员挂断时继续呼叫,以进行评估。
出色地...
我发现队列命令可以通过某些特定选项来做到这一点,问题是队列命令使用 100% 的 CPU 来打破星号...(所以队列命令根本不起作用)
如果我替换这个工作代码:
exten => 1235,n,Goto(ext-queues,2026,1)
这样:
exten => 1235,n,queue(2026,c)
队列看起来很好,音乐开始播放,但没有电话铃声......并且 CPU 进入 100% 制动星号。
在 FreePBX 论坛中,我收到一些反馈说我想要做的事情在新的 FreePBX 版本中的 FreePBX 上下文中是不可能的,那么如何转义此上下文或进行某种降级,或编辑一些嵌入式脚本来解决此问题?
我有其他选择可以使用队列命令,或者让程序在职员回答挂断之前继续执行,并且星号程序继续执行?
答案1
经过长时间的研究,我发现了一个解决方法:
创建脚本于/usr/local/bin/freepbx_fix_queue_members.sh与以下几行:
#!/bin/bash
cp /etc/asterisk/queues_additional.conf /etc/asterisk/queues_additional.conf-freepbx
sed 's/member=Local\/\([0-9a-zA-Z_]*\).*,\(.*\)/member=SIP\/\1,\2/' </etc/asterisk/queues_additional.conf-freepbx >/etc/asterisk/queues_additional.conf
asterisk -rx "reload"
并赋予其执行权限。
chmod +x /usr/local/bin/freepbx_fix_queue_members.sh
更改 /etc/amportal.conf 上的 POST_RELOAD 参数以加载新脚本:
# POST_RELOAD Script
# Default Value:
POST_RELOAD=/usr/local/bin/freepbx_fix_queue_members.sh
重新启动 ASTERISK,并首次运行脚本:
/usr/local/bin/freepbx_fix_queue_members.sh
就是这样,现在队列命令就可以工作了!
现在,您可以在自定义代码中使用队列 c 选项,以便在职员挂断后继续执行脚本。
exten => 1235,n,queue(2026,c)
exten => 1235,n,goto(evaluation)