Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
caosy
/
fun-admin
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Members
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
94138452
authored
Sep 06, 2017
by
lyhuang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
呼叫弹屏功能添加
parent
3cf033f7
Show whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
1091 additions
and
0 deletions
src/main/java/com/ctrip/fun/admin/controller/tools/CallCenterController.java
src/main/java/com/ctrip/fun/admin/eventhandler/BindEventHandler.java
src/main/java/com/ctrip/fun/admin/eventhandler/BridgeEventHandler.java
src/main/java/com/ctrip/fun/admin/eventhandler/CdrEventHandler.java
src/main/java/com/ctrip/fun/admin/eventhandler/ChannelRouteEventHandler.java
src/main/java/com/ctrip/fun/admin/eventhandler/NewStateEventHandler.java
src/main/java/com/ctrip/fun/admin/eventhandler/QueueMemberPauseEventHandler.java
src/main/java/com/ctrip/fun/admin/eventhandler/SqeEventHandler.java
src/main/java/com/ctrip/fun/admin/vo/callcenter/AbstractEventHandler.java
src/main/java/com/ctrip/fun/admin/vo/callcenter/BridgeEvent.java
src/main/java/com/ctrip/fun/admin/vo/callcenter/RsmwCdrEvent.java
src/main/java/com/ctrip/fun/admin/vo/callcenter/RsmwChannelRouteEvent.java
src/main/java/com/ctrip/fun/admin/vo/callcenter/RsmwNewStateEvent.java
src/main/java/com/ctrip/fun/admin/controller/tools/CallCenterController.java
View file @
94138452
...
...
@@ -2,8 +2,11 @@ package com.ctrip.fun.admin.controller.tools;
import
java.util.Collection
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.concurrent.ConcurrentHashMap
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.lang.StringUtils
;
...
...
@@ -17,17 +20,28 @@ import org.springframework.ui.ModelMap;
import
org.springframework.validation.BindingResult
;
import
org.springframework.validation.FieldError
;
import
org.springframework.web.bind.annotation.ModelAttribute
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.ResponseBody
;
import
org.springframework.web.bind.annotation.ResponseStatus
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.ctrip.fun.admin.exception.CommonException
;
import
com.ctrip.fun.admin.form.tools.UserRegisterForm
;
import
com.ctrip.fun.admin.eventhandler.BindEventHandler
;
import
com.ctrip.fun.admin.eventhandler.BridgeEventHandler
;
import
com.ctrip.fun.admin.eventhandler.CdrEventHandler
;
import
com.ctrip.fun.admin.eventhandler.ChannelRouteEventHandler
;
import
com.ctrip.fun.admin.eventhandler.NewStateEventHandler
;
import
com.ctrip.fun.admin.eventhandler.QueueMemberPauseEventHandler
;
import
com.ctrip.fun.admin.eventhandler.SqeEventHandler
;
import
com.ctrip.fun.admin.service.system.UserService
;
import
com.ctrip.fun.admin.service.tools.CallCenterService
;
import
com.ctrip.fun.admin.utility.Util
;
import
com.ctrip.fun.admin.vo.callcenter.AbstractEventHandler
;
import
com.ctrip.fun.common.vo.PagedResponseBean
;
import
com.ctrip.fun.common.vo.basic.UserExtQuery
;
import
com.ctrip.fun.common.vo.user.RegisterBean
;
...
...
@@ -44,6 +58,19 @@ public class CallCenterController {
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
CallCenterController
.
class
);
public
static
final
Map
<
String
,
AbstractEventHandler
>
eventHandlerMap
=
new
ConcurrentHashMap
<
String
,
AbstractEventHandler
>()
{
private
static
final
long
serialVersionUID
=
1565306516357059751L
;
{
put
(
"cdrEvent"
,
new
CdrEventHandler
());
put
(
"newStateEvent"
,
new
NewStateEventHandler
());
put
(
"bridgeEvent"
,
new
BridgeEventHandler
());
put
(
"channelRouteEvent"
,
new
ChannelRouteEventHandler
());
put
(
"sqeEvent"
,
new
SqeEventHandler
());
put
(
"queueMemberPauseEvent"
,
new
QueueMemberPauseEventHandler
());
put
(
"bindEvent"
,
new
BindEventHandler
());
}
};
@Autowired
private
CallCenterService
ccService
;
...
...
@@ -77,6 +104,51 @@ public class CallCenterController {
}
}
/**
*
* @return
*/
@RequestMapping
(
value
=
"/callback"
,
method
=
RequestMethod
.
POST
)
public
String
callbackEvent
(
HttpServletRequest
request
,
HttpServletResponse
response
,
@RequestBody
String
eventJsonString
)
{
String
result
=
""
;
try
{
// System.out.println("AAA controller: " + eventJsonString);
logger
.
debug
(
"从"
+
request
.
getRemoteAddr
()
+
"收到event:"
+
eventJsonString
);
JSONObject
commandJSONObject
=
null
;
commandJSONObject
=
JSON
.
parseObject
(
eventJsonString
);
String
event
=
commandJSONObject
.
getString
(
"event"
);
if
(
StringUtils
.
isBlank
(
event
)){
result
=
"收到的消息缺少event字段: "
+
eventJsonString
;
logger
.
warn
(
result
);
return
result
;
}
// 1)找出具体的命令实例。
logger
.
debug
(
"event ["
+
event
+
"] is ready to execute..."
);
logger
.
debug
(
eventJsonString
);
AbstractEventHandler
eventHandler
=
eventHandlerMap
.
get
(
event
);
// 2)执行命令并返回结果
if
(
eventHandler
!=
null
){
result
=
eventHandler
.
handle
(
commandJSONObject
);
}
else
{
result
=
"event="
+
event
+
", event字段有误,没有找到对应的eventHandler"
;
logger
.
warn
(
"event="
+
event
+
", event字段有误,没有找到对应的eventHandler"
);
return
result
;
}
}
catch
(
Exception
e
)
{
logger
.
error
(
e
.
getMessage
(),
e
);
return
e
.
getMessage
();
}
return
result
;
}
@RequestMapping
(
value
=
"/userRegister"
,
method
=
RequestMethod
.
POST
)
public
String
userRegister
(
HttpServletRequest
request
,
@ModelAttribute
(
"form"
)
UserRegisterForm
form
,
BindingResult
binding
,
ModelMap
model
)
{
String
uid
=
null
;
...
...
src/main/java/com/ctrip/fun/admin/eventhandler/BindEventHandler.java
0 → 100644
View file @
94138452
package
com
.
ctrip
.
fun
.
admin
.
eventhandler
;
import
com.alibaba.fastjson.JSONObject
;
import
com.ctrip.fun.admin.vo.callcenter.AbstractEventHandler
;
/**
*
*
* @author jyf
*
*/
public
class
BindEventHandler
extends
AbstractEventHandler
{
// private final Logger logger = LoggerFactory.getLogger(this.getClass());
@Override
public
String
handle
(
JSONObject
jsonObject
)
{
return
""
;
}
}
src/main/java/com/ctrip/fun/admin/eventhandler/BridgeEventHandler.java
0 → 100644
View file @
94138452
package
com
.
ctrip
.
fun
.
admin
.
eventhandler
;
import
org.apache.commons.lang.StringUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.ctrip.fun.admin.vo.callcenter.AbstractEventHandler
;
import
com.ctrip.fun.admin.vo.callcenter.BridgeEvent
;
/**
*
* channel bridge
*
* @author jyf
*
*/
public
class
BridgeEventHandler
extends
AbstractEventHandler
{
private
final
Logger
logger
=
LoggerFactory
.
getLogger
(
this
.
getClass
());
@Override
public
String
handle
(
JSONObject
jsonObject
)
{
logger
.
debug
(
jsonObject
.
toJSONString
());
/*BridgeEvent event = JSON.toJavaObject(jsonObject, BridgeEvent.class);
//1)处理群呼清理QqdCache.groupCallChannelMap的逻辑
String phoneNumber = event.getCallerInNumber1();
if(StringUtils.isNotBlank(phoneNumber)){
QqdCache.groupCallItemBeanMap.remove(phoneNumber);
logger.debug("MMMMMM 群呼正在接听清理号码:"+phoneNumber +" 内容为:"+JSON.toJSONString(QqdCache.groupCallItemBeanMap));
}*/
return
""
;
}
}
src/main/java/com/ctrip/fun/admin/eventhandler/CdrEventHandler.java
0 → 100644
View file @
94138452
package
com
.
ctrip
.
fun
.
admin
.
eventhandler
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.ctrip.fun.admin.vo.callcenter.AbstractEventHandler
;
import
com.ctrip.fun.admin.vo.callcenter.RsmwCdrEvent
;
//import cc.rssoft.framework.springutil.ApplicationHelper;
//import cc.rssoft.qqd.mod_callcenter.service.GroupCallTaskService;
//import cc.rssoft.qqd.mod_callcenter.service.OutboundtaskItemService;
//import cc.rssoft.qqd.mod_customer.service.CustomerContactHistoryCategoryService;
//import cc.rssoft.qqd.rsmwapi.internal.AbstractEventHandler;
//import cc.rssoft.qqd.rsmwapi.internal.RsmwCdrEvent;
/**
*
* CDR
*
* @author jyf
*
*/
public
class
CdrEventHandler
extends
AbstractEventHandler
{
private
final
Logger
logger
=
LoggerFactory
.
getLogger
(
this
.
getClass
());
@Override
public
String
handle
(
JSONObject
jsonObject
)
{
// 先从json对象转成java对象,方便get
RsmwCdrEvent
event
=
JSON
.
toJavaObject
(
jsonObject
,
RsmwCdrEvent
.
class
);
// System.out.println("AAA cdrhandler:" + event.getCallUuid());
logger
.
debug
(
"receive CDR from RSMW:"
+
jsonObject
.
toJSONString
());
// 这里处理【业务逻辑1:更新outboundtaskItem】
/*
OutboundtaskItemService outboundtaskItemService = ApplicationHelper.getApplicationContext()
.getBean("outboundtaskItemService", OutboundtaskItemService.class);
if (outboundtaskItemService != null) {
outboundtaskItemService.updateOutboundtaskItemAfterCall(event);
}
//......
// 这里处理【业务逻辑2:更新客户更进记录】
// 找出src,dst中的外部号码(非exten),作为customerPhoneNumber处理,处理过程如下:
// 先获取:customerService.getCustomerByPhonenNumber(phoneNumber);
// 如果没有customer就新增一条customer记录(类席newtateevent里的逻辑)
// 拿到customerid后,去insert CustomerContactHistory,setcontent=calluuid
CustomerContactHistoryCategoryService customerContactHistoryCategoryService = ApplicationHelper
.getApplicationContext()
.getBean("customerContactHistoryCategoryService", CustomerContactHistoryCategoryService.class);
if (customerContactHistoryCategoryService != null) {
customerContactHistoryCategoryService.saveCustomerContactHistory(event, 1L);
}
// 这里处理【业务逻辑3:更新群呼任务item】
// 群呼模块.
String userfield = event.getUserfield();
JSONObject userData = JSONObject.parseObject(userfield);
if (userData != null) {
logger.debug(userData.toJSONString());
Long gcTaskId = userData.getLong("gcTaskId");
Long gcTaskItemId = userData.getLong("gcTaskItemId");
Long questionnaireId = userData.getLong("questionnaireId");
Long customerId = userData.getLong("customerId");
if (gcTaskItemId != null) {
// 更新群呼item的记录
GroupCallTaskService groupCallTaskService = ApplicationHelper.getApplicationContext()
.getBean("groupCallTaskService", GroupCallTaskService.class);
if (groupCallTaskService != null) {
groupCallTaskService.updateGcTaskItemAfterCall(event, gcTaskId, gcTaskItemId, questionnaireId, customerId);
}
}else{
logger.debug("没有清理callUuid: gcTaskId == null");
}
}else{
logger.debug("没有清理callUuid: userData == null");
}*/
return
""
;
}
}
src/main/java/com/ctrip/fun/admin/eventhandler/ChannelRouteEventHandler.java
0 → 100644
View file @
94138452
package
com
.
ctrip
.
fun
.
admin
.
eventhandler
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.ctrip.fun.admin.vo.callcenter.AbstractEventHandler
;
import
com.ctrip.fun.admin.vo.callcenter.RsmwChannelRouteEvent
;
/**
*
*
* @author jyf
*
*/
public
class
ChannelRouteEventHandler
extends
AbstractEventHandler
{
private
final
Logger
logger
=
LoggerFactory
.
getLogger
(
this
.
getClass
());
@Override
public
String
handle
(
JSONObject
jsonObject
)
{
logger
.
debug
(
jsonObject
.
toJSONString
());
RsmwChannelRouteEvent
event
=
JSON
.
toJavaObject
(
jsonObject
,
RsmwChannelRouteEvent
.
class
);
logger
.
debug
(
event
.
getUserData
());
return
""
;
}
}
src/main/java/com/ctrip/fun/admin/eventhandler/NewStateEventHandler.java
0 → 100644
View file @
94138452
package
com
.
ctrip
.
fun
.
admin
.
eventhandler
;
import
java.util.Collection
;
import
java.util.List
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.lang.StringUtils
;
import
org.jsoup.helper.StringUtil
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.ctrip.fun.admin.exception.CommonException
;
import
com.ctrip.fun.admin.service.system.UserService
;
import
com.ctrip.fun.admin.service.tools.CallCenterService
;
import
com.ctrip.fun.admin.vo.callcenter.AbstractEventHandler
;
import
com.ctrip.fun.admin.vo.callcenter.RsmwNewStateEvent
;
import
com.ctrip.fun.common.vo.PagedResponseBean
;
import
com.ctrip.fun.common.vo.basic.UserExtQuery
;
import
com.ctrip.fun.common.vo.user.UserBean
;
import
com.ctrip.fun.common.vo.user.UserExtBean
;
import
com.ctrip.fun.common.vo.user.UserQuery
;
//import cc.rssoft.framework.config.service.ConfigService;
//import cc.rssoft.framework.springutil.ApplicationHelper;
//import cc.rssoft.framework.websocket.WebsocketService;
//import cc.rssoft.qqd.cache.QqdCache;
//import cc.rssoft.qqd.cache.bean.GroupCallItemBean;
//import cc.rssoft.qqd.consts.ConfigKeys;
//import cc.rssoft.qqd.consts.PopScreenCloseAction;
//import cc.rssoft.qqd.mod_customer.entity.Customer;
//import cc.rssoft.qqd.mod_customer.service.CustomerService;
//import cc.rssoft.qqd.rsmwapi.internal.AbstractEventHandler;
//import cc.rssoft.qqd.rsmwapi.internal.RsmwNewStateEvent;
//import cc.rssoft.qqd.util.AESUtil;
//import cc.rssoft.qqd.util.CutFirst0;
import
cc.rssoft.rsmw.sdk.RsmwServer
;
import
cc.rssoft.rsmw.sdk.command.response.AgentSipPhoneBindInfoResponse
;
import
cc.rssoft.rsmw.sdk.command.response.IsExtenResponse
;
/**
*
* ringing时弹屏, down时话后
*
* @author jyf
*
*/
public
class
NewStateEventHandler
extends
AbstractEventHandler
{
private
final
Logger
logger
=
LoggerFactory
.
getLogger
(
this
.
getClass
());
@Autowired
private
CallCenterService
ccService
;
@Autowired
private
UserService
userService
;
@Override
public
String
handle
(
JSONObject
jsonObject
)
{
// 先从json对象转成java对象,方便get
RsmwNewStateEvent
event
=
JSON
.
toJavaObject
(
jsonObject
,
RsmwNewStateEvent
.
class
);
logger
.
debug
(
jsonObject
.
toJSONString
());
// 拿分机号,并换算成agentaid
String
sipPeerName
=
""
;
sipPeerName
=
event
.
getChannel
().
replace
(
"SIP/"
,
""
);
sipPeerName
=
sipPeerName
.
split
(
"-"
)[
0
];
sipPeerName
=
sipPeerName
.
split
(
"/"
)[
0
];
if
(
"RINGING"
.
equals
(
event
.
getChannelState
()))
{
logger
.
debug
(
"收到了ringing消息: "
+
event
.
getChannel
()
+
event
.
getConnectedLineNumber
());
String
mobileNo
=
event
.
getConnectedLineNumber
();
try
{
if
(
StringUtil
.
isBlank
(
mobileNo
))
{
logger
.
error
(
"mobile is null in ccdesk!"
);
throw
new
CommonException
(-
02
,
"ccdesk返回客户手机号为空!"
);
}
String
uid
=
this
.
queryRegisterUid
(
mobileNo
);
if
(
StringUtils
.
isNotBlank
(
uid
))
{
return
String
.
format
(
"redirect:/system/user/%s/detailByUid"
,
uid
);
}
else
{
return
"/tools/validCode"
;
}
}
catch
(
CommonException
e
)
{
return
"error"
;
}
/*
// 调rsmw接口,查询绑定关系,拿到aid,也就时websocket里的clientId
RsmwServer rsmwServer = ApplicationHelper.getApplicationContext().getBean("rsmwServer", RsmwServer.class);
AgentSipPhoneBindInfoResponse agentSipPhoneBindInfoResponse = rsmwServer.getBindInfo(null, sipPeerName);
String agentAid = agentSipPhoneBindInfoResponse.getAgentAid();
// 分机 ringing 时弹屏
IsExtenResponse response = rsmwServer.isExten(sipPeerName);
if (response.getIsExten()) {
logger.debug("ringing的分机号是:" + sipPeerName);
// 拿客户手机号查询出客户对象
String connectedLineName = event.getConnectedLineName();
String connectedLineNumber = event.getConnectedLineNumber();
// System.out.println("getConnectedLineName = "+connectedLineName);
// System.out.println("getConnectedLineNumber = "+connectedLineNumber);
// String reg="^\\d+$";
String customerPhoneNumber = null;
if(connectedLineName.contains("*") || (StringUtils.isNotBlank(connectedLineNumber) && connectedLineNumber.startsWith("encrypt_"))){
// customerPhoneNumber = new String(Base64.getDecoder().decode(connectedLineNumber));
connectedLineNumber = connectedLineNumber.substring("encrypt_".length());
customerPhoneNumber = AESUtil.decrypt(connectedLineNumber, "jiangyifen");
// System.out.println("connectedLineNumber base64 decode = "+customerPhoneNumber);
}else{
customerPhoneNumber = connectedLineNumber;
}
customerPhoneNumber = CutFirst0.cut(customerPhoneNumber);// 切除电话号码开头的所有0,才可以保存到数据库
IsExtenResponse response2 = rsmwServer.isExten(customerPhoneNumber);
if (!response2.getIsExten()) {
CustomerService customerService = ApplicationHelper.getApplicationContext()
.getBean("customerService", CustomerService.class);
Customer customer = customerService.getCustomerWhenCallin(customerPhoneNumber);
// 根据电话号码,从QqdCache.groupCallChannelMap中取出GroupCallItemBean
// 调用websocket,推送弹屏消息
JSONObject json = new JSONObject();
json.put("eventName", "popScreen");
json.put("tabKey", "popScreen_" + customer.getId());
String customerName = customer.getName();
if (StringUtils.isBlank(customerName)) {
customerName = "未知姓名";
}
json.put("tabName", customerName + "[" + customer.getId() + "]");
// 1)从QqdCache.groupCallChannelMap中获取参数
String groupCallParm = "";
// {"callerIdNumber":"","connectedLineNumber":"13391026171","causeDesc":"","connectedLineName":"13391026171","channel":"SIP/8001-000000d5","callerIdName":"","event":"newStateEvent","uniqueId":"1499997163.213","channelState":"RINGING","timestamp":1499997163011}
GroupCallItemBean groupCallItemBean = QqdCache.groupCallItemBeanMap.get(customerPhoneNumber);
logger.debug("MMMMMM 群呼正在get号码:"+customerPhoneNumber +" 内容为:"+JSON.toJSONString(groupCallItemBean));
logger.debug("MMMMMM 群呼get内存数据:"+JSON.toJSONString(QqdCache.groupCallItemBeanMap));
if (groupCallItemBean != null) {
Long ouestionnaireId = groupCallItemBean.getQuestionnaireId();
if (ouestionnaireId != null) {
groupCallParm = groupCallParm + "&questionnaireId=" + ouestionnaireId;
}
Long groupCallTaskItemId = groupCallItemBean.getGcTaskItemId();
if (groupCallTaskItemId != null) {
groupCallParm = groupCallParm + "&groupCallTaskItemId=" + groupCallTaskItemId;
}
// 多余的未用到
Long groupCallTaskId = groupCallItemBean.getGcTaskId();
if (groupCallTaskId != null) {
groupCallParm = groupCallParm + "&groupCallTaskId=" + groupCallTaskId;
}
}
String url = "showTab_popScreen?onCloseAction=" + PopScreenCloseAction.unpause + "&customerId="
+ customer.getId() + groupCallParm;
ConfigService configService = ApplicationHelper.getApplicationContext().getBean("configService",
ConfigService.class);
if ("true".equals(configService.get(ConfigKeys.qqd_enable3rdPop))) {
url = configService.get(ConfigKeys.qqd_3rdPopUrl) + "?customerPhoneNumber="
+ customer.getPhoneNumber();
json.put("enable3rdPop", true);
}
json.put("tabUrl", url);
if (StringUtils.isNotBlank(agentAid)) {
logger.debug("向 agentAid=" + agentAid + " 发送弹屏命令:" + json.toJSONString());
WebsocketService.unicast(agentAid, json.toJSONString());
} else {
logger.debug("agentAid is blank, channel=" + event.getChannel());
}
return "";
} else {
logger.debug(customerPhoneNumber + "是内部exten,不用弹屏");
}
} else {
logger.debug("ringing的不是sip分机");
}
} else if ("DOWN".equals(event.getChannelState())) {
logger.debug("收到了down消息: " + event.getChannel());
// 1)处理自动ACW
Boolean autoAcw = QqdCache.sipPhoneAutoACW.get(sipPeerName);
if (autoAcw == null) {
autoAcw = false;
}
// 如果agent配置了【挂机时自动进入ACW】,就调一下置忙ACW
if (autoAcw) {
// 进入【话后状态】
RsmwServer rsmwServer = ApplicationHelper.getApplicationContext().getBean("rsmwServer",
RsmwServer.class);
rsmwServer.queueMemberPause("SIP/" + sipPeerName, "ACW");
}
// 2)处理群呼清理QqdCache.groupCallChannelMap的逻辑
String callerIdNumber = event.getCallerIdNumber();
if(StringUtils.isNotBlank(callerIdNumber)){
QqdCache.groupCallItemBeanMap.remove(callerIdNumber);
logger.debug("MMMMMM 群呼挂断清理号码1:"+callerIdNumber +" 内容为:"+JSON.toJSONString(QqdCache.groupCallItemBeanMap));
}
return "";
*/
}
return
""
;
}
private
String
queryRegisterUid
(
String
mobileNo
)
throws
CommonException
{
String
uid
=
null
;
UserExtQuery
query
=
new
UserExtQuery
();
query
.
setMobile
(
mobileNo
);
query
.
setPagerOffset
(
0
);
query
.
setSortField
(
"registerTime"
);
PagedResponseBean
<
UserExtBean
>
response
=
userService
.
list
(
""
,
query
);
Collection
<
UserExtBean
>
users
=
response
.
getResult
();
if
(
CollectionUtils
.
isNotEmpty
(
users
))
{
List
<
UserExtBean
>
list
=
(
List
)
users
;
UserExtBean
user
=
list
.
get
(
0
);
uid
=
user
.
getUid
();
}
else
{
// 查询携程注册信息
UserQuery
memberRequest
=
new
UserQuery
();
memberRequest
.
setUid
(
mobileNo
);
UserBean
memberResponse
=
ccService
.
getMemberInfo
(
""
,
memberRequest
);
// getMemberInfo接口会将携程用户同步为爱玩用户
if
(
StringUtils
.
isNotBlank
(
memberResponse
.
getUid
()))
{
uid
=
memberResponse
.
getUid
();
}
}
return
uid
;
}
public
void
setCcService
(
CallCenterService
ccService
)
{
this
.
ccService
=
ccService
;
}
public
void
setUserService
(
UserService
userService
)
{
this
.
userService
=
userService
;
}
}
src/main/java/com/ctrip/fun/admin/eventhandler/QueueMemberPauseEventHandler.java
0 → 100644
View file @
94138452
package
com
.
ctrip
.
fun
.
admin
.
eventhandler
;
import
com.alibaba.fastjson.JSONObject
;
import
com.ctrip.fun.admin.vo.callcenter.AbstractEventHandler
;
/**
*
*
* @author jyf
*
*/
public
class
QueueMemberPauseEventHandler
extends
AbstractEventHandler
{
// private final Logger logger = LoggerFactory.getLogger(this.getClass());
@Override
public
String
handle
(
JSONObject
jsonObject
)
{
return
""
;
}
}
src/main/java/com/ctrip/fun/admin/eventhandler/SqeEventHandler.java
0 → 100644
View file @
94138452
package
com
.
ctrip
.
fun
.
admin
.
eventhandler
;
import
com.alibaba.fastjson.JSONObject
;
import
com.ctrip.fun.admin.vo.callcenter.AbstractEventHandler
;
/**
*
*
* @author jyf
*
*/
public
class
SqeEventHandler
extends
AbstractEventHandler
{
// private final Logger logger = LoggerFactory.getLogger(this.getClass());
@Override
public
String
handle
(
JSONObject
jsonObject
)
{
return
""
;
}
}
src/main/java/com/ctrip/fun/admin/vo/callcenter/AbstractEventHandler.java
0 → 100644
View file @
94138452
package
com
.
ctrip
.
fun
.
admin
.
vo
.
callcenter
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
com.alibaba.fastjson.JSONObject
;
/**
* @author Jiangyifen
*
*/
public
abstract
class
AbstractEventHandler
{
protected
Logger
logger
=
LoggerFactory
.
getLogger
(
this
.
getClass
());
/**
* 处理具体的event
*
* @return
*/
public
abstract
String
handle
(
JSONObject
t
);
private
Long
timestamp
=
0L
;
public
Long
getTimestamp
()
{
return
timestamp
;
}
public
void
setTimestamp
(
Long
timestamp
)
{
this
.
timestamp
=
timestamp
;
}
}
src/main/java/com/ctrip/fun/admin/vo/callcenter/BridgeEvent.java
0 → 100644
View file @
94138452
package
com
.
ctrip
.
fun
.
admin
.
vo
.
callcenter
;
public
class
BridgeEvent
{
private
String
event
=
""
;
private
Boolean
bridge
=
null
;
private
String
channel1
=
""
;
private
String
uniqueId1
=
""
;
private
String
callerInNumber1
=
""
;
private
String
channel2
=
""
;
private
String
uniqueId2
=
""
;
private
String
callerInNumber2
=
""
;
public
String
getEvent
()
{
return
event
;
}
public
void
setEvent
(
String
event
)
{
this
.
event
=
event
;
}
public
Boolean
getBridge
()
{
return
bridge
;
}
public
void
setBridge
(
Boolean
bridge
)
{
this
.
bridge
=
bridge
;
}
public
String
getChannel1
()
{
return
channel1
;
}
public
void
setChannel1
(
String
channel1
)
{
this
.
channel1
=
channel1
;
}
public
String
getUniqueId1
()
{
return
uniqueId1
;
}
public
void
setUniqueId1
(
String
uniqueId1
)
{
this
.
uniqueId1
=
uniqueId1
;
}
public
String
getCallerInNumber1
()
{
return
callerInNumber1
;
}
public
void
setCallerInNumber1
(
String
callerInNumber1
)
{
this
.
callerInNumber1
=
callerInNumber1
;
}
public
String
getChannel2
()
{
return
channel2
;
}
public
void
setChannel2
(
String
channel2
)
{
this
.
channel2
=
channel2
;
}
public
String
getUniqueId2
()
{
return
uniqueId2
;
}
public
void
setUniqueId2
(
String
uniqueId2
)
{
this
.
uniqueId2
=
uniqueId2
;
}
public
String
getCallerInNumber2
()
{
return
callerInNumber2
;
}
public
void
setCallerInNumber2
(
String
callerInNumber2
)
{
this
.
callerInNumber2
=
callerInNumber2
;
}
}
src/main/java/com/ctrip/fun/admin/vo/callcenter/RsmwCdrEvent.java
0 → 100644
View file @
94138452
package
com
.
ctrip
.
fun
.
admin
.
vo
.
callcenter
;
/**
*
* @author root
*
*/
public
class
RsmwCdrEvent
{
private
Long
timestamp
=
null
;
private
String
event
=
""
;
private
String
serverId
=
""
;
private
String
callUuid
=
""
;
private
String
uniqueId
=
""
;
private
String
callerId
=
""
;
private
String
src
=
""
;
private
String
dstContext
=
""
;
private
String
dst
=
""
;
private
String
srcChannel
=
""
;
private
String
dstChannel
=
""
;
private
String
startTime
=
""
;
private
String
answerTime
=
""
;
private
String
endTime
=
""
;
private
Long
duration
=
0L
;
private
Long
billSeconds
=
0L
;
private
String
disposition
=
""
;
private
String
srcAgentAid
=
""
;
private
String
srcAgentName
=
""
;
private
String
dstAgentAid
=
""
;
private
String
dstAgentName
=
""
;
private
String
srcAccessNumber
=
""
;
private
String
srcGateway
=
""
;
private
String
dstAccessNumber
=
""
;
private
String
dstGateway
=
""
;
private
String
callDirection
=
""
;
private
Boolean
answered
=
null
;
private
Boolean
bridged
=
null
;
private
String
recordUrl
=
""
;
private
String
ivrKeyPressed
=
""
;
private
String
userfield
=
""
;
public
String
getEvent
()
{
return
event
;
}
public
void
setEvent
(
String
event
)
{
this
.
event
=
event
;
}
public
String
getServerId
()
{
return
serverId
;
}
public
void
setServerId
(
String
serverId
)
{
this
.
serverId
=
serverId
;
}
public
String
getUniqueId
()
{
return
uniqueId
;
}
public
void
setUniqueId
(
String
uniqueId
)
{
this
.
uniqueId
=
uniqueId
;
}
public
String
getCallerId
()
{
return
callerId
;
}
public
void
setCallerId
(
String
callerId
)
{
this
.
callerId
=
callerId
;
}
public
String
getSrc
()
{
return
src
;
}
public
void
setSrc
(
String
src
)
{
this
.
src
=
src
;
}
public
String
getDstContext
()
{
return
dstContext
;
}
public
void
setDstContext
(
String
dstContext
)
{
this
.
dstContext
=
dstContext
;
}
public
String
getDst
()
{
return
dst
;
}
public
void
setDst
(
String
dst
)
{
this
.
dst
=
dst
;
}
public
String
getSrcChannel
()
{
return
srcChannel
;
}
public
void
setSrcChannel
(
String
srcChannel
)
{
this
.
srcChannel
=
srcChannel
;
}
public
String
getDstChannel
()
{
return
dstChannel
;
}
public
void
setDstChannel
(
String
dstChannel
)
{
this
.
dstChannel
=
dstChannel
;
}
public
String
getStartTime
()
{
return
startTime
;
}
public
void
setStartTime
(
String
startTime
)
{
this
.
startTime
=
startTime
;
}
public
String
getAnswerTime
()
{
return
answerTime
;
}
public
void
setAnswerTime
(
String
answerTime
)
{
this
.
answerTime
=
answerTime
;
}
public
String
getEndTime
()
{
return
endTime
;
}
public
void
setEndTime
(
String
endTime
)
{
this
.
endTime
=
endTime
;
}
public
Long
getDuration
()
{
return
duration
;
}
public
void
setDuration
(
Long
duration
)
{
this
.
duration
=
duration
;
}
public
Long
getBillSeconds
()
{
return
billSeconds
;
}
public
void
setBillSeconds
(
Long
billSeconds
)
{
this
.
billSeconds
=
billSeconds
;
}
public
String
getSrcAgentAid
()
{
return
srcAgentAid
;
}
public
void
setSrcAgentAid
(
String
srcAgentAid
)
{
this
.
srcAgentAid
=
srcAgentAid
;
}
public
String
getSrcAgentName
()
{
return
srcAgentName
;
}
public
void
setSrcAgentName
(
String
srcAgentName
)
{
this
.
srcAgentName
=
srcAgentName
;
}
public
String
getDstAgentAid
()
{
return
dstAgentAid
;
}
public
void
setDstAgentAid
(
String
dstAgentAid
)
{
this
.
dstAgentAid
=
dstAgentAid
;
}
public
String
getDstAgentName
()
{
return
dstAgentName
;
}
public
void
setDstAgentName
(
String
dstAgentName
)
{
this
.
dstAgentName
=
dstAgentName
;
}
public
String
getSrcAccessNumber
()
{
return
srcAccessNumber
;
}
public
void
setSrcAccessNumber
(
String
srcAccessNumber
)
{
this
.
srcAccessNumber
=
srcAccessNumber
;
}
public
String
getSrcGateway
()
{
return
srcGateway
;
}
public
void
setSrcGateway
(
String
srcGateway
)
{
this
.
srcGateway
=
srcGateway
;
}
public
String
getDstAccessNumber
()
{
return
dstAccessNumber
;
}
public
void
setDstAccessNumber
(
String
dstAccessNumber
)
{
this
.
dstAccessNumber
=
dstAccessNumber
;
}
public
String
getDstGateway
()
{
return
dstGateway
;
}
public
void
setDstGateway
(
String
dstGateway
)
{
this
.
dstGateway
=
dstGateway
;
}
public
String
getCallDirection
()
{
return
callDirection
;
}
public
void
setCallDirection
(
String
callDirection
)
{
this
.
callDirection
=
callDirection
;
}
public
Boolean
getAnswered
()
{
return
answered
;
}
public
void
setAnswered
(
Boolean
answered
)
{
this
.
answered
=
answered
;
}
public
String
getRecordUrl
()
{
return
recordUrl
;
}
public
void
setRecordUrl
(
String
recordUrl
)
{
this
.
recordUrl
=
recordUrl
;
}
public
String
getCallUuid
()
{
return
callUuid
;
}
public
void
setCallUuid
(
String
callUuid
)
{
this
.
callUuid
=
callUuid
;
}
public
String
getDisposition
()
{
return
disposition
;
}
public
void
setDisposition
(
String
disposition
)
{
this
.
disposition
=
disposition
;
}
public
Long
getTimestamp
()
{
return
timestamp
;
}
public
void
setTimestamp
(
Long
timestamp
)
{
this
.
timestamp
=
timestamp
;
}
public
String
getIvrKeyPressed
()
{
return
ivrKeyPressed
;
}
public
void
setIvrKeyPressed
(
String
ivrKeyPressed
)
{
this
.
ivrKeyPressed
=
ivrKeyPressed
;
}
public
String
getUserfield
()
{
return
userfield
;
}
public
void
setUserfield
(
String
userfield
)
{
this
.
userfield
=
userfield
;
}
public
Boolean
getBridged
()
{
return
bridged
;
}
public
void
setBridged
(
Boolean
bridged
)
{
this
.
bridged
=
bridged
;
}
}
src/main/java/com/ctrip/fun/admin/vo/callcenter/RsmwChannelRouteEvent.java
0 → 100644
View file @
94138452
package
com
.
ctrip
.
fun
.
admin
.
vo
.
callcenter
;
public
class
RsmwChannelRouteEvent
{
private
String
event
=
""
;
private
String
accessDate
=
""
;
private
String
uniqueId
=
""
;
private
String
channel
=
""
;
private
String
callerIdNumber
=
""
;
private
String
srcGateway
=
""
;
private
String
srcAccessNumber
=
""
;
private
String
dstGateway
=
""
;
private
String
dstAccessNumber
=
""
;
private
String
userData
=
""
;
public
String
getSrcGateway
()
{
return
srcGateway
;
}
public
void
setSrcGateway
(
String
srcGateway
)
{
this
.
srcGateway
=
srcGateway
;
}
public
String
getSrcAccessNumber
()
{
return
srcAccessNumber
;
}
public
void
setSrcAccessNumber
(
String
srcAccessNumber
)
{
this
.
srcAccessNumber
=
srcAccessNumber
;
}
public
String
getDstGateway
()
{
return
dstGateway
;
}
public
void
setDstGateway
(
String
dstGateway
)
{
this
.
dstGateway
=
dstGateway
;
}
public
String
getDstAccessNumber
()
{
return
dstAccessNumber
;
}
public
void
setDstAccessNumber
(
String
dstAccessNumber
)
{
this
.
dstAccessNumber
=
dstAccessNumber
;
}
private
String
exten
=
""
;
private
String
extenType
=
""
;
private
String
extenDescription
=
""
;
public
String
getEvent
()
{
return
event
;
}
public
void
setEvent
(
String
event
)
{
this
.
event
=
event
;
}
public
String
getExten
()
{
return
exten
;
}
public
void
setExten
(
String
exten
)
{
this
.
exten
=
exten
;
}
public
String
getExtenType
()
{
return
extenType
;
}
public
void
setExtenType
(
String
extenType
)
{
this
.
extenType
=
extenType
;
}
public
String
getExtenDescription
()
{
return
extenDescription
;
}
public
void
setExtenDescription
(
String
extenDescription
)
{
this
.
extenDescription
=
extenDescription
;
}
public
String
getCallerIdNumber
()
{
return
callerIdNumber
;
}
public
void
setCallerIdNumber
(
String
callerIdNumber
)
{
this
.
callerIdNumber
=
callerIdNumber
;
}
public
String
getUniqueId
()
{
return
uniqueId
;
}
public
void
setUniqueId
(
String
uniqueId
)
{
this
.
uniqueId
=
uniqueId
;
}
public
String
getChannel
()
{
return
channel
;
}
public
void
setChannel
(
String
channel
)
{
this
.
channel
=
channel
;
}
public
String
getAccessDate
()
{
return
accessDate
;
}
public
void
setAccessDate
(
String
accessDate
)
{
this
.
accessDate
=
accessDate
;
}
public
String
getUserData
()
{
return
userData
;
}
public
void
setUserData
(
String
userData
)
{
this
.
userData
=
userData
;
}
}
src/main/java/com/ctrip/fun/admin/vo/callcenter/RsmwNewStateEvent.java
0 → 100644
View file @
94138452
package
com
.
ctrip
.
fun
.
admin
.
vo
.
callcenter
;
public
class
RsmwNewStateEvent
{
private
String
event
=
""
;
private
String
uniqueId
=
""
;
private
String
channel
=
""
;
private
String
channelState
=
""
;
private
Integer
cause
=
null
;
private
String
causeDesc
=
""
;
private
String
callerIdName
=
""
;
private
String
callerIdNumber
=
""
;
private
String
connectedLineName
=
""
;
private
String
connectedLineNumber
=
""
;
// private String callUuid = "";
public
String
getUniqueId
()
{
return
uniqueId
;
}
public
void
setUniqueId
(
String
uniqueId
)
{
this
.
uniqueId
=
uniqueId
;
}
public
String
getChannel
()
{
return
channel
;
}
public
void
setChannel
(
String
channel
)
{
this
.
channel
=
channel
;
}
public
String
getChannelState
()
{
return
channelState
;
}
public
void
setChannelState
(
String
channelState
)
{
this
.
channelState
=
channelState
;
}
public
Integer
getCause
()
{
return
cause
;
}
public
void
setCause
(
Integer
cause
)
{
this
.
cause
=
cause
;
}
public
String
getCauseDesc
()
{
return
causeDesc
;
}
public
void
setCauseDesc
(
String
causeDesc
)
{
this
.
causeDesc
=
causeDesc
;
}
public
String
getCallerIdName
()
{
return
callerIdName
;
}
public
void
setCallerIdName
(
String
callerIdName
)
{
this
.
callerIdName
=
callerIdName
;
}
public
String
getCallerIdNumber
()
{
return
callerIdNumber
;
}
public
void
setCallerIdNumber
(
String
callerIdNumber
)
{
this
.
callerIdNumber
=
callerIdNumber
;
}
public
String
getConnectedLineName
()
{
return
connectedLineName
;
}
public
void
setConnectedLineName
(
String
connectedLineName
)
{
this
.
connectedLineName
=
connectedLineName
;
}
public
String
getConnectedLineNumber
()
{
return
connectedLineNumber
;
}
public
void
setConnectedLineNumber
(
String
connectedLineNumber
)
{
this
.
connectedLineNumber
=
connectedLineNumber
;
}
public
String
getEvent
()
{
return
event
;
}
public
void
setEvent
(
String
event
)
{
this
.
event
=
event
;
}
// public String getCallUuid() {
// return callUuid;
// }
// public void setCallUuid(String callUuid) {
// this.callUuid = callUuid;
// }
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment