1
0
mirror of https://github.com/chatopera/cosin.git synced 2025-08-01 16:38:02 +08:00

Merge branch 'develop' of github.com:chatopera/cosin into develop

This commit is contained in:
Hai Liang Wang 2018-09-27 11:09:42 +08:00
commit c3f7e46eed
14 changed files with 444 additions and 36 deletions

View File

@ -384,7 +384,7 @@
<email>hailiang.hl.wang@gmail.com</email>
<url>https://github.com/Samurais</url>
<organization>Chatopera Inc.</organization>
<organizationUrl>http://www.chatopera.com</organizationUrl>
<organizationUrl>https://www.chatopera.com</organizationUrl>
<roles>
<role>architect</role>
<role>developer</role>

View File

@ -0,0 +1,70 @@
/*
* Copyright (C) 2018 Chatopera Inc, <https://www.chatopera.com>
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.chatopera.cc.app.handler.apps.chatbot;
import com.chatopera.cc.app.handler.Handler;
import com.chatopera.cc.app.model.Chatbot;
import com.chatopera.cc.app.model.SNSAccount;
import com.chatopera.cc.app.model.User;
import com.chatopera.cc.app.persistence.repository.ChatbotRepository;
import com.chatopera.cc.app.persistence.repository.SNSAccountRepository;
import com.chatopera.cc.util.Menu;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.validation.Valid;
@Controller
@RequestMapping(value = "/apps/chatbot")
public class ChatbotController extends Handler {
@Autowired
private ChatbotRepository chatbotRes;
@Autowired
private SNSAccountRepository snsAccountRes;
@RequestMapping(value = "/index")
@Menu(type = "chatbot", subtype = "index", access = true)
public ModelAndView index(ModelMap map, HttpServletRequest request) {
return request(super.createAppsTempletResponse("/apps/chatbot/index"));
}
@RequestMapping(value = "/edit")
@Menu(type = "chatbot", subtype = "index", access = true)
public ModelAndView eidt(ModelMap map, HttpServletRequest request, @Valid String id) {
User curruser = super.getUser(request);
ModelAndView view = request(super.createAppsTempletResponse("/apps/chatbot/edit"));
if (id != null) {
Chatbot c = chatbotRes.findOne(id);
SNSAccount snsAccount = snsAccountRes.findBySnsidAndOrgi(c.getSnsAccountIdentifier(), curruser.getOrgi());
view.addObject("snsurl", snsAccount.getBaseURL());
view.addObject("bot", c);
}
view.addObject("id", id);
return view;
}
}

View File

@ -38,7 +38,7 @@ public class TestController extends Handler {
for(int i=0 ; i<500; i++){
String user = MainUtils.getUUID();
try {
OnlineUserUtils.newRequestMessage(user, "ukewo", "user", "system", "localhost" , "win10", "test" , MainContext.ChannelTypeEnum.WEBIM.toString() , null , null , "admin" , "标题" , "http://www.ukewo.cn" , "12434" , MainContext.ChatInitiatorType.USER.toString()) ;
OnlineUserUtils.newRequestMessage(user, "ukewo", "user", "system", "localhost" , "win10", "test" , MainContext.ChannelTypeEnum.WEBIM.toString() , null , null , "admin" , "标题" , "https://www.chatopera.com" , "12434" , MainContext.ChatInitiatorType.USER.toString()) ;
} catch (Exception e) {
e.printStackTrace();
}

View File

@ -32,7 +32,7 @@
<div class="layui-form-item">
<label class="layui-form-label">欢迎提示语:</label>
<div class="layui-input-inline">
<textarea id="welcomemsg" style="width:450px;" name="welcomemsg" class="layui-textarea">${extention.welcomemsg!"您好,欢迎致电客服智能IVR演示系统这里是电话机器人演示系统请说要进入的测试流程比如客服系统"}</textarea>
<textarea id="welcomemsg" style="width:450px;" name="welcomemsg" class="layui-textarea">${extention.welcomemsg!"您好,欢迎致电春松客服智能IVR演示系统这里是电话机器人演示系统请说要进入的测试流程比如客服系统"}</textarea>
</div>
</div>

View File

@ -15,7 +15,7 @@
<div class="box-item">
<div class="row">
<div class="col-lg-8">
<p>客服系统界面颜色风格</p>
<p>春松客服系统界面颜色风格</p>
<p style="color:#888888;font-size:13px;margin-top:10px;">默认的配色是绿色,选择颜色可以在右侧预览风格,点击保存即可生效</p>
</div>
<div class="col-lg-4">
@ -165,7 +165,8 @@
<#if entim?? && entim == true>
<a href="/admin/config/stopentim.html" data-toggle="tip" title="请确认是否关闭EntIM功能" class="layui-btn layui-btn-small layui-btn-danger">关闭EntIM功能</a>
<#else>
<a href="/admin/config/startentim.html" data-toggle="tip" title="启用EntIM功能" class="layui-btn layui-btn-small">启用EntIM功能</a>
<!-- <a href="/admin/config/startentim.html" data-toggle="tip" title="启用EntIM功能" class="layui-btn layui-btn-small">启用EntIM功能</a> -->
<a href="" data-toggle="tip" title="启用EntIM功能" class="layui-btn layui-btn-small">启用EntIM功能</a>
</#if>
</div>
</div>
@ -178,7 +179,7 @@
<div class="row">
<div class="col-lg-8">
<p>启用权限数据采集功能后,会进入数据采集模式,当前状态:<#if infoace?? && infoace == true><small class="ukefu-label theme4">已启用</small><#else><small class="ukefu-label theme4" style="background-color:#FF5722;">已关闭</small></#if></p>
<p style="color:#888888;font-size:13px;margin-top:10px;">启用后,在客服界面上的任何链接点击操作都会触发数据收集功能</p>
<p style="color:#888888;font-size:13px;margin-top:10px;">启用后,在春松客服界面上的任何链接点击操作都会触发数据收集功能</p>
</div>
<div class="col-lg-4">
<#if infoace?? && infoace == true>
@ -192,7 +193,7 @@
</div>
<div class="ukefu-webim-prop">
<div class="ukefu-webim-tl" style="clear:both;">10、停止客服系统</div>
<div class="ukefu-webim-tl" style="clear:both;">10、停止春松客服系统</div>
<div class="box-item">
<div class="row">
<div class="col-lg-8">

View File

@ -50,7 +50,7 @@
<p style="color:#888888;font-size:13px;margin-top:10px;">默认显示信息 企业名称</p>
</div>
<div class="col-lg-4">
<input type="text" name="dialog_name" value="${inviteData.dialog_name!'客服'}" autocomplete="off" class="layui-input" oninput="$('#dialog_name').text($(this).val())" onchange="$('#dialog_name').text($(this).val())">
<input type="text" name="dialog_name" value="${inviteData.dialog_name!'春松客服'}" autocomplete="off" class="layui-input" oninput="$('#dialog_name').text($(this).val())" onchange="$('#dialog_name').text($(this).val())">
</div>
</div>
</div>
@ -205,7 +205,7 @@
</div>
<div class="col-lg-4">
<div class="layui-input-block">
<input type="text" name="consult_skill_title" value="${inviteData.consult_skill_title!'客服'}" autocomplete="off" class="layui-input">
<input type="text" name="consult_skill_title" value="${inviteData.consult_skill_title!'春松客服'}" autocomplete="off" class="layui-input">
</div>
</div>
</div>
@ -472,7 +472,7 @@
</div>
<div class="col-lg-4">
<div class="layui-input-block">
<input type="text" name="aisuccesstip" maxlength="100" value="${inviteData.aisuccesstip!'欢迎使用客服小E我来帮您解答问题'}" autocomplete="off" class="layui-input">
<input type="text" name="aisuccesstip" maxlength="100" value="${inviteData.aisuccesstip!'欢迎使用春松客服小E我来帮您解答问题'}" autocomplete="off" class="layui-input">
</div>
</div>
</div>
@ -584,7 +584,7 @@
<div class="ukefu-im-profile" style="width:130px;font-size:12px;">
<div class="ukefu-profile-title" style="clear:both;">信息提示</div>
<div class="box-item" style="padding:5px;white-space: nowrap;text-overflow: ellipsis;">
名称:<label id="dialog_name">${inviteData.dialog_name!'客服'}</label>
名称:<label id="dialog_name">${inviteData.dialog_name!'春松客服'}</label>
</div>
<div class="box-item" style="padding:5px;white-space: nowrap;text-overflow: ellipsis;">
地址:<label id="dialog_address">${inviteData.dialog_address!'广东深圳'}</label>

View File

@ -193,7 +193,7 @@
[知识概况] 45 浏览 15收藏 5评论 2017-10-02 15:40:33前有效
<span>
<i class="kfont">&#xe61e;</i>
<a href="">客服v3.1.0 产品说明书.pdf 等3个附件</a>
<a href="">春松客服v3.1.0 产品说明书.pdf 等3个附件</a>
</span>
</div>
</li>
@ -233,7 +233,7 @@
[知识概况] 45 浏览 15收藏 5评论 2017-10-02 15:40:33前有效
<span>
<i class="kfont">&#xe61e;</i>
<a href="">客服v3.1.0 产品说明书.pdf 等3个附件</a>
<a href="">春松客服v3.1.0 产品说明书.pdf 等3个附件</a>
</span>
</div>
</li>
@ -273,7 +273,7 @@
[知识概况] 45 浏览 15收藏 5评论 2017-10-02 15:40:33前有效
<span>
<i class="kfont">&#xe61e;</i>
<a href="">客服v3.1.0 产品说明书.pdf 等3个附件</a>
<a href="">春松客服v3.1.0 产品说明书.pdf 等3个附件</a>
</span>
</div>
</li>
@ -311,7 +311,7 @@
[知识概况] 45 浏览 15收藏 5评论 2017-10-02 15:40:33前有效
<span>
<i class="kfont">&#xe61e;</i>
<a href="">客服v3.1.0 产品说明书.pdf 等3个附件</a>
<a href="">春松客服v3.1.0 产品说明书.pdf 等3个附件</a>
</span>
</div>
</li>

View File

@ -94,7 +94,7 @@
[知识概况] 45 浏览 15收藏 5评论 2017-10-02 15:40:33前有效
<span>
<i class="kfont">&#xe61e;</i>
<a href="">客服v3.1.0 产品说明书.pdf 等3个附件</a>
<a href="">春松客服v3.1.0 产品说明书.pdf 等3个附件</a>
</span>
</div>
</li>
@ -134,7 +134,7 @@
[知识概况] 45 浏览 15收藏 5评论 2017-10-02 15:40:33前有效
<span>
<i class="kfont">&#xe61e;</i>
<a href="">客服v3.1.0 产品说明书.pdf 等3个附件</a>
<a href="">春松客服v3.1.0 产品说明书.pdf 等3个附件</a>
</span>
</div>
</li>
@ -174,7 +174,7 @@
[知识概况] 45 浏览 15收藏 5评论 2017-10-02 15:40:33前有效
<span>
<i class="kfont">&#xe61e;</i>
<a href="">客服v3.1.0 产品说明书.pdf 等3个附件</a>
<a href="">春松客服v3.1.0 产品说明书.pdf 等3个附件</a>
</span>
</div>
</li>
@ -212,7 +212,7 @@
[知识概况] 45 浏览 15收藏 5评论 2017-10-02 15:40:33前有效
<span>
<i class="kfont">&#xe61e;</i>
<a href="">客服v3.1.0 产品说明书.pdf 等3个附件</a>
<a href="">春松客服v3.1.0 产品说明书.pdf 等3个附件</a>
</span>
</div>
</li>

View File

@ -0,0 +1,175 @@
<style>
#create {
margin: 10px;
border-top: 1px solid #EEEEEE;
padding-top: 5px;
}
#create input {
width: 400px;
}
</style>
<div class="row">
<div class="col-lg-12">
<div id="create">
<form class="layui-form uk-form" style="width: 700px;margin: auto;">
<input id="id" type="hidden" name="id" value="${id}">
<div class="layui-form-item">
<label class="layui-form-label">网站渠道</label>
<div class="layui-input-inline">
<#if id!=null>
<input type="text" name="snsurl" required lay-verify="required" value="${snsurl}"
autocomplete="off" class="layui-input" disabled>
<#else>
<select id="snsid" name="snsid" lay-verify="required">
<option></option>
</select>
</#if>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">智能问答引擎地址</label>
<div class="layui-input-inline">
<input type="text" name="baseUrl" required lay-verify="required" placeholder="请输入智能问答引擎地址"
autocomplete="off" class="layui-input" value="${bot.baseUrl}" <#if id!=null>disabled</#if>>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">名称</label>
<div class="layui-input-inline">
<input type="text" name="name" required lay-verify="required" placeholder="请输入名称" autocomplete="off"
class="layui-input" value="${bot.name}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">语言</label>
<div class="layui-input-inline">
<select name="primaryLanguage" lay-verify="required">
<option value="zh_CN" <#if bot.primaryLanguage=="zh_CN">selected="selected"</#if>>中文</option>
<option value="en_US" <#if bot.primaryLanguage=="en_US">selected="selected"</#if>>英文</option>
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">兜底回复</label>
<div class="layui-input-inline">
<input type="text" name="fallback" required lay-verify="required" autocomplete="off" value="${bot.fallback}"
class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">工作模式</label>
<div class="layui-input-inline">
<select name="workmode" lay-verify="required">
<option <#if bot.workmode=="机器人客服优先">selected="selected"</#if>>机器人客服优先</option>
<option <#if bot.workmode=="人工客服优先">selected="selected"</#if>>人工客服优先</option>
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">描述</label>
<div class="layui-input-inline">
<input type="text" name="description" required lay-verify="required" autocomplete="off" value="${bot.description}"
class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-inline">
<button class="layui-btn" lay-submit lay-filter="save">保存</button>
</div>
</div>
</form>
</div>
</div>
</div>
<script>
function request(data, cb) {
var postfix = '/api/';
var payload = {
url: postfix + 'chatbot',
method: 'POST',
contentType: 'application/json;charset=UTF-8',
headers: {
authorization: $.cookie('authorization')
},
dataType: 'json',
data: JSON.stringify(data)
};
$.ajax(payload)
.done(function (data) {
console.log('Rest api 返回的值:', data);
if (data.status && data.status === "AUTH_ERROR") {
layer.confirm('会话过期,请重新登录!', {
btn: ['是', '否'],
icon: 2,
title: '提示'
}, function (index, layero) {
layer.close(index)
top.location.href = '/logout.html'
}, function (index) {
// 取消方法
});
return;
}
if (data.rc == 0) {
cb(null, data.data);
} else {
cb(data.error);
}
})
.fail(function (jqXHR, textStatus) {
console.error('Rest api 返回error', jqXHR);
cb(textStatus);
});
}
layui.use(['form'], function () {
var form = layui.form();
form.on('submit(save)', function (data) {
var field = data.field;
var submitFinish = function (err, bot) {
if (err) {
console.error(err);
} else {
layer.open({
title: '提示'
, content: '保存成功'
});
parent.init();
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
}
}
if (field.id) {
field.ops = 'update';
request(field, submitFinish);
} else {
field.ops = 'create';
request(field, submitFinish);
}
console.log(data.field);
return false;
});
if (!$('#id').val()) {
request({
ops: 'vacant'
}, function (err, list) {
if (err) {
console.error(err)
} else {
var options = $.map(list, function (r) {
return '<option value="' + r.snsid + '">' + r.snsurl + '</option>';
});
$('#snsid').html(options);
form.render('select');
}
})
}
})
</script>

View File

@ -0,0 +1,155 @@
<style>
#create {
margin: 10px;
}
#create input {
width: 400px;
}
</style>
<div class="layui-layout-body">
<div class="row">
<div class="col-lg-12">
<h1>机器人列表
<div style="float: right;" class="ukefu-bt-text-content">
<button class="layui-btn layui-btn-samll green" onclick="showCreate()">新建机器人</button>
</div>
</h1>
</div>
</div>
<div class="row">
<div class="col-lg-12">
<table class="layui-table" lay-skin="line">
<thead>
<tr>
<th>机器人名称</th>
<th>网站渠道</th>
<th>是否开启</th>
<th style="white-space:nowrap;" nowrap="nowrap">操作</th>
</tr>
</thead>
<tbody id="bots">
</tbody>
</table>
</div>
</div>
</div>
<script>
function request(path, data) {
var postfix = '/api/';
var payload = {
url: postfix + path,
method: 'POST',
contentType: 'application/json;charset=UTF-8',
headers: {
authorization: $.cookie('authorization')
},
dataType: 'json',
data: JSON.stringify(data)
};
return new Promise(function (resolve, reject) {
$.ajax(payload)
.done(function (data) {
console.log('Rest api 返回的值:', data);
if (data.status && data.status === "AUTH_ERROR") {
layer.confirm('会话过期,请重新登录!', {
btn: ['是', '否'],
icon: 2,
title: '提示'
}, function (index, layero) {
layer.close(index)
top.location.href = '/logout.html'
}, function (index) {
// 取消方法
});
return;
}
if (data.rc == 0) {
resolve(data.data);
} else {
reject(data.error);
}
})
.fail(function (jqXHR, textStatus) {
console.error('Rest api 返回error', jqXHR);
reject(textStatus)
});
})
}
function query(p, ps) {
request('chatbot?p=' + (p || 1) + '&ps=' + (ps || 10), { ops: 'fetch' }).then(function (rows) {
var tds = $.map(rows, function (r) {
var edit = $('<a href="#" data-width="550" data-height="300"><i class="layui-icon"></i>编辑</a>');
edit.click(function () {
layer.open({
title: '编辑机器人',
type: 2,
area: ['800px', '450px'],
content: 'edit.html?id=' + r.id
})
});
var remove = $('<a style="margin-left:10px;"><i class="layui-icon" style="color:red;"></i>删除</a>').click(function () {
var lindex = layer.confirm('请确认是否删除?', {
btn: ['确认', '删除']
}, function () {
console.log('ok', r.id)
window.remove(r.id);
layer.close(lindex);
}, function () {
console.log('cancel', r.id)
layer.close(lindex);
});
});
var isEnabled = $('<td><input type="checkbox" lay-skin="switch" lay-text="开启|关闭" ' + (r.enabled ? 'checked' : '') + '></td>');
isEnabled.change(function () {
change(r.id, $(this).find('input').prop('checked'));
})
var rows = [
$('<td>' + r.name + '</td>'),
$('<td>' + r.snsurl + '</td>'),
isEnabled,
$('<td style="white-space:nowrap;" nowrap="nowrap"></td>').html([edit, remove])
];
var tr = $('<tr></tr>');
tr.html(rows);
return tr;
})
$('#bots').html(tds);
})
}
function remove(id) {
return request('chatbot', { ops: 'delete', id: id }).then(function () {
window.init();
})
}
function change(id, isEnabled) {
return request('chatbot', { ops: isEnabled ? 'enable' : 'disable', id: id })
}
function showCreate() {
layer.open({
title: '新建机器人',
type: 2,
area: ['800px', '450px'],
content: 'edit.html'
})
}
function init() {
query(1, 10);
}
layui.use(['form'], function () {
init();
})
</script>

View File

@ -77,10 +77,10 @@
</div>
<div class="content-bottom">
<span id="welcome-message">
<p>欢迎使用客服企业IM</p>
<p>QQ群<a target="_blank" href="//shang.qq.com/wpa/qunwpa?idkey=637134af30a27220211c843d801ada14700aca69ee8f4acf13f795fe38ea7b94"><img border="0" src="//pub.idqqimg.com/wpa/images/group.png" alt="优客服开源项目" title="优客服开源项目"></a></p>
<p>客服企业IM为收费产品</p>
<p>详情请咨询:<a href="http://www.ukewo.cn" target="_blank" style="color:#32c24d;">客服</a></p>
<p>欢迎使用春松客服企业IM</p>
<p>QQ群<a target="_blank" href="//shang.qq.com/wpa/qunwpa?idkey=ef3061d99653e2f43619ddcefbf76ac2399196d89fd589501e19ae64423a5a31"><img border="0" src="//pub.idqqimg.com/wpa/images/group.png" alt="春松客服开源社区" title="春松客服开源社区"></a></p>
<p>春松客服企业IM为收费产品</p>
<p>详情请咨询:<a href="https://www.chatopera.com" target="_blank" style="color:#32c24d;">春松客服</a></p>
</span>
</div>
</div>

View File

@ -172,7 +172,7 @@
title: '关于' ,
btn: '关闭' ,
shade: 0 ,
content : '<span id="welcome-message"><p>欢迎使用客服企业IM</p><p>QQ群<a target="_blank" href="//shang.qq.com/wpa/qunwpa?idkey=637134af30a27220211c843d801ada14700aca69ee8f4acf13f795fe38ea7b94"><img border="0" src="//pub.idqqimg.com/wpa/images/group.png" alt="优客服开源项目" title="优客服开源项目"></a></p><p>客服企业IM为收费产品</p><p>详情请咨询:<a href="http://www.ukewo.cn" target="_blank" style="color:#32c24d;">客服</a></p></span>'});
content : '<span id="welcome-message"><p>欢迎使用春松客服企业IM</p><p>QQ群<a target="_blank" href="//shang.qq.com/wpa/qunwpa?idkey=ef3061d99653e2f43619ddcefbf76ac2399196d89fd589501e19ae64423a5a31"><img border="0" src="//pub.idqqimg.com/wpa/images/group.png" alt="春松客服开源社区" title="春松客服开源社区"></a></p><p>春松客服企业IM为收费产品</p><p>详情请咨询:<a href="https://www.chatopera.com" target="_blank" style="color:#32c24d;">春松客服</a></p></span>'});
}
function search(){
layer.open({

View File

@ -299,15 +299,15 @@
-->
<#if models?? && models["xiaoe"]?? && models["xiaoe"] == true>
<#if user?? &&( user.roleAuthMap["A09"]?? || user.usertype == "0") >
<dd class="ukefu-left-menu" data-tooltip="智能机器人">
<a href="javascript:void(0)" data-title="智能机器人" data-href="/apps/xiaoe/index.html" class="iframe_btn" data-id="maincontent" data-type="tabChange">
<i class="kfont" style="position: relative;">&#xe63a;</i>
</a>
</dd>
</#if>
</#if>
<!--<#if models?? && models["xiaoe"]?? && models["xiaoe"] == true>-->
<!--<#if user?? &&( user.roleAuthMap["A09"]?? || user.usertype == "0") >-->
<!--<dd class="ukefu-left-menu" data-tooltip="智能机器人">-->
<!--<a href="javascript:void(0)" data-title="智能机器人" data-href="/apps/xiaoe/index.html" class="iframe_btn" data-id="maincontent" data-type="tabChange">-->
<!--<i class="kfont" style="position: relative;">&#xe63a;</i>-->
<!--</a>-->
<!--</dd>-->
<!--</#if>-->
<!--</#if>-->
<#if models?? && models["sales"]?? && models["sales"] == true>
<#if user?? &&( user.roleAuthMap["A11"]?? || user.usertype == "0") >
<dd class="ukefu-left-menu" data-tooltip="外呼系统">
@ -317,6 +317,15 @@
</dd>
</#if>
</#if>
<#if models?? && models["sales"]?? && models["sales"] == true>
<#if user?? &&( user.roleAuthMap["A09"]?? || user.usertype == "0") >
<dd class="ukefu-left-menu" data-tooltip="智能机器人">
<a href="javascript:void(0)" data-title="智能机器人" data-href="/apps/chatbot/index.html" class="iframe_btn" data-id="maincontent" data-type="tabChange">
<i class="kfont" style="position: relative;">&#xe63a;</i>
</a>
</dd>
</#if>
</#if>
<#if models?? && models["callcenter"]?? && models["callcenter"] == true>
<#if user?? && (user.roleAuthMap["A10"]?? || user.usertype == "0") >
<dd class="ukefu-left-menu" data-tooltip="语音渠道">

View File

@ -7130,9 +7130,7 @@ INSERT INTO `uk_sysdic` VALUES ('402881ef612b1f5b01612ce8b990057e', '在线坐
INSERT INTO `uk_sysdic` VALUES ('402881ef612b1f5b01612ce8e6a2057f', '全部坐席', 'pub', 'A08_A04_A02', NULL, 'auth', '402881ef612b1f5b01612cdd1e930570', NULL, NULL, '&#x756e646566696e6564;', NULL, NULL, '297e8c7b455798280145579c73e501c1', '2018-01-25 18:41:56', NULL, 0, 0, '402888815d2fe37f015d2fe75cc80002', 0, 0, '/service/user/index.html', 'webim', '3', NULL, 'left');
INSERT INTO `uk_sysdic` VALUES ('402881ef612b1f5b01612ce964ae0580', '智能机器人', 'pub', 'A09_A01', NULL, 'auth', '402881ef612b1f5b01612cc602450546', NULL, NULL, '&#x756e646566696e6564;', NULL, NULL, '297e8c7b455798280145579c73e501c1', '2018-01-25 18:42:28', NULL, 0, 0, '402888815d2fe37f015d2fe75cc80002', 0, 0, 'javascript:;', 'webim', '2', NULL, 'left');
INSERT INTO `uk_sysdic` VALUES ('402881ef612b1f5b01612ce996f80581', '语料库配置', 'pub', 'A09_A02', NULL, 'auth', '402881ef612b1f5b01612cc602450546', NULL, NULL, '&#x756e646566696e6564;', NULL, NULL, '297e8c7b455798280145579c73e501c1', '2018-01-25 18:42:41', NULL, 0, 0, '402888815d2fe37f015d2fe75cc80002', 0, 0, 'javascript:;', 'webim', '2', NULL, 'left');
INSERT INTO `uk_sysdic` VALUES ('402881ef612b1f5b01612ce9d8150582', '机器人选项', 'pub', 'A09_A01_A01', NULL, 'auth', '402881ef612b1f5b01612ce964ae0580', NULL, NULL, '&#x756e646566696e6564;', NULL, NULL, '297e8c7b455798280145579c73e501c1', '2018-01-25 18:42:58', NULL, 0, 0, '402888815d2fe37f015d2fe75cc80002', 0, 0, '/apps/xiaoe/index.html', 'webim', '3', NULL, 'left');
INSERT INTO `uk_sysdic` VALUES ('402881ef612b1f5b01612cea04810583', '对话测试', 'pub', 'A09_A01_A02', NULL, 'auth', '402881ef612b1f5b01612ce964ae0580', NULL, NULL, '&#x756e646566696e6564;', NULL, NULL, '297e8c7b455798280145579c73e501c1', '2018-01-25 18:43:09', NULL, 0, 0, '402888815d2fe37f015d2fe75cc80002', 0, 0, '/apps/xiaoe/chat.html', 'webim', '3', NULL, 'left');
INSERT INTO `uk_sysdic` VALUES ('402881ef612b1f5b01612cea430f0584', '用户提问历史', 'pub', 'A09_A01_A03', NULL, 'auth', '402881ef612b1f5b01612ce964ae0580', NULL, NULL, '&#x756e646566696e6564;', NULL, NULL, '297e8c7b455798280145579c73e501c1', '2018-01-25 18:43:25', NULL, 0, 0, '402888815d2fe37f015d2fe75cc80002', 0, 0, '/apps/xiaoe/history.html', 'webim', '3', NULL, 'left');
INSERT INTO `uk_sysdic` VALUES ('402881ef612b1f5b01612ce9d8150582', '机器人管理', 'pub', 'A09_A01_A01', NULL, 'auth', '402881ef612b1f5b01612ce964ae0580', NULL, NULL, '&#x756e646566696e6564;', NULL, NULL, '297e8c7b455798280145579c73e501c1', '2018-01-25 18:42:58', NULL, 0, 0, '402888815d2fe37f015d2fe75cc80002', 0, 0, '/apps/xiaoe/index.html', 'webim', '3', NULL, 'left');
INSERT INTO `uk_sysdic` VALUES ('402881ef612b1f5b01612ceaff050587', '对话场景', 'pub', 'A09_A02_A03', NULL, 'auth', '402881ef612b1f5b01612ce996f80581', NULL, NULL, '&#x756e646566696e6564;', NULL, NULL, '297e8c7b455798280145579c73e501c1', '2018-01-25 18:44:13', NULL, 0, 0, '402888815d2fe37f015d2fe75cc80002', 0, 0, '/apps/xiaoe/scene.html', 'webim', '3', NULL, 'left');
INSERT INTO `uk_sysdic` VALUES ('402881ef612b1f5b01612ced9d5f0588', '知识维护', 'pub', 'A09_A02_A01', NULL, 'auth', '402881ef612b1f5b01612ce996f80581', NULL, NULL, '&#x756e646566696e6564;', NULL, NULL, '297e8c7b455798280145579c73e501c1', '2018-01-25 18:47:05', NULL, 0, 0, '402888815d2fe37f015d2fe75cc80002', 0, 0, '/apps/xiaoe/knowledge.html', 'webim', '3', NULL, 'left');
INSERT INTO `uk_sysdic` VALUES ('402881ef612b1f5b01612cedca5e0589', '词库配置', 'pub', 'A09_A02_A02', NULL, 'auth', '402881ef612b1f5b01612ce996f80581', NULL, NULL, '&#x756e646566696e6564;', NULL, NULL, '297e8c7b455798280145579c73e501c1', '2018-01-25 18:47:16', NULL, 0, 0, '402888815d2fe37f015d2fe75cc80002', 0, 0, '/apps/xiaoe/words.html', 'webim', '3', NULL, 'left');