Procházet zdrojové kódy

Merge branch 'master' into zz12356

zhoufan %!s(int64=8) %!d(string=před) měsíci
rodič
revize
9e8fdd11d8

+ 2 - 2
midware-service/src/main/java/midware/service/init/EslClientService.java

@@ -336,8 +336,8 @@ public class EslClientService {
336 336
         try {
337 337
             String fix = action.substring(action.lastIndexOf("|") + 1);
338 338
             String command = EslCommandEnum.uuid_broadcast.name();
339
-            String arg = chanId + " att_xfer::{origination_caller_id_number=12356,record_concat_video=true"
340
-                    + ",call_caller=" + callerNum + ",call_callee=" + calleeNum.substring(fix.length()) + "}" + getCallString(calleeNum)
339
+            String arg = chanId + " att_xfer::{record_concat_video=true,call_caller=" + callerNum
340
+                    + ",call_callee=" + calleeNum.substring(fix.length()) + getOrigination(calleeNum)+ "}" + getCallString(calleeNum)
341 341
                     + "\r\nJob-UUID: " + action + "|" + System.currentTimeMillis();
342 342
             result = client.sendAsyncApiCommand(command, arg);
343 343
 

+ 100 - 108
midware-service/src/main/java/midware/service/init/WebSocketService.java

@@ -172,14 +172,12 @@ public class WebSocketService {
172 172
                         String DestinationNumber = map.get("DestinationNumber").toString();
173 173
                         String Fix = map.get("Fix") != null ? map.get("Fix").toString() : "";
174 174
                         param = DestinationNumber + (Fix.equals("") ? "" : "|" + Fix);
175
-                        if (StringHelper.isNotEmpty(DestinationNumber)) {
176
-                            Agent tAgent = EslCommon.getAgentByExten(DestinationNumber);
177
-                            if (tAgent != null && tAgent.getAgentState() != EslAgentEnum.free.ordinal()) {
178
-                                result.put("Result", "目标坐席忙碌中");
179
-                            } else {
180
-                                agent.setOpType(type);
181
-                                isExec = eslClientService.extenCall(agent.getExten(), DestinationNumber, type + "|" + agentId + "|" + DestinationNumber + "|" + Fix);
182
-                            }
175
+                        String check = checkTargetNumber(agent.getExten() ,DestinationNumber);
176
+                        if (StringHelper.isEmpty(check)) {
177
+                            agent.setOpType(type);
178
+                            isExec = eslClientService.extenCall(agent.getExten(), DestinationNumber, type + "|" + agentId + "|" + DestinationNumber + "|" + Fix);
179
+                        } else {
180
+                            result.put("Result", check);
183 181
                         }
184 182
                     }
185 183
                     break;
@@ -213,22 +211,16 @@ public class WebSocketService {
213 211
                         String DestinationNumber = map.get("DestinationNumber").toString();
214 212
                         String Fix = map.get("Fix") != null ? map.get("Fix").toString() : "";
215 213
                         param = DestinationNumber + (Fix.equals("") ? "" : "|" + Fix);
216
-                        if (StringHelper.isNotEmpty(DestinationNumber)) {
217
-                            if (DestinationNumber.equals(agent.getExten())) {
218
-                                result.put("Result", "目标不能是自己");
214
+                        String check = checkTargetNumber(agent.getExten(),DestinationNumber);
215
+                        if (StringHelper.isEmpty(check)) {
216
+                            if (chan.getSessionSort() == 1) {//呼出方不可以转移
217
+                                result.put("Result", "主叫不能此操作");
219 218
                             } else {
220
-                                Agent tAgent = EslCommon.getAgentByExten(DestinationNumber);
221
-                                if (tAgent != null && tAgent.getAgentState() != EslAgentEnum.free.ordinal()) {
222
-                                    result.put("Result", "目标坐席忙碌中");
223
-                                } else if (EslCommon.isInSession(DestinationNumber)) {
224
-                                    result.put("Result", "目标号码忙碌中");
225
-                                } else if (chan.getSessionSort() == 1) {//呼出方不可以转移
226
-                                    result.put("Result", "主叫不能此操作");
227
-                                } else {
228
-                                    agent.setOpType(type);
229
-                                    isExec = eslClientService.transfer(chan.getSessionId(), agent.getExten(), DestinationNumber, type + "|" + agentId + "|" + DestinationNumber+ "|" + Fix);
230
-                                }
219
+                                agent.setOpType(type);
220
+                                isExec = eslClientService.transfer(chan.getSessionId(), agent.getExten(), DestinationNumber, type + "|" + agentId + "|" + DestinationNumber + "|" + Fix);
231 221
                             }
222
+                        } else {
223
+                            result.put("Result", check);
232 224
                         }
233 225
                     }
234 226
                     break;
@@ -238,22 +230,16 @@ public class WebSocketService {
238 230
                         String DestinationNumber = map.get("DestinationNumber").toString();
239 231
                         String Fix = map.get("Fix") != null ? map.get("Fix").toString() : "";
240 232
                         param = DestinationNumber + (Fix.equals("") ? "" : "|" + Fix);
241
-                        if (StringHelper.isNotEmpty(DestinationNumber)) {
242
-                            if (DestinationNumber.equals(agent.getExten())) {
243
-                                result.put("Result", "目标不能是自己");
233
+                        String check = checkTargetNumber(agent.getExten(), DestinationNumber);
234
+                        if (StringHelper.isEmpty(check)) {
235
+                            if (chan.getSessionSort() == 1) {//呼出方不可以转移
236
+                                result.put("Result", "主叫不能此操作");
244 237
                             } else {
245
-                                Agent tAgent = EslCommon.getAgentByExten(DestinationNumber);
246
-                                if (tAgent != null && tAgent.getAgentState() != EslAgentEnum.free.ordinal()) {
247
-                                    result.put("Result", "目标坐席忙碌中");
248
-                                } else if (EslCommon.isInSession(DestinationNumber)) {
249
-                                    result.put("Result", "目标号码忙碌中");
250
-                                } else if (chan.getSessionSort() == 1) {//呼出方不可以协商
251
-                                    result.put("Result", "主叫不能此操作");
252
-                                } else {
253
-                                    agent.setOpType(type);
254
-                                    isExec = eslClientService.consult(chan.getSessionId(), agent.getExten(), DestinationNumber, type + "|" + agentId + "|" + DestinationNumber+ "|" + Fix);
255
-                                }
238
+                                agent.setOpType(type);
239
+                                isExec = eslClientService.consult(chan.getSessionId(), agent.getExten(), DestinationNumber, type + "|" + agentId + "|" + DestinationNumber + "|" + Fix);
256 240
                             }
241
+                        } else {
242
+                            result.put("Result", check);
257 243
                         }
258 244
                     }
259 245
                     break;
@@ -272,22 +258,15 @@ public class WebSocketService {
272 258
                         String DestinationNumber = map.get("DestinationNumber").toString();
273 259
                         String Fix = map.get("Fix") != null ? map.get("Fix").toString() : "";
274 260
                         param = DestinationNumber + (Fix.equals("") ? "" : "|" + Fix);
275
-                        if (StringHelper.isNotEmpty(DestinationNumber)) {
276
-                            if (DestinationNumber.equals(agent.getExten())) {
277
-                                result.put("Result", "目标不能是自己");
278
-                            } else {
279
-                                Agent tAgent = EslCommon.getAgentByExten(DestinationNumber);
280
-                                if (tAgent != null && tAgent.getAgentState() != EslAgentEnum.free.ordinal()) {
281
-                                    result.put("Result", "目标坐席忙碌中");
282
-                                } else if (EslCommon.isInSession(DestinationNumber)) {
283
-                                    result.put("Result", "目标号码忙碌中");
284
-                                } else {
285
-                                    agent.setOpType(type);
286
-                                    String mute = map.get("Mute") != null ? map.get("Mute").toString() : "";
287
-                                    EslCommon.getSessionById(chan.getSessionId()).setMeetingMute(mute.equals("true"));
288
-                                    isExec = eslClientService.callJoinMeeting(agent.getExten(), DestinationNumber, chan.getSessionId(), type + "|" + agentId + "|" + DestinationNumber+ "|" + Fix);
289
-                                }
290
-                            }
261
+
262
+                        String check = checkTargetNumber(agent.getExten(), DestinationNumber);
263
+                        if (StringHelper.isEmpty(check)) {
264
+                            agent.setOpType(type);
265
+                            String mute = map.get("Mute") != null ? map.get("Mute").toString() : "";
266
+                            EslCommon.getSessionById(chan.getSessionId()).setMeetingMute(mute.equals("true"));
267
+                            isExec = eslClientService.callJoinMeeting(agent.getExten(), DestinationNumber, chan.getSessionId(), type + "|" + agentId + "|" + DestinationNumber+ "|" + Fix);
268
+                        } else {
269
+                            result.put("Result", check);
291 270
                         }
292 271
                     }
293 272
                     break;
@@ -348,20 +327,16 @@ public class WebSocketService {
348 327
                         String TargetAgentID = map.get("TargetAgentID").toString();
349 328
                         param = TargetAgentID;
350 329
                         if (StringHelper.isNotEmpty(TargetAgentID)) {
351
-                            if (TargetAgentID.equals(agentId)) {
352
-                                result.put("Result", "目标不能是自己");
353
-                            } else {
354
-                                Agent tAgent = EslCommon.getAgent(TargetAgentID);
355
-                                String check = checkTargetAgentTalk(tAgent);
356
-                                if (StringHelper.isEmpty(check)) {
357
-                                    Channel tchan = EslCommon.getChanByExten(tAgent.getExten());
358
-                                    if (tchan != null && StringHelper.isNotEmpty(tchan.getSessionId())) {
359
-                                        agent.setOpType(type);
360
-                                        isExec = eslClientService.listen(agent.getExten(),tchan.getNumber(), tchan.getSessionId(), type + "|" + agentId + "|" + agent.getExten());
361
-                                    }
362
-                                } else {
363
-                                    result.put("Result", check);
330
+                            Agent tAgent = EslCommon.getAgent(TargetAgentID);
331
+                            String check = checkTargetAgentTalk(tAgent);
332
+                            if (StringHelper.isEmpty(check)) {
333
+                                Channel tchan = EslCommon.getChanByExten(tAgent.getExten());
334
+                                if (tchan != null && StringHelper.isNotEmpty(tchan.getSessionId())) {
335
+                                    agent.setOpType(type);
336
+                                    isExec = eslClientService.listen(agent.getExten(),tchan.getNumber(), tchan.getSessionId(), type + "|" + agentId + "|" + agent.getExten());
364 337
                                 }
338
+                            } else {
339
+                                result.put("Result", check);
365 340
                             }
366 341
                         }
367 342
                     }
@@ -372,21 +347,17 @@ public class WebSocketService {
372 347
                         String TargetAgentID = map.get("TargetAgentID").toString();
373 348
                         param = TargetAgentID;
374 349
                         if (StringHelper.isNotEmpty(TargetAgentID)) {
375
-                            if (TargetAgentID.equals(agentId)) {
376
-                                result.put("Result", "目标不能是自己");
377
-                            } else {
378
-                                Agent tAgent = EslCommon.getAgent(TargetAgentID);
379
-                                String check = checkTargetAgentTalk(tAgent);
380
-                                if (StringHelper.isEmpty(check)) {
381
-                                    Channel tchan = EslCommon.getChanByExten(tAgent.getExten());
382
-                                    if (tchan != null && StringHelper.isNotEmpty(tchan.getSessionId())) {
383
-                                        agent.setOpType(type);
384
-                                        String sid = tchan.getSessionId();
385
-                                        isExec = eslClientService.insert(agent.getExten(), tchan.getNumber(), sid, type + "|" + agentId + "|" + agent.getExten());
386
-                                    }
387
-                                } else {
388
-                                    result.put("Result", check);
350
+                            Agent tAgent = EslCommon.getAgent(TargetAgentID);
351
+                            String check = checkTargetAgentTalk(tAgent);
352
+                            if (StringHelper.isEmpty(check)) {
353
+                                Channel tchan = EslCommon.getChanByExten(tAgent.getExten());
354
+                                if (tchan != null && StringHelper.isNotEmpty(tchan.getSessionId())) {
355
+                                    agent.setOpType(type);
356
+                                    String sid = tchan.getSessionId();
357
+                                    isExec = eslClientService.insert(agent.getExten(), tchan.getNumber(), sid, type + "|" + agentId + "|" + agent.getExten());
389 358
                                 }
359
+                            } else {
360
+                                result.put("Result", check);
390 361
                             }
391 362
                         }
392 363
                     }
@@ -397,22 +368,18 @@ public class WebSocketService {
397 368
                         String TargetAgentID = map.get("TargetAgentID").toString();
398 369
                         param = TargetAgentID;
399 370
                         if (StringHelper.isNotEmpty(TargetAgentID)) {
400
-                            if (TargetAgentID.equals(agentId)) {
401
-                                result.put("Result", "目标不能是自己");
402
-                            } else {
403
-                                Agent tAgent = EslCommon.getAgent(TargetAgentID);
404
-                                String check = checkTargetAgentTalk(tAgent);
405
-                                if (StringHelper.isEmpty(check)) {
406
-                                    Channel tchan = EslCommon.getChanByExten(tAgent.getExten());
407
-                                    if (tchan != null && StringHelper.isNotEmpty(tchan.getSessionId())) {
408
-                                        agent.setOpType(type);
409
-                                        String sid = tchan.getSessionId();
410
-                                        Channel channel = EslCommon.getFirstChanBySessionId(sid);
411
-                                        isExec = eslClientService.intercept(agent.getExten(), tAgent.getExten(), channel.getChanId(), sid, type + "|" + agentId + "|" + agent.getExten());
412
-                                    }
413
-                                } else {
414
-                                    result.put("Result", check);
371
+                            Agent tAgent = EslCommon.getAgent(TargetAgentID);
372
+                            String check = checkTargetAgentTalk(tAgent);
373
+                            if (StringHelper.isEmpty(check)) {
374
+                                Channel tchan = EslCommon.getChanByExten(tAgent.getExten());
375
+                                if (tchan != null && StringHelper.isNotEmpty(tchan.getSessionId())) {
376
+                                    agent.setOpType(type);
377
+                                    String sid = tchan.getSessionId();
378
+                                    Channel channel = EslCommon.getFirstChanBySessionId(sid);
379
+                                    isExec = eslClientService.intercept(agent.getExten(), tAgent.getExten(), channel.getChanId(), sid, type + "|" + agentId + "|" + agent.getExten());
415 380
                                 }
381
+                            } else {
382
+                                result.put("Result", check);
416 383
                             }
417 384
                         }
418 385
                     }
@@ -422,19 +389,15 @@ public class WebSocketService {
422 389
                         String TargetAgentID = map.get("TargetAgentID").toString();
423 390
                         param = TargetAgentID;
424 391
                         if (StringHelper.isNotEmpty(TargetAgentID)) {
425
-                            if (TargetAgentID.equals(agentId)) {
426
-                                result.put("Result", "目标不能是自己");
427
-                            } else {
428
-                                Agent tAgent = EslCommon.getAgent(TargetAgentID);
429
-                                String check = checkTargetAgentTalk(tAgent);
430
-                                if (StringHelper.isEmpty(check)) {
431
-                                    Channel tchan = EslCommon.getChanByExten(tAgent.getExten());
432
-                                    if (tchan != null && StringHelper.isNotEmpty(tchan.getSessionId())) {
433
-                                        isExec = eslClientService.kill(tchan.getSessionId(),type + "|" + agentId);
434
-                                    }
435
-                                } else {
436
-                                    result.put("Result", check);
392
+                            Agent tAgent = EslCommon.getAgent(TargetAgentID);
393
+                            String check = checkTargetAgentTalk(tAgent);
394
+                            if (StringHelper.isEmpty(check)) {
395
+                                Channel tchan = EslCommon.getChanByExten(tAgent.getExten());
396
+                                if (tchan != null && StringHelper.isNotEmpty(tchan.getSessionId())) {
397
+                                    isExec = eslClientService.kill(tchan.getSessionId(),type + "|" + agentId);
437 398
                                 }
399
+                            } else {
400
+                                result.put("Result", check);
438 401
                             }
439 402
                         }
440 403
                     }
@@ -542,8 +505,37 @@ public class WebSocketService {
542 505
         String result = "";
543 506
         if (agent == null) {
544 507
             result = "目标坐席未签入";
545
-        } else if (agent.getAgentState() != EslAgentEnum.talking.ordinal()) {
546
-            result = "目标坐席未通话";
508
+        } else {
509
+            if (agent.getAgent().equals(agentId)) {
510
+                result = "目标不能是自己";
511
+            }else if (agent.getAgentState() != EslAgentEnum.talking.ordinal()) {
512
+                result = "目标坐席未通话";
513
+            }
514
+        }
515
+        return result;
516
+    }
517
+
518
+    //判断目标号码是否可以呼出
519
+    private String checkTargetNumber(String exten,String num) {
520
+        String result = "";
521
+        if (StringHelper.isEmpty(num)) {
522
+            result = "目标号码不能为空";
523
+        } else {
524
+            if (exten.equals(num)) {
525
+                result = "目标不能是自己";
526
+            } else {
527
+                Channel chan = EslCommon.getChanByNumber(num);
528
+                if (chan != null) {
529
+                    if (!chan.getSessionId().equals("")) {
530
+                        result = "目标号码忙碌中";
531
+                    } else if (chan.getType() == 1) {//坐席
532
+                        Agent tAgent = EslCommon.getAgentByExten(num);
533
+                        if (tAgent != null && tAgent.getAgentState() != EslAgentEnum.free.ordinal()) {
534
+                            result = "目标坐席忙碌中";
535
+                        }
536
+                    }
537
+                }
538
+            }
547 539
         }
548 540
         return result;
549 541
     }