在freepbx内编程Asterisk IVR当职员挂断时继续程序问题

在freepbx内编程Asterisk IVR当职员挂断时继续程序问题

我正在尝试解决 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)

相关内容