免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 13813 | 回复: 10
打印 上一主题 下一主题

用asterisk实现座席组,碰到个问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-11-12 13:59 |只看该作者 |倒序浏览
1、配置agents.conf,增加了四个座席(我让座席id、座席密码、座席分机三者一样)
agent => 2000,2000,Agent0
agent => 2001,2001,Agent1
agent => 2002,2002,Agent2
agent => 2003,2003,Agent3
2、配置sip.conf,增加了四个座席分机和一个3000模拟外线
[2000]
type=friend
username=2000
host=dynamic
context=default
canreinvite=yes
dtmfmode=rfc2833

[2001]
type=friend
username=2001
host=dynamic
context=default
canreinvite=yes
dtmfmode=rfc2833

[2002]
type=friend
username=2002
host=dynamic
context=default
canreinvite=yes
dtmfmode=rfc2833

[2003]
type=friend
username=2003
host=dynamic
context=default
canreinvite=yes
dtmfmode=rfc2833

[3000]
type=friend
username=3000
host=dynamic
context=default
canreinvite=yes
dtmfmode=rfc2833
3、配置queues.conf,增加一个ACD队列
[MyQueue]
music=default
strategy=ringall
timeout=15
retry=5
wrapuptime=10
maxlen=20
announce-frequency=60
announce-holdtime=yes
member=>Agent/2000
member=>Agent/2001
member=>Agent/2002
member=>Agent/2003
4、配置extensions.conf,设置拨号方案
[default]
;座席拨打1111签入,拨打1110签出,这一段是参考http://www.orderlyq.com/asteriskqueues.html这里的一个例子,签入没有问题,签出不能成功
exten=>1111,1,AgentCallbackLogin(||${CALLERID}@default)
exten=>1110,1,AgentCallbackLogin(||l)

exten=>_2XXX,1,Dial(SIP/${EXTEN})

exten=>8000,1,Answer
exten=>8000,2,Ringing
exten=>8000,3,Wait(2)
exten=>8000,4,Queue(MyQueue)
exten=>8000,5,Hungup

现在,我用sip软件电话登录了2000、2001两座席,用3000拨打8000,2000和2001同时振铃了,2000或2001应答也能成功,但就是没有3000和座席就是不能通话。

大家看看哪里有问题??

下面是可以分析的信息:


*CLI> [Nov 12 18:40:19] NOTICE[3097]: chan_sip.c:13911 handle_request_subscribe: Received SIP subscribe for peer without mailbox: 2000
    -- Executing [8000@default:1] Answer("SIP/10.130.38.30-09922a90", "") in new stack
    -- Executing [8000@default:2] Ringing("SIP/10.130.38.30-09922a90", "") in new stack
    -- Executing [8000@default:3] Wait("SIP/10.130.38.30-09922a90", "2") in new stack
    -- Executing [8000@default:4] Queue("SIP/10.130.38.30-09922a90", "MyQueue") in new stack
    -- Started music on hold, class 'default', on SIP/10.130.38.30-09922a90
    -- outgoing agentcall, to agent '2000', on 'Local/2000@default-3054,1'
    -- outgoing agentcall, to agent '2001', on 'Local/2001@default-0315,1'
    -- Executing [2000@default:1] Dial("Local/2000@default-3054,2", "SIP/2000") in new stack
    -- Called 2000
    -- Local/2000@default-3054,2 requested special control 17, passing it to SIP/2000-0991ee80
    -- Executing [2001@default:1] Dial("Local/2001@default-0315,2", "SIP/2001") in new stack
    -- Called 2001
    -- Local/2001@default-0315,2 requested special control 17, passing it to SIP/2001-09920dc0
    -- SIP/2001-09920dc0 is ringing
    -- Agent/2001 is ringing
    -- SIP/2000-0991ee80 is ringing
    -- Agent/2000 is ringing
    -- SIP/2001-09920dc0 answered Local/2001@default-0315,2
    -- Agent/2001 answered SIP/10.130.38.30-09922a90
    -- Stopped music on hold on SIP/10.130.38.30-09922a90
  == Spawn extension (default, 2000, 1) exited non-zero on 'Local/2000@default-3054,2'
  == Spawn extension (default, 2001, 1) exited non-zero on 'Local/2001@default-0315,2'
  == Spawn extension (default, 8000, 4) exited non-zero on 'SIP/10.130.38.30-09922a90'

论坛徽章:
0
2 [报告]
发表于 2006-11-12 15:27 |只看该作者
没人做过吗?

我刚刚发现一个有趣的现象是如果呼叫入对时实现没有空闲座席,然后再登录座席时,呼叫能转到刚登录的座席,应答成功以后也能通话了。

同时发现下面这段,其实不用配1110这个extension,拨打1111,按提示输入座席id、座席密码、座席分机之后签入,如果在提示输入座席分机时直接按#签出
[default]
;座席拨打1111签入,拨打1110签出,这一段是参考http://www.orderlyq.com/asteriskqueues.html这里的一个例子,签入没有问题,签出不能成功
exten=>1111,1,AgentCallbackLogin(||${CALLERID}@default)
exten=>1110,1,AgentCallbackLogin(||l)

论坛徽章:
0
3 [报告]
发表于 2006-11-12 21:40 |只看该作者
现在,我用sip软件电话登录了2000、2001两座席,用3000拨打8000,2000和2001同时振铃了,2000或2001应答也能成功,但就是没有3000和座席就是不能通话。

---------------------------------
这个是什么意思?

论坛徽章:
0
4 [报告]
发表于 2006-11-13 09:12 |只看该作者
原帖由 servasyy 于 2006-11-12 21:40 发表
现在,我用sip软件电话登录了2000、2001两座席,用3000拨打8000,2000和2001同时振铃了,2000或2001应答也能成功,但就是没有3000和座席就是不能通话。

---------------------------------
这个是什么意思?


就是说如果2000应答了,这时候3000和2000都显示呼叫已建立,但对方说话各自听不到

论坛徽章:
0
5 [报告]
发表于 2006-11-13 10:06 |只看该作者
哦?我试了一下,我没有用agent,我直接用SIP,是可以的

论坛徽章:
0
6 [报告]
发表于 2006-11-13 13:40 |只看该作者
原帖由 servasyy 于 2006-11-13 10:06 发表
哦?我试了一下,我没有用agent,我直接用SIP,是可以的


直接用sip,当然没有问题

我说得是通过queue分配座席的情况。

论坛徽章:
0
7 [报告]
发表于 2006-11-13 14:54 |只看该作者
我说的也是queue,但是没有用chan_agent,而是直接使用SIP,
[MyQueue]
music=default
strategy=ringall
timeout=15
retry=5
wrapuptime=10
maxlen=20
announce-frequency=60
announce-holdtime=yes
member=>SIP/2000
member=>SIP/2001
member=>SIP/2002
member=>SIP/2003

论坛徽章:
0
8 [报告]
发表于 2006-11-13 14:54 |只看该作者
不知道为什么一定要用agent,有什么好处吗?

论坛徽章:
0
9 [报告]
发表于 2006-11-13 15:13 |只看该作者
原帖由 servasyy 于 2006-11-13 14:54 发表
不知道为什么一定要用agent,有什么好处吗?


因为我想座席能和业务结合起来,不过我事先也以为queue的member必须是座席,现在听你这么一说,一会也以sip为queue的member试试。


上午,找了个兄弟分析了一下,发现在

  1. exten=>8000,1,Answer
  2. exten=>8000,2,Ringing
  3. exten=>8000,3,Wait(2)
  4. exten=>8000,4,Queue(MyQueue)
  5. exten=>8000,5,Hungup
复制代码

Queue(MyQueue)之前加一条Playback播放任一录音,就正常了,现在是这样的:

  1. exten=>8000,1,Answer
  2. exten=>8000,2,Ringing
  3. exten=>8000,3,Wait(2)
  4. exten=>8000,4,Playback(transfer,skip)
  5. exten=>8000,5,Queue(MyQueue)
  6. exten=>8000,6,Hungup
复制代码


研究asterisk没几天,还没时间去看代码。
你可以改成agent试试,然后看是不是有同样的问题,如果是,应该就是asterisk的bug了。

论坛徽章:
0
10 [报告]
发表于 2006-11-13 16:14 |只看该作者
恩,我研究一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP