|
|
@@ -158,6 +158,7 @@ public class EslEventListener implements IEslEventListener {
|
|
158
|
158
|
Channel chan = EslCommon.getChanByNumber(chanNames[2]);
|
|
159
|
159
|
Agent agent = EslCommon.getAgentByExten(chanNames[2]);
|
|
160
|
160
|
Session session = EslCommon.getSessionById(callId);
|
|
|
161
|
+ int callType = EslCommon.existExten(callerNum) ? 2 : 1;
|
|
161
|
162
|
|
|
162
|
163
|
LambdaUpdateWrapper<Record> uw;
|
|
163
|
164
|
|
|
|
@@ -169,7 +170,6 @@ public class EslEventListener implements IEslEventListener {
|
|
169
|
170
|
chan.setVideo(isVideo);
|
|
170
|
171
|
}
|
|
171
|
172
|
if (session == null) {
|
|
172
|
|
- int callType = EslCommon.existExten(callerNum) ? 2 : 1;
|
|
173
|
173
|
session = new Session();
|
|
174
|
174
|
session.setSessionId(callId);
|
|
175
|
175
|
session.setType(callType);
|
|
|
@@ -188,15 +188,14 @@ public class EslEventListener implements IEslEventListener {
|
|
188
|
188
|
|
|
189
|
189
|
//更新坐席状态
|
|
190
|
190
|
if (agent != null) {
|
|
191
|
|
- if (session.getType() == 2) {
|
|
|
191
|
+ if (callType==2) {
|
|
192
|
192
|
eslClientService.setWork(agent.getAgent(), false);
|
|
193
|
193
|
}
|
|
194
|
194
|
agent.setAgentState(EslAgentNum.requested.ordinal());
|
|
195
|
195
|
if (agent.getOpType() == 4) return;
|
|
196
|
196
|
}
|
|
197
|
197
|
|
|
198
|
|
- //呼出主叫通道/转移被叫通道 新增记录
|
|
199
|
|
- if (session.getType() == 2) {
|
|
|
198
|
+ if (callType==2) {
|
|
200
|
199
|
Agent callerAgent = EslCommon.getAgentByExten(callerNum);
|
|
201
|
200
|
if (callerAgent != null) callerAgent.setCallType(0);
|
|
202
|
201
|
Agent calleeAgent = EslCommon.getAgentByExten(calleeNum);
|
|
|
@@ -237,7 +236,7 @@ public class EslEventListener implements IEslEventListener {
|
|
237
|
236
|
}
|
|
238
|
237
|
}
|
|
239
|
238
|
//呼入时查找记录更新被叫工号分机号坐席组
|
|
240
|
|
- if (session.getType() == 1 && calleeNum.equals(chanNames[2])) {
|
|
|
239
|
+ if (callType==1) {
|
|
241
|
240
|
LambdaQueryWrapper<Record> qw = new LambdaQueryWrapper<>();
|
|
242
|
241
|
qw.eq(Record::getUuid, callId);
|
|
243
|
242
|
qw.select(Record::getId).last("limit 1");
|
|
|
@@ -283,12 +282,11 @@ public class EslEventListener implements IEslEventListener {
|
|
283
|
282
|
}
|
|
284
|
283
|
break;
|
|
285
|
284
|
case CHANNEL_ANSWER:
|
|
286
|
|
- if (callerNum.equals(chanNames[2])) {
|
|
287
|
|
- }
|
|
288
|
285
|
if (chan != null && !chan.isAnswer()) {
|
|
289
|
286
|
chan.setAnswer(true);
|
|
|
287
|
+
|
|
290
|
288
|
//呼出号码应答通知坐席
|
|
291
|
|
- if (session != null && session.getType() == 2) {
|
|
|
289
|
+ if (callType==2) {
|
|
292
|
290
|
if (!EslCommon.sessionOpera.containsKey(chanNames[2])) {
|
|
293
|
291
|
try {
|
|
294
|
292
|
Thread.sleep(300);
|
|
|
@@ -315,14 +313,14 @@ public class EslEventListener implements IEslEventListener {
|
|
315
|
313
|
agent.setAgentState(EslAgentNum.talking.ordinal());
|
|
316
|
314
|
if (agent.getOpType() == 4) return;
|
|
317
|
315
|
}
|
|
318
|
|
- //呼出
|
|
319
|
|
- if (session.getType() == 2 && !session.isAnswer()) {
|
|
|
316
|
+ //分机打分机时更新主叫坐席状态
|
|
|
317
|
+ if (callType==2 && !session.isAnswer()) {
|
|
320
|
318
|
Agent callerAgent = EslCommon.getAgentByExten(callerNum);
|
|
321
|
319
|
if (callerAgent != null) callerAgent.setAgentState(EslAgentNum.talking.ordinal());
|
|
322
|
320
|
}
|
|
323
|
321
|
|
|
324
|
322
|
String ext = callerNum;
|
|
325
|
|
- if (session.getType() == 1) ext = calleeNum;
|
|
|
323
|
+ if (callType==1) ext = calleeNum;
|
|
326
|
324
|
|
|
327
|
325
|
String sid = session.getSessionId(), cid = chan.getChanId();
|
|
328
|
326
|
if (session.isVideo()) {
|
|
|
@@ -362,7 +360,7 @@ public class EslEventListener implements IEslEventListener {
|
|
362
|
360
|
break;
|
|
363
|
361
|
case CHANNEL_BRIDGE:
|
|
364
|
362
|
//呼入播报工号
|
|
365
|
|
- if (session != null && session.getType() == 1) {
|
|
|
363
|
+ if (callType==1) {
|
|
366
|
364
|
Agent agent1 = EslCommon.getAgentByExten(calleeNum);
|
|
367
|
365
|
if (agent1 != null) eslClientService.playAgent(agent1.getAgent(), chan.getChanId());
|
|
368
|
366
|
}
|
|
|
@@ -377,7 +375,7 @@ public class EslEventListener implements IEslEventListener {
|
|
377
|
375
|
if (session == null) session = EslCommon.getSessionById(sid);
|
|
378
|
376
|
|
|
379
|
377
|
//呼出号码未接通挂断通知坐席
|
|
380
|
|
- if (session != null && session.getType() == 2 && !chan.isAnswer()) {
|
|
|
378
|
+ if (callType==2 && !chan.isAnswer()) {
|
|
381
|
379
|
if (!EslCommon.sessionOpera.containsKey(calleeNum)) {
|
|
382
|
380
|
try {
|
|
383
|
381
|
Thread.sleep(300);
|
|
|
@@ -397,7 +395,7 @@ public class EslEventListener implements IEslEventListener {
|
|
397
|
395
|
if (chan.getType() == 1) {
|
|
398
|
396
|
if (agent != null) {
|
|
399
|
397
|
String agentNo = agent.getAgent();
|
|
400
|
|
- if (session.getType() == 1 && chan.isAnswer()) {//呼入接通后挂断-话后处理
|
|
|
398
|
+ if (callType==1 && chan.isAnswer()) {//呼入接通后挂断-话后处理
|
|
401
|
399
|
agent.setAgentState(EslAgentNum.aftertalk.ordinal());
|
|
402
|
400
|
new ScheduledThreadPoolExecutor(1).schedule(() -> {
|
|
403
|
401
|
Agent agent2 = EslCommon.getAgent(agentNo);
|
|
|
@@ -409,7 +407,7 @@ public class EslEventListener implements IEslEventListener {
|
|
409
|
407
|
chan.setSessionId("");
|
|
410
|
408
|
agent.setAgentState(EslAgentNum.free.ordinal());
|
|
411
|
409
|
}
|
|
412
|
|
- if (session.getType() == 2) {
|
|
|
410
|
+ if (callType==2) {
|
|
413
|
411
|
eslClientService.setWork(agentNo, true);
|
|
414
|
412
|
}
|
|
415
|
413
|
agent.setCallType(0);
|