mirror of
https://github.com/chatopera/cosin.git
synced 2025-06-29 07:11:38 +08:00
Block montoring api in nginx, enable chatbot only mode, fix contacts modifications
This commit is contained in:
parent
d84fb8be4c
commit
38ce01bc8f
@ -190,7 +190,8 @@ public class Constants {
|
|||||||
public static final HashSet<String> CHATBOT_VALID_LANGS = new HashSet<String>(Arrays.asList("zh_CN", "en_US"));
|
public static final HashSet<String> CHATBOT_VALID_LANGS = new HashSet<String>(Arrays.asList("zh_CN", "en_US"));
|
||||||
public static final String CHATBOT_CHATBOT_FIRST = "机器人客服优先";
|
public static final String CHATBOT_CHATBOT_FIRST = "机器人客服优先";
|
||||||
public static final String CHATBOT_HUMAN_FIRST = "人工客服优先";
|
public static final String CHATBOT_HUMAN_FIRST = "人工客服优先";
|
||||||
public static final HashSet<String> CHATBOT_VALID_WORKMODELS = new HashSet<String>(Arrays.asList(CHATBOT_CHATBOT_FIRST, CHATBOT_HUMAN_FIRST));
|
public static final String CHATBOT_CHATBOT_ONLY = "仅机器人客服";
|
||||||
|
public static final HashSet<String> CHATBOT_VALID_WORKMODELS = new HashSet<String>(Arrays.asList(CHATBOT_CHATBOT_FIRST, CHATBOT_HUMAN_FIRST, CHATBOT_CHATBOT_ONLY));
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -95,7 +95,7 @@ public class AppsController extends Handler {
|
|||||||
Sort.Direction.DESC,
|
Sort.Direction.DESC,
|
||||||
"createtime"
|
"createtime"
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
final long msec = System.currentTimeMillis();
|
final long msec = System.currentTimeMillis();
|
||||||
final List<String> contactIds = new ArrayList<String>();
|
final List<String> contactIds = new ArrayList<String>();
|
||||||
@ -143,7 +143,7 @@ public class AppsController extends Handler {
|
|||||||
map.put(
|
map.put(
|
||||||
"webIMReport", MainUtils.getWebIMReport(
|
"webIMReport", MainUtils.getWebIMReport(
|
||||||
userEventRes.findByOrgiAndCreatetimeRange(super.getOrgi(request), MainUtils.getStartTime(),
|
userEventRes.findByOrgiAndCreatetimeRange(super.getOrgi(request), MainUtils.getStartTime(),
|
||||||
MainUtils.getEndTime())));
|
MainUtils.getEndTime())));
|
||||||
|
|
||||||
// TODO 此处为什么不用agentReport中的agents?
|
// TODO 此处为什么不用agentReport中的agents?
|
||||||
map.put("agents", getUsers(request).size());
|
map.put("agents", getUsers(request).size());
|
||||||
@ -252,8 +252,6 @@ public class AppsController extends Handler {
|
|||||||
if (logined.isAdmin()) {
|
if (logined.isAdmin()) {
|
||||||
// 作为管理员,强制设置为坐席
|
// 作为管理员,强制设置为坐席
|
||||||
tempUser.setAgent(true);
|
tempUser.setAgent(true);
|
||||||
} else {
|
|
||||||
tempUser.setAgent(user.isAgent());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
tempUser.setOrgi(super.getOrgiByTenantshare(request));
|
tempUser.setOrgi(super.getOrgiByTenantshare(request));
|
||||||
|
@ -136,6 +136,8 @@ public class IMController extends Handler {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private UserHistoryRepository userHistoryRes;
|
private UserHistoryRepository userHistoryRes;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ChatbotRepository chatbotRes;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private Cache cache;
|
private Cache cache;
|
||||||
@ -374,9 +376,9 @@ public class IMController extends Handler {
|
|||||||
} else {
|
} else {
|
||||||
if (!whitelist_mode) {
|
if (!whitelist_mode) {
|
||||||
createContacts(userid,
|
createContacts(userid,
|
||||||
request,
|
request,
|
||||||
logined.getId(),
|
logined.getId(),
|
||||||
uid, cid, sid, username, company_name, system_name);
|
uid, cid, sid, username, company_name, system_name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -560,7 +562,9 @@ public class IMController extends Handler {
|
|||||||
@Valid final String pid,
|
@Valid final String pid,
|
||||||
@Valid final String purl,
|
@Valid final String purl,
|
||||||
@Valid final boolean isInvite) throws Exception {
|
@Valid final boolean isInvite) throws Exception {
|
||||||
logger.info("[index] orgi {}, skill {}, agent {}, traceid {}, isInvite {}", orgi, skill, agent, traceid, isInvite);
|
logger.info(
|
||||||
|
"[index] orgi {}, skill {}, agent {}, traceid {}, isInvite {}, exchange {}", orgi, skill, agent,
|
||||||
|
traceid, isInvite, exchange);
|
||||||
Map<String, String> sessionMessageObj = cache.findOneSystemMapByIdAndOrgi(sessionid, orgi);
|
Map<String, String> sessionMessageObj = cache.findOneSystemMapByIdAndOrgi(sessionid, orgi);
|
||||||
|
|
||||||
if (sessionMessageObj != null) {
|
if (sessionMessageObj != null) {
|
||||||
@ -660,12 +664,12 @@ public class IMController extends Handler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
AgentReport report;
|
AgentReport report;
|
||||||
|
|
||||||
if (invite.isSkill() && invite.isConsult_skill_fixed()) { // 绑定技能组
|
if (invite.isSkill() && invite.isConsult_skill_fixed()) { // 绑定技能组
|
||||||
report = acdWorkMonitor.getAgentReport(invite.getConsult_skill_fixed_id(), invite.getOrgi());
|
report = acdWorkMonitor.getAgentReport(invite.getConsult_skill_fixed_id(), invite.getOrgi());
|
||||||
} else {
|
} else {
|
||||||
report = acdWorkMonitor.getAgentReport(invite.getOrgi());
|
report = acdWorkMonitor.getAgentReport(invite.getOrgi());
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean isLeavemsg = false;
|
boolean isLeavemsg = false;
|
||||||
if (report.getAgents() == 0 ||
|
if (report.getAgents() == 0 ||
|
||||||
(sessionConfig.isHourcheck() &&
|
(sessionConfig.isHourcheck() &&
|
||||||
@ -768,7 +772,8 @@ public class IMController extends Handler {
|
|||||||
String cid = (String) request.getSession().getAttribute("Sessioncid");
|
String cid = (String) request.getSession().getAttribute("Sessioncid");
|
||||||
|
|
||||||
if (StringUtils.isNotBlank(uid) && StringUtils.isNotBlank(sid) && StringUtils.isNotBlank(cid)) {
|
if (StringUtils.isNotBlank(uid) && StringUtils.isNotBlank(sid) && StringUtils.isNotBlank(cid)) {
|
||||||
Contacts contacts1 = contactsRes.findOneByWluidAndWlsidAndWlcidAndDatastatus(uid, sid, cid, false);
|
Contacts contacts1 = contactsRes.findOneByWluidAndWlsidAndWlcidAndDatastatus(
|
||||||
|
uid, sid, cid, false);
|
||||||
if (contacts1 != null) {
|
if (contacts1 != null) {
|
||||||
agentUserRepository.findOneByUseridAndOrgi(userid, orgi).ifPresent(p -> {
|
agentUserRepository.findOneByUseridAndOrgi(userid, orgi).ifPresent(p -> {
|
||||||
// 关联AgentService的联系人
|
// 关联AgentService的联系人
|
||||||
@ -828,17 +833,23 @@ public class IMController extends Handler {
|
|||||||
map.addAttribute("username", nickname);
|
map.addAttribute("username", nickname);
|
||||||
|
|
||||||
// 是否使用机器人客服
|
// 是否使用机器人客服
|
||||||
|
Chatbot bot = null;
|
||||||
if (MainContext.hasModule(Constants.CSKEFU_MODULE_CHATBOT) &&
|
if (MainContext.hasModule(Constants.CSKEFU_MODULE_CHATBOT) &&
|
||||||
StringUtils.isNotBlank(invite.getAiid()) &&
|
StringUtils.isNotBlank(invite.getAiid()) &&
|
||||||
invite.isAi() &&
|
invite.isAi() &&
|
||||||
|
((bot = chatbotRes.findOne(invite.getAiid())) != null) &&
|
||||||
((StringUtils.equals(
|
((StringUtils.equals(
|
||||||
ai, "true")) || (invite.isAifirst() && ai == null))) { //启用 AI , 并且 AI优先 接待
|
ai, "true")) || (invite.isAifirst() && ai == null))) { //启用 AI , 并且 AI优先 接待
|
||||||
|
|
||||||
HashMap<String, String> chatbotConfig = new HashMap<String, String>();
|
HashMap<String, String> chatbotConfig = new HashMap<String, String>();
|
||||||
chatbotConfig.put("botname", invite.getAiname());
|
chatbotConfig.put("botname", invite.getAiname());
|
||||||
chatbotConfig.put("botid", invite.getAiid());
|
chatbotConfig.put("botid", invite.getAiid());
|
||||||
chatbotConfig.put("botwelcome", invite.getAimsg());
|
chatbotConfig.put("botwelcome", invite.getAimsg());
|
||||||
chatbotConfig.put("botfirst", Boolean.toString(invite.isAifirst()));
|
chatbotConfig.put("botfirst", Boolean.toString(invite.isAifirst()));
|
||||||
chatbotConfig.put("isai", Boolean.toString(invite.isAi()));
|
chatbotConfig.put("isai", Boolean.toString(invite.isAi()));
|
||||||
|
map.addAttribute(
|
||||||
|
"exchange", !StringUtils.equals(bot.getWorkmode(), Constants.CHATBOT_CHATBOT_ONLY));
|
||||||
|
|
||||||
if (chatbotConfig != null) {
|
if (chatbotConfig != null) {
|
||||||
map.addAttribute("chatbotConfig", chatbotConfig);
|
map.addAttribute("chatbotConfig", chatbotConfig);
|
||||||
}
|
}
|
||||||
@ -848,15 +859,16 @@ public class IMController extends Handler {
|
|||||||
"/apps/im/chatbot/mobile")); // 智能机器人 移动端
|
"/apps/im/chatbot/mobile")); // 智能机器人 移动端
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (!isLeavemsg && (MobileDevice.isMobile(request.getHeader("User-Agent")) || StringUtils.isNotBlank(mobile))) {
|
if (!isLeavemsg && (MobileDevice.isMobile(
|
||||||
|
request.getHeader("User-Agent")) || StringUtils.isNotBlank(mobile))) {
|
||||||
view = request(
|
view = request(
|
||||||
super.createRequestPageTempletResponse("/apps/im/mobile")); // WebIM移动端。再次点选技能组?
|
super.createRequestPageTempletResponse("/apps/im/mobile")); // WebIM移动端。再次点选技能组?
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
map.addAttribute(
|
map.addAttribute(
|
||||||
"chatMessageList", chatMessageRes.findByUsessionAndOrgi(userid, orgi, new PageRequest(0, 20,
|
"chatMessageList", chatMessageRes.findByUsessionAndOrgi(userid, orgi, new PageRequest(0, 20,
|
||||||
Direction.DESC,
|
Direction.DESC,
|
||||||
"updatetime")));
|
"updatetime")));
|
||||||
}
|
}
|
||||||
view.addObject("commentList", Dict.getInstance().getDic(Constants.CSKEFU_SYSTEM_COMMENT_DIC));
|
view.addObject("commentList", Dict.getInstance().getDic(Constants.CSKEFU_SYSTEM_COMMENT_DIC));
|
||||||
view.addObject("commentItemList", Dict.getInstance().getDic(Constants.CSKEFU_SYSTEM_COMMENT_ITEM_DIC));
|
view.addObject("commentItemList", Dict.getInstance().getDic(Constants.CSKEFU_SYSTEM_COMMENT_ITEM_DIC));
|
||||||
@ -1133,7 +1145,7 @@ public class IMController extends Handler {
|
|||||||
|
|
||||||
// 存储到本地硬盘
|
// 存储到本地硬盘
|
||||||
String id = processAttachmentFile(multipart,
|
String id = processAttachmentFile(multipart,
|
||||||
fileid, logined.getOrgi(), logined.getId());
|
fileid, logined.getOrgi(), logined.getId());
|
||||||
upload = new UploadStatus("0", "/res/file.html?id=" + id);
|
upload = new UploadStatus("0", "/res/file.html?id=" + id);
|
||||||
String file = "/res/file.html?id=" + id;
|
String file = "/res/file.html?id=" + id;
|
||||||
|
|
||||||
|
@ -79,7 +79,7 @@
|
|||||||
<div class="layui-inline">
|
<div class="layui-inline">
|
||||||
<label class="layui-form-label">联系电话:</label>
|
<label class="layui-form-label">联系电话:</label>
|
||||||
<div class="layui-input-inline">
|
<div class="layui-input-inline">
|
||||||
<input type="text" name="phone" lay-verify="entphone" autocomplete="off"
|
<input type="text" name="phone" autocomplete="off"
|
||||||
class="layui-input">
|
class="layui-input">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -87,7 +87,7 @@
|
|||||||
<div class="layui-inline uckefu-inline">
|
<div class="layui-inline uckefu-inline">
|
||||||
<label class="layui-form-label">手机号:</label>
|
<label class="layui-form-label">手机号:</label>
|
||||||
<div class="layui-input-inline">
|
<div class="layui-input-inline">
|
||||||
<input type="text" name="mobileno" id="getdate" lay-verify="entphone" autocomplete="off" class="layui-input">
|
<input type="text" name="mobileno" autocomplete="off" class="layui-input">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -159,11 +159,6 @@
|
|||||||
var form = layui.form();
|
var form = layui.form();
|
||||||
form.render(); //更新全部
|
form.render(); //更新全部
|
||||||
form.verify({
|
form.verify({
|
||||||
entphone: function(value){
|
|
||||||
if(value!="" && !new RegExp(/^(0\d{2,3}-{0,1}\d{5,8}(-{0,1}\d{3,5}){0,1})|(((13[0-9])|(15([0-3]|[5-9]))|(18[0-9]))\d{8})$/).test(value)){
|
|
||||||
return '请输入正确的电话号码';
|
|
||||||
}
|
|
||||||
},
|
|
||||||
entemail: function(value){
|
entemail: function(value){
|
||||||
if(value!="" && !new RegExp(/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/).test(value)){
|
if(value!="" && !new RegExp(/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/).test(value)){
|
||||||
return '请输入正确的电子邮箱地址';
|
return '请输入正确的电子邮箱地址';
|
||||||
|
@ -93,14 +93,14 @@
|
|||||||
<div class="layui-inline">
|
<div class="layui-inline">
|
||||||
<label class="layui-form-label">联系电话:</label>
|
<label class="layui-form-label">联系电话:</label>
|
||||||
<div class="layui-input-inline">
|
<div class="layui-input-inline">
|
||||||
<input type="text" name="phone" lay-verify="entphone" value="${contacts.phone!''}" autocomplete="off"
|
<input type="text" name="phone" value="${contacts.phone!''}" autocomplete="off"
|
||||||
class="layui-input">
|
class="layui-input">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-inline uckefu-inline">
|
<div class="layui-inline uckefu-inline">
|
||||||
<label class="layui-form-label">手机号:</label>
|
<label class="layui-form-label">手机号:</label>
|
||||||
<div class="layui-input-inline">
|
<div class="layui-input-inline">
|
||||||
<input type="text" name="mobileno" id="getdate" lay-verify="entphone" value="${contacts.mobileno!''}" autocomplete="off" class="layui-input">
|
<input type="text" name="mobileno" value="${contacts.mobileno!''}" autocomplete="off" class="layui-input">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -172,11 +172,6 @@
|
|||||||
var form = layui.form();
|
var form = layui.form();
|
||||||
form.render(); //更新全部
|
form.render(); //更新全部
|
||||||
form.verify({
|
form.verify({
|
||||||
entphone: function(value){
|
|
||||||
if(value!="" && !new RegExp(/^(0\d{2,3}-{0,1}\d{5,8}(-{0,1}\d{3,5}){0,1})|(((13[0-9])|(15([0-3]|[5-9]))|(18[0-9]))\d{8})$/).test(value)){
|
|
||||||
return '请输入正确的电话号码';
|
|
||||||
}
|
|
||||||
},
|
|
||||||
entemail: function(value){
|
entemail: function(value){
|
||||||
if(value!="" && !new RegExp(/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/).test(value)){
|
if(value!="" && !new RegExp(/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/).test(value)){
|
||||||
return '请输入正确的电子邮箱地址';
|
return '请输入正确的电子邮箱地址';
|
||||||
|
@ -81,14 +81,14 @@
|
|||||||
<div class="layui-inline">
|
<div class="layui-inline">
|
||||||
<label class="layui-form-label">联系电话:</label>
|
<label class="layui-form-label">联系电话:</label>
|
||||||
<div class="layui-input-inline">
|
<div class="layui-input-inline">
|
||||||
<input type="text" name="phone" lay-verify="entphone" autocomplete="off"
|
<input type="text" name="phone" autocomplete="off"
|
||||||
class="layui-input">
|
class="layui-input">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-inline uckefu-inline">
|
<div class="layui-inline uckefu-inline">
|
||||||
<label class="layui-form-label">手机号:</label>
|
<label class="layui-form-label">手机号:</label>
|
||||||
<div class="layui-input-inline">
|
<div class="layui-input-inline">
|
||||||
<input type="text" name="mobileno" id="getdate" lay-verify="entphone" autocomplete="off" class="layui-input">
|
<input type="text" name="mobileno" autocomplete="off" class="layui-input">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -161,11 +161,6 @@
|
|||||||
var form = layui.form();
|
var form = layui.form();
|
||||||
form.render(); //更新全部
|
form.render(); //更新全部
|
||||||
form.verify({
|
form.verify({
|
||||||
entphone: function(value){
|
|
||||||
if(value!="" && !new RegExp(/^(0\d{2,3}-{0,1}\d{5,8}(-{0,1}\d{3,5}){0,1})|(((13[0-9])|(15([0-3]|[5-9]))|(18[0-9]))\d{8})$/).test(value)){
|
|
||||||
return '请输入正确的电话号码';
|
|
||||||
}
|
|
||||||
},
|
|
||||||
entemail: function(value){
|
entemail: function(value){
|
||||||
if(value!="" && !new RegExp(/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/).test(value)){
|
if(value!="" && !new RegExp(/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/).test(value)){
|
||||||
return '请输入正确的电子邮箱地址';
|
return '请输入正确的电子邮箱地址';
|
||||||
|
@ -86,14 +86,14 @@
|
|||||||
<div class="layui-inline">
|
<div class="layui-inline">
|
||||||
<label class="layui-form-label">联系电话:</label>
|
<label class="layui-form-label">联系电话:</label>
|
||||||
<div class="layui-input-inline">
|
<div class="layui-input-inline">
|
||||||
<input type="text" name="phone" lay-verify="entphone" value="${contacts.phone!''}" autocomplete="off"
|
<input type="text" name="phone" value="${contacts.phone!''}" autocomplete="off"
|
||||||
class="layui-input">
|
class="layui-input">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-inline uckefu-inline">
|
<div class="layui-inline uckefu-inline">
|
||||||
<label class="layui-form-label">手机号:</label>
|
<label class="layui-form-label">手机号:</label>
|
||||||
<div class="layui-input-inline">
|
<div class="layui-input-inline">
|
||||||
<input type="text" name="mobileno" id="getdate" lay-verify="entphone" value="${contacts.mobileno!''}" autocomplete="off" class="layui-input">
|
<input type="text" name="mobileno" value="${contacts.mobileno!''}" autocomplete="off" class="layui-input">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -166,11 +166,6 @@
|
|||||||
var form = layui.form();
|
var form = layui.form();
|
||||||
form.render(); //更新全部
|
form.render(); //更新全部
|
||||||
form.verify({
|
form.verify({
|
||||||
entphone: function(value){
|
|
||||||
if(value!="" && !new RegExp(/^(0\d{2,3}-{0,1}\d{5,8}(-{0,1}\d{3,5}){0,1})|(((13[0-9])|(15([0-3]|[5-9]))|(18[0-9]))\d{8})$/).test(value)){
|
|
||||||
return '请输入正确的电话号码';
|
|
||||||
}
|
|
||||||
},
|
|
||||||
entemail: function(value){
|
entemail: function(value){
|
||||||
if(value!="" && !new RegExp(/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/).test(value)){
|
if(value!="" && !new RegExp(/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/).test(value)){
|
||||||
return '请输入正确的电子邮箱地址';
|
return '请输入正确的电子邮箱地址';
|
||||||
|
@ -62,7 +62,7 @@
|
|||||||
<div class="layui-inline">
|
<div class="layui-inline">
|
||||||
<label class="layui-form-label">联系电话:</label>
|
<label class="layui-form-label">联系电话:</label>
|
||||||
<div class="layui-input-inline">
|
<div class="layui-input-inline">
|
||||||
<input type="text" name="entcustomer.phone" lay-verify="entphone" autocomplete="off"
|
<input type="text" name="entcustomer.phone" autocomplete="off"
|
||||||
class="layui-input">
|
class="layui-input">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -187,7 +187,7 @@
|
|||||||
<label class="layui-form-label">座机电话:</label>
|
<label class="layui-form-label">座机电话:</label>
|
||||||
<div class="layui-input-inline" style="width:auto;">
|
<div class="layui-input-inline" style="width:auto;">
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
<input type="text" name="contacts.phone" autocomplete="off" class="layui-input" lay-verify="landlinephone">
|
<input type="text" name="contacts.phone" autocomplete="off" class="layui-input">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -204,12 +204,12 @@
|
|||||||
<label class="layui-form-label">手机号:</label>
|
<label class="layui-form-label">手机号:</label>
|
||||||
<div class="layui-input-inline" style="width:auto;">
|
<div class="layui-input-inline" style="width:auto;">
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
<input type="text" name="contacts.mobile" autocomplete="off" class="layui-input" lay-verify="entphone">
|
<input type="text" name="contacts.mobile" autocomplete="off" class="layui-input">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<div class="layui-inline">
|
<div class="layui-inline">
|
||||||
<label class="layui-form-label">联系人地址:</label>
|
<label class="layui-form-label">联系人地址:</label>
|
||||||
@ -233,37 +233,24 @@
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
//Demo
|
//Demo
|
||||||
$('#entcustomer_province').change(function(){
|
|
||||||
loadURL('/res/dic.html?id='+$(this).val()+"&name=entcustomer.city&attr=lay-ignore&style=width:85px;" , '#entcustomer_city');
|
|
||||||
})
|
|
||||||
layui.use('form', function() {
|
layui.use('form', function() {
|
||||||
var form = layui.form();
|
var form = layui.form();
|
||||||
form.render(); //更新全部
|
form.render(); //更新全部
|
||||||
form.verify({
|
form.verify({
|
||||||
entphone: function(value){
|
|
||||||
if(value!="" && !new RegExp(/^(0\d{2,3}-{0,1}\d{5,8}(-{0,1}\d{3,5}){0,1})|(((13[0-9])|(15([0-3]|[5-9]))|(18[0,5-9]))\d{8})$/).test(value)){
|
|
||||||
return '请输入正确的电话号码';
|
|
||||||
}
|
|
||||||
},
|
|
||||||
entemail: function(value){
|
entemail: function(value){
|
||||||
if(value!="" && !new RegExp(/^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/).test(value)){
|
if(value!="" && !new RegExp(/^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/).test(value)){
|
||||||
return '请输入正确的电子邮箱地址';
|
return '请输入正确的电子邮箱地址';
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
landlinephone: function(value){
|
|
||||||
if(value!="" && !new RegExp(/^((0\d{2,3}-\d{7,8})|(1[3584]\d{9}))$/).test(value)){
|
|
||||||
return '请输入正确的电话号码';
|
|
||||||
}
|
|
||||||
},
|
|
||||||
customer_username: function (value) {
|
customer_username: function (value) {
|
||||||
if (value.length > 100){
|
if (value.length > 100){
|
||||||
return "用户姓名不能超过100字";
|
return "用户姓名不能超过100字";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
form.on("radio(etype)" , function(data){
|
form.on("radio(etype)" , function(data){
|
||||||
if(data.value == "enterprise"){
|
if(data.value == "enterprise"){
|
||||||
$('#contacts_info').show();
|
$('#contacts_info').show();
|
||||||
$('#cusname').text("客户名称:");
|
$('#cusname').text("客户名称:");
|
||||||
}else{
|
}else{
|
||||||
$('#contacts_info').hide();
|
$('#contacts_info').hide();
|
||||||
@ -294,4 +281,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
$('#entcustomer_province').change(function(){
|
||||||
|
loadURL('/res/dic.html?id='+$(this).val()+"&name=entcustomer.city&attr=lay-ignore&style=width:85px;" , '#entcustomer_city');
|
||||||
|
})
|
||||||
</script>
|
</script>
|
||||||
|
@ -64,7 +64,7 @@
|
|||||||
<div class="layui-inline">
|
<div class="layui-inline">
|
||||||
<label class="layui-form-label">联系电话:</label>
|
<label class="layui-form-label">联系电话:</label>
|
||||||
<div class="layui-input-inline">
|
<div class="layui-input-inline">
|
||||||
<input type="text" name="entcustomer.phone" lay-verify="entphone" autocomplete="off" value="${entCustomer.phone!''}"
|
<input type="text" name="entcustomer.phone" autocomplete="off" value="${entCustomer.phone!''}"
|
||||||
class="layui-input">
|
class="layui-input">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -174,11 +174,6 @@
|
|||||||
var form = layui.form();
|
var form = layui.form();
|
||||||
form.render(); //更新全部
|
form.render(); //更新全部
|
||||||
form.verify({
|
form.verify({
|
||||||
entphone: function(value){
|
|
||||||
if(value!="" && !new RegExp(/^(0\d{2,3}-{0,1}\d{5,8}(-{0,1}\d{3,5}){0,1})|(((13[0-9])|(15([0-3]|[5-9]))|(18[0,5-9]))\d{8})$/).test(value)){
|
|
||||||
return '请输入正确的电话号码';
|
|
||||||
}
|
|
||||||
},
|
|
||||||
entemail: function(value){
|
entemail: function(value){
|
||||||
if(value!="" && !new RegExp(/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/).test(value)){
|
if(value!="" && !new RegExp(/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/).test(value)){
|
||||||
return '请输入正确的电子邮箱地址';
|
return '请输入正确的电子邮箱地址';
|
||||||
|
@ -17,12 +17,18 @@ server {
|
|||||||
proxy_pass http://contact-center:8035;
|
proxy_pass http://contact-center:8035;
|
||||||
}
|
}
|
||||||
|
|
||||||
location /socket.io { proxy_set_header Upgrade $http_upgrade;
|
location /actuator {
|
||||||
proxy_set_header Connection "Upgrade";
|
return 403 "403: Target API is blocked.";
|
||||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
||||||
proxy_set_header Host $host;
|
}
|
||||||
proxy_http_version 1.1;
|
|
||||||
proxy_pass http://contact-center:8036;
|
location /socket.io {
|
||||||
|
proxy_set_header Upgrade $http_upgrade;
|
||||||
|
proxy_set_header Connection "Upgrade";
|
||||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
proxy_http_version 1.1;
|
||||||
|
proxy_pass http://contact-center:8036;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -267,7 +267,7 @@ public class ApiChatbotController extends Handler {
|
|||||||
|
|
||||||
if (j.has("workmode") && Constants.CHATBOT_VALID_WORKMODELS.contains(j.get("workmode").getAsString())) {
|
if (j.has("workmode") && Constants.CHATBOT_VALID_WORKMODELS.contains(j.get("workmode").getAsString())) {
|
||||||
c.setWorkmode(j.get("workmode").getAsString());
|
c.setWorkmode(j.get("workmode").getAsString());
|
||||||
invite.setAifirst(StringUtils.equals(Constants.CHATBOT_CHATBOT_FIRST, c.getWorkmode()));
|
invite.setAifirst(!StringUtils.equals(Constants.CHATBOT_HUMAN_FIRST, c.getWorkmode()));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (j.has("enabled")) {
|
if (j.has("enabled")) {
|
||||||
|
@ -52,6 +52,7 @@
|
|||||||
<select name="workmode" lay-verify="required">
|
<select name="workmode" lay-verify="required">
|
||||||
<option <#if bot.workmode=="机器人客服优先">selected="selected"</#if>>机器人客服优先</option>
|
<option <#if bot.workmode=="机器人客服优先">selected="selected"</#if>>机器人客服优先</option>
|
||||||
<option <#if bot.workmode=="人工客服优先">selected="selected"</#if>>人工客服优先</option>
|
<option <#if bot.workmode=="人工客服优先">selected="selected"</#if>>人工客服优先</option>
|
||||||
|
<option <#if bot.workmode=="仅机器人客服">selected="selected"</#if>>仅机器人客服</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-form-mid layui-word-aux">来自访客的会话默认以什么方式接待</div>
|
<div class="layui-form-mid layui-word-aux">来自访客的会话默认以什么方式接待</div>
|
||||||
|
@ -118,7 +118,7 @@
|
|||||||
<td>
|
<td>
|
||||||
${currentbot.workmode}
|
${currentbot.workmode}
|
||||||
</td>
|
</td>
|
||||||
<td><p style="color: #9C9C9C">工作模式有机器人优先和人工坐席优先两种,这决定了访客连线后默认对接的方式。</p></td>
|
<td><p style="color: #9C9C9C">工作模式有"机器人优先","人工坐席优先"和"仅机器人客服"三种,这决定了访客连线后默认对接的方式。</p></td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user