【发布时间】:2019-05-07 03:56:30
【问题描述】:
我正在为 Asterisk 队列实现回调服务。 这个想法是将所有传入呼叫放在一个队列中。播放一条消息,让呼叫者知道他们可以排队等候直到有座席有空,也可以按“2”挂断,然后让座席尽快给他们回电。
我在 queues.conf 中为入站队列定义了一个上下文,如下所示:
[qIngresoCC]
...
context=qIngresoCC-callback
...
并在extensions.conf中定义了相应的条目:
[qIngresoCC-callback]
exten = > 2,1,NoOp("El cliente ${CALLERID(all)} solicita CallBack")
same => n,AGI(add_channel_to_callback.php)
same => n,Playback(goodbye_for_the_best)
same => n,Hangup()
来电被正确发送到队列,播放公告,但是当按下“2”时,呼叫不会被发送到 qIngresoCC-callback 上下文。
DTMF 日志记录已启用,我可以看到 Asterisk 接收到它,但它根本不会跳转到指定的上下文。
[Jul 4 10:45:47] DTMF[84833][C-0000014d]: channel.c:4017 __ast_read: DTMF end '2' received on SIP/axtel-rappi-0000027b, duration 0 ms
[Jul 4 10:45:47] DTMF[84833][C-0000014d]: channel.c:4076 __ast_read: DTMF end accepted without begin '2' on SIP/axtel-rappi-0000027b
[Jul 4 10:45:47] DTMF[84833][C-0000014d]: channel.c:4087 __ast_read: DTMF end passthrough '2' on SIP/axtel-rappi-0000027b
我错过了什么?
更新
我忘了说明:
我在 Gentoo 上使用从源代码(由 Portage)编译的 Asterisk 13.14.0,并支持(使用标志)caps, curl, http, iconv, odbc, pjproject, postgres, samples, srtp。
我没有使用 freepbx 或任何其他 GUI。一切都是通过 .conf 文件手动配置的。
我对源的唯一调整是将 channel.h 从 #define AST_MAX_ACCOUNT_CODE 20 更改为 #define AST_MAX_ACCOUNT_CODE 256 以便能够使用更长的帐户代码。
【问题讨论】:
-
检查 freepbx 源代码以防突破 ivr。
-
对不起,我忘了说。我没有使用freepbx。我使用从源代码编译的普通 Asterisk。我已经更新了 OP。
-
是的,但它在 freepbx 中工作,所以在拨号方案中检查没有问题。 freepbx中队列模块登录没有AGI,纯拨号方案。
-
所以...我尝试了您的建议。我检查了 freepbx 中的工作配置,但没有做任何特别或不同的事情。该队列定义了一个上下文,当呼叫到达该队列时,按 any 数字正确地将呼叫发送到中断上下文。它没有更多内容,与我的配置没有什么本质不同。即使我复制并粘贴这些 conf 行,它仍然不起作用。
-
那么你的建议是什么?自己测试你的配置还是什么?该功能绝对可以按描述工作。