我正在为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-回调上下文。
启用了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
提供支持(USE标记)。
我没有使用freepbx,也没有使用任何其他GUI。一切都是通过.conf文件手动配置的。
我所做的唯一调整是将channel.h
从#define AST_MAX_ACCOUNT_CODE 20
更改为#define AST_MAX_ACCOUNT_CODE 256
,以便能够使用更长的帐户代码。
答案 0 :(得分:0)
所按下的数字必须与上下文中的扩展级别相匹配:例如,如果您在queues.conf中具有context = queue_out,并且假设您的录音说“按5留下语音邮件(定期通知):extensions.conf将具有以下内容
[queue_out]
exten => 5,1,Voicemail(123@default)
exten => 5,n,Hangup()
顺带一提,我遇到了同样的问题。