Asterisk Queue

Asterisk 中的队列,在做 IVR 时作用重大,比如处理呼叫排队。和 MeetMe 类似,有动态队列和静态队列之分。

先谈谈静态队列,在 queues.conf 中配置如下

[queue_sip]
musicclass=default     ;默认播放的音乐  
strategy= ringall       ;振铃策略  
timeout=15              ;每个座席分机的振铃时间  
retry=0          ;表示队列呼叫失败后,给多少秒再重新呼叫分机的振铃时间,一般我设置为0  
weight=0          ;权重,一般设置默认为0
wrapuptime=0
member=>SIP/111,1
member=>SIP/222,n
member=>SIP/333,n
member=>SIP/444,n
member=>SIP/555,n

当然了事先得到 sip.conf 里创建 5 个分机号

sip.conf
--------
 
[template](!)
type=peer
context=devices
host=dynamic
secret=123456
dtmfmode=rfc2833
disallow=all
allow=ulaw
 
[111](template)
[222](template)
[333](template)
[444](template)
[555](template)

再在 extensions.conf 写拨号计划

[devices]
exten => _X.,1,Answer()  
same=>n,Queue(queue_sip,t,,,20)   ;20 秒为呼叫整个该队列的超时时间  
same=>n,Hangup()  

这时拨打话机进入 queue_sip 队列时,会依次呼叫队列的话机。

最后看看动态队列,在 queues.conf 中配置

queues.conf
----------
 
[queue_template](!)
musicclass=default      ; play [default] music
strategy=rrmemory       ; use the Round Robin Memory strategy
joinempty=yes           ; join the queue when no members available
leavewhenempty=no       ; don't leave the queue no members available
ringinuse=no            ; don't ring members when already InUse
 
[sales](queue_template)
; Sales queue
 
[support](queue_template)
; Support queue

asterisk -r 进入命令行,使用 queue show [queue_name] 查看队列成员信息,使用 queue add member <channel> to <queue>queue remove member <channel> from <queue> 动态添加、删除队列成员,这样就可以实现 IVR 进线不会呼叫在休息中客服,当然了也可以使用 queue pause member sip_name queue queue_namequeue unpause member sip_name queue queue_name 来达到同样的效果,具体使用可参照 此篇文章 。同时拨号计划对应的应用如下

AddQueueMember(queue_name,sip_name)
RemoveQueueMember(queue_name,sip_name) 
PauseQueueMember(PauseQueueMember)
UnpauseQueueMember(PauseQueueMember)

猜你喜欢

转载自blog.csdn.net/molaifeng/article/details/83270447