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_name
、queue unpause member sip_name queue queue_name
来达到同样的效果,具体使用可参照 此篇文章 。同时拨号计划对应的应用如下
AddQueueMember(queue_name,sip_name)
RemoveQueueMember(queue_name,sip_name)
PauseQueueMember(PauseQueueMember)
UnpauseQueueMember(PauseQueueMember)