Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
pxw_boy
cskefu
提交
7fceeab6
C
cskefu
项目概览
pxw_boy
/
cskefu
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
cskefu
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
7fceeab6
编写于
10月 11, 2020
作者:
Chatopera 研发团队
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'osc' of github.com:chatopera/cosin into osc
上级
0630acfd
1873c16e
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
184 addition
and
51 deletion
+184
-51
README.md
README.md
+90
-8
contact-center/app/src/main/resources/static/js/cskefu.js
contact-center/app/src/main/resources/static/js/cskefu.js
+18
-8
contact-center/app/src/main/resources/templates/apps/agent/mainagentuser.html
...rc/main/resources/templates/apps/agent/mainagentuser.html
+39
-18
contact-center/app/src/main/resources/templates/apps/cca/mainagentuser.html
.../src/main/resources/templates/apps/cca/mainagentuser.html
+37
-17
未找到文件。
README.md
浏览文件 @
7fceeab6
...
...
@@ -19,14 +19,6 @@
**春松客服团队博客:**
[
https://blog.chatopera.com/
](
https://blog.chatopera.com/
)
## 内容结构
| | | |
| ---------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- |
|
[
产品文档
](
https://docs.chatopera.com/products/cskefu/index.html
)
|
[
在线培训课程
](
https://gitee.com/chatopera/cosin#%E5%9C%A8%E7%BA%BF%E5%9F%B9%E8%AE%AD%E8%AF%BE%E7%A8%8B
)
|
[
用户案例
](
https://gitee.com/chatopera/cosin#%E7%94%A8%E6%88%B7%E6%A1%88%E4%BE%8B
)
|
|
[
开发文档
](
https://gitee.com/chatopera/cosin#%E5%BC%80%E5%8F%91%E6%96%87%E6%A1%A3
)
|
[
产品截图
](
https://gitee.com/chatopera/cosin#%E4%BA%A7%E5%93%81%E6%88%AA%E5%9B%BE
)
|
[
产品演示
](
https://gitee.com/chatopera/cosin#%E4%BA%A7%E5%93%81%E6%BC%94%E7%A4%BA
)
|
|
[
立即部署
](
https://gitee.com/chatopera/cosin#%E7%AB%8B%E5%8D%B3%E9%83%A8%E7%BD%B2
)
|
[
鸣谢
](
https://gitee.com/chatopera/cosin#%E9%B8%A3%E8%B0%A2
)
|
[
开源许可协议
](
https://gitee.com/chatopera/cosin#%E5%BC%80%E6%BA%90%E8%AE%B8%E5%8F%AF%E5%8D%8F%E8%AE%AE
)
|
## 产品演示
-
坐席工作台
...
...
@@ -126,6 +118,16 @@ The collaboration is efficient, very professional. The software is steady with h
</a>
</p>
## 寻找开发者
寻找开发者合作智能客服项目,社区共建,携手共赢!
*
组织或个人,在春松客服主页展示为认证开发者
*
春松客服官方推荐项目机会
*
专访并通过官方渠道曝光
填写申请:
[
https://www.wjx.top/jq/93397428.aspx
](
https://www.wjx.top/jq/93397428.aspx
)
## 产品截图
<p
align=
"center"
>
...
...
@@ -133,6 +135,12 @@ The collaboration is efficient, very professional. The software is steady with h
<img
src=
"https://static-public.chatopera.com/assets/images/44915395-6bff5d80-ad65-11e8-817a-8abb812fb5ee.png"
width=
"900"
>
</p>
<details>
<summary>
展开查看更多产品截图
</summary>
<p>
<p
align=
"center"
>
<b>
坐席工作台
</b><br>
<img
src=
"https://static-public.chatopera.com/assets/images/44915582-eb8d2c80-ad65-11e8-8876-86c8b5bb5cc7.png"
width=
"900"
>
...
...
@@ -168,12 +176,16 @@ The collaboration is efficient, very professional. The software is steady with h
<img
src=
"https://static-public.chatopera.com/assets/images/44916014-28a5ee80-ad67-11e8-936a-a2cdbe62f529.png"
width=
"900"
>
</p>
</p>
</details>
## 立即部署
-
私有部署版
参考部署
[
开源社区版本文档
](
https://docs.chatopera.com/products/cskefu/deploy.html
)
。
## 鸣谢
[
FreeSWITCH 中国社区
](
http://www.freeswitch.org.cn/
)
...
...
@@ -188,3 +200,73 @@ Copyright (2018-2020) <a href="https://www.chatopera.com/" target="_blank">北
[
co-banner-image
]:
https://static-public.chatopera.com/assets/images/42383104-da925942-8168-11e8-8195-868d5fcec170.png
[
co-url
]:
https://www.chatopera.com
## Chatopera 云服务
[
https://bot.chatopera.com/
](
https://bot.chatopera.com/
)
[
Chatopera 云服务
](
https://bot.chatopera.com
)
是一站式实现聊天机器人的云服务,按接口调用次数计费。Chatopera 云服务是
[
Chatopera 机器人平台
](
https://docs.chatopera.com/products/chatbot-platform/index.html
)
的软件即服务实例。在云计算基础上,Chatopera 云服务属于
**聊天机器人即服务**
的云服务。
Chatopera 机器人平台包括知识库、多轮对话、意图识别和语音识别等组件,标准化聊天机器人开发,支持企业 OA 智能问答、HR 智能问答、智能客服和网络营销等场景。企业 IT 部门、业务部门借助 Chatopera 云服务快速让聊天机器人上线!
<details>
<summary>
展开查看 Chatopera 云服务的产品截图
</summary>
<p>
<p
align=
"center"
>
<b>
自定义词典
</b><br>
<img
src=
"https://static-public.chatopera.com/assets/images/64530072-da92d600-d33e-11e9-8656-01c26caff4f9.png"
width=
"800"
>
</p>
<p
align=
"center"
>
<b>
自定义词条
</b><br>
<img
src=
"https://static-public.chatopera.com/assets/images/64530091-e41c3e00-d33e-11e9-9704-c07a2a02b84e.png"
width=
"800"
>
</p>
<p
align=
"center"
>
<b>
创建意图
</b><br>
<img
src=
"https://static-public.chatopera.com/assets/images/64530169-12018280-d33f-11e9-93b4-9db881cf4dd5.png"
width=
"800"
>
</p>
<p
align=
"center"
>
<b>
添加说法和槽位
</b><br>
<img
src=
"https://static-public.chatopera.com/assets/images/64530187-20e83500-d33f-11e9-87ec-a0241e3dac4d.png"
width=
"800"
>
</p>
<p
align=
"center"
>
<b>
训练模型
</b><br>
<img
src=
"https://static-public.chatopera.com/assets/images/64530235-33626e80-d33f-11e9-8d07-fa3ae417fd5d.png"
width=
"800"
>
</p>
<p
align=
"center"
>
<b>
测试对话
</b><br>
<img
src=
"https://static-public.chatopera.com/assets/images/64530253-3d846d00-d33f-11e9-81ea-86e6d47020d8.png"
width=
"800"
>
</p>
<p
align=
"center"
>
<b>
机器人画像
</b><br>
<img
src=
"https://static-public.chatopera.com/assets/images/64530312-6442a380-d33f-11e9-869c-85fb6a835a97.png"
width=
"800"
>
</p>
<p
align=
"center"
>
<b>
系统集成
</b><br>
<img
src=
"https://static-public.chatopera.com/assets/images/64530281-4ecd7980-d33f-11e9-8def-c53251f30138.png"
width=
"800"
>
</p>
<p
align=
"center"
>
<b>
聊天历史
</b><br>
<img
src=
"https://static-public.chatopera.com/assets/images/64530295-5856e180-d33f-11e9-94d4-db50481b2d8e.png"
width=
"800"
>
</p>
</p>
</details>
<p
align=
"center"
>
<b>
立即使用
</b><br>
<a
href=
"https://bot.chatopera.com"
target=
"_blank"
>
<img
src=
"https://static-public.chatopera.com/assets/images/64531083-3199aa80-d341-11e9-86cd-3a3ed860b14b.png"
width=
"800"
>
</a>
</p>
contact-center/app/src/main/resources/static/js/cskefu.js
浏览文件 @
7fceeab6
...
...
@@ -382,14 +382,24 @@ var Proxy = {
if
(
result
.
data
.
length
>
0
){
type
==
"
agent
"
?
$
(
"
#quickReplyBox
"
).
html
(
""
)
:
$
(
"
#ccaQuickReplyBox
"
).
html
(
""
)
;
$
.
each
(
sortByKey
(
result
.
data
,
'
score
'
),
function
(
i
,
n
){
var
li
=
'
<li class="ukefu-agentservice-list" onclick="chooseAnswer(
\'
'
+
result
.
data
[
i
].
reply_plain_text
+
'
\'
)">
\n
'
+
'
<div class="nowrap" title="
'
+
result
.
data
[
i
].
post
+
'
">问题:
'
+
result
.
data
[
i
].
post
+
'
</div>
\n
'
+
'
<div style="color: #333">
\n
'
+
'
<p class="nowrap" title="
'
+
result
.
data
[
i
].
reply_plain_text
+
'
" style="float: left ">答案:
'
+
result
.
data
[
i
].
reply_plain_text
+
'
</p>
\n
'
+
'
<button style="float: right" class="layui-btn layui-btn-mini" onclick="chooseAnswer(
\'
'
+
result
.
data
[
i
].
reply_plain_text
+
'
\'
)">选择</button>
\n
'
+
'
</div>
\n
'
+
'
</li>
'
type
==
"
agent
"
?
$
(
"
#quickReplyBox
"
).
append
(
li
)
:
$
(
"
#ccaQuickReplyBox
"
).
append
(
li
)
;
var
answerList
=
result
.
data
[
i
].
replies
;
var
answer
;
for
(
var
i
=
0
;
i
<
answerList
.
length
;
i
++
)
{
if
(
answerList
[
i
].
rtype
==
'
plain
'
&&
answerList
[
i
].
enabled
==
true
)
{
answer
=
answerList
[
i
]
break
;
}
}
if
(
answer
)
{
var
li
=
'
<li class="ukefu-agentservice-list" onclick="chooseAnswer(
\'
'
+
answer
.
content
+
'
\'
)">
\n
'
+
'
<div class="nowrap" title="
'
+
result
.
data
[
i
].
post
+
'
">问题:
'
+
result
.
data
[
i
].
post
+
'
</div>
\n
'
+
'
<div style="color: #333">
\n
'
+
'
<p class="nowrap" title="
'
+
answer
.
content
+
'
" style="float: left ">答案:
'
+
answer
.
content
+
'
</p>
\n
'
+
'
<button style="float: right" class="layui-btn layui-btn-mini" onclick="chooseAnswer(
\'
'
+
answer
.
content
+
'
\'
)">选择</button>
\n
'
+
'
</div>
\n
'
+
'
</li>
'
type
==
"
agent
"
?
$
(
"
#quickReplyBox
"
).
append
(
li
)
:
$
(
"
#ccaQuickReplyBox
"
).
append
(
li
);
}
if
(
i
>
4
){
return
false
;
}
...
...
contact-center/app/src/main/resources/templates/apps/agent/mainagentuser.html
浏览文件 @
7fceeab6
...
...
@@ -90,11 +90,11 @@ word-break: break-all;"><#if curagentuser??>${curagentuser.username!''}<#if cura
});
});
});
KindEditor
.
lang
({
evaluation
:
'
满意度评价
'
});
KindEditor
.
ready
(
function
(
K
)
{
editor
=
K
.
create
(
'
#message
'
,
{
height
:
"
160px
"
,
...
...
@@ -184,18 +184,29 @@ word-break: break-all;"><#if curagentuser??>${curagentuser.username!''}<#if cura
textMessage
:
editor
.
html
()
}
}).
then
(
function
(
result
){
console
.
log
(
result
)
if
(
result
.
rc
===
0
){
if
(
result
.
data
.
length
>
0
){
$
(
"
#quickReplyAgentBox
"
).
html
(
""
);
$
.
each
(
sortByKey
(
result
.
data
,
'
score
'
),
function
(
i
,
n
){
var
li
=
'
<li class="ukefu-agentservice-list" style="font-size: 14px;line-height:22px" onclick="chooseAnswer(
\'
'
+
result
.
data
[
i
].
reply_plain_text
+
'
\'
)">
\n
'
+
'
<div class="nowrap" title="
'
+
result
.
data
[
i
].
post
+
'
">问题:
'
+
result
.
data
[
i
].
post
+
'
</div>
\n
'
+
'
<div style="color: #333">
\n
'
+
'
<p title="
'
+
result
.
data
[
i
].
reply_plain_text
+
'
" class="nowrap" style="float: left ">答案:
'
+
result
.
data
[
i
].
reply_plain_text
+
'
</p>
\n
'
+
'
<button style="float: right" class="layui-btn layui-btn-mini" onclick="chooseAnswer(
\'
'
+
result
.
data
[
i
].
reply_plain_text
+
'
\'
)">选择</button>
\n
'
+
'
</div>
\n
'
+
'
</li>
'
$
(
"
#quickReplyAgentBox
"
).
append
(
li
);
var
answerList
=
result
.
data
[
i
].
replies
;
var
answer
;
for
(
var
i
=
0
;
i
<
answerList
.
length
;
i
++
)
{
if
(
answerList
[
i
].
rtype
==
'
plain
'
&&
answerList
[
i
].
enabled
==
true
)
{
answer
=
answerList
[
i
]
break
;
}
}
if
(
answer
){
var
li
=
'
<li class="ukefu-agentservice-list" onclick="chooseAnswer(
\'
'
+
answer
.
content
+
'
\'
)">
\n
'
+
'
<div class="nowrap" title="
'
+
result
.
data
[
i
].
post
+
'
">问题:
'
+
result
.
data
[
i
].
post
+
'
</div>
\n
'
+
'
<div style="color: #333">
\n
'
+
'
<p class="nowrap" title="
'
+
answer
.
content
+
'
" style="float: left ">答案:
'
+
answer
.
content
+
'
</p>
\n
'
+
'
<button style="float: right" class="layui-btn layui-btn-mini" onclick="chooseAnswer(
\'
'
+
answer
.
content
+
'
\'
)">选择</button>
\n
'
+
'
</div>
\n
'
+
'
</li>
'
$
(
"
#quickReplyAgentBox
"
).
append
(
li
);
}
if
(
i
>
4
){
return
false
;
}
...
...
@@ -628,14 +639,24 @@ word-break: break-all;"><#if curagentuser??>${curagentuser.username!''}<#if cura
if
(
result
.
data
.
length
>
0
){
$
(
"
#quickReplyBox
"
).
html
(
""
);
$
.
each
(
sortByKey
(
result
.
data
,
'
score
'
),
function
(
i
,
n
){
var
li
=
'
<li class="ukefu-agentservice-list" onclick="chooseAnswer(
\'
'
+
result
.
data
[
i
].
reply_plain_text
+
'
\'
)">
\n
'
+
'
<div class="nowrap" title="
'
+
result
.
data
[
i
].
post
+
'
">问题:
'
+
result
.
data
[
i
].
post
+
'
</div>
\n
'
+
'
<div style="color: #333">
\n
'
+
'
<p class="nowrap" title="
'
+
result
.
data
[
i
].
reply_plain_text
+
'
" style="float: left ">答案:
'
+
result
.
data
[
i
].
reply_plain_text
+
'
</p>
\n
'
+
'
<button style="float: right" class="layui-btn layui-btn-mini" onclick="chooseAnswer(
\'
'
+
result
.
data
[
i
].
reply_plain_text
+
'
\'
)">选择</button>
\n
'
+
'
</div>
\n
'
+
'
</li>
'
$
(
"
#quickReplyBox
"
).
append
(
li
);
var
answerList
=
result
.
data
[
i
].
replies
;
var
answer
;
for
(
var
i
=
0
;
i
<
answerList
.
length
;
i
++
)
{
if
(
answerList
[
i
].
rtype
==
'
plain
'
&&
answerList
[
i
].
enabled
==
true
)
{
answer
=
answerList
[
i
]
break
;
}
}
if
(
answer
)
{
var
li
=
'
<li class="ukefu-agentservice-list" onclick="chooseAnswer(
\'
'
+
answer
.
content
+
'
\'
)">
\n
'
+
'
<div class="nowrap" title="
'
+
result
.
data
[
i
].
post
+
'
">问题:
'
+
result
.
data
[
i
].
post
+
'
</div>
\n
'
+
'
<div style="color: #333">
\n
'
+
'
<p class="nowrap" title="
'
+
answer
.
content
+
'
" style="float: left ">答案:
'
+
answer
.
content
+
'
</p>
\n
'
+
'
<button style="float: right" class="layui-btn layui-btn-mini" onclick="chooseAnswer(
\'
'
+
answer
.
content
+
'
\'
)">选择</button>
\n
'
+
'
</div>
\n
'
+
'
</li>
'
$
(
"
#quickReplyBox
"
).
append
(
li
);
}
if
(
i
>
4
){
return
false
;
}
...
...
contact-center/app/src/main/resources/templates/apps/cca/mainagentuser.html
浏览文件 @
7fceeab6
...
...
@@ -172,15 +172,25 @@ word-break: break-all;"><#if curagentuser??>${curagentuser.username!''}<#if cura
if
(
result
.
rc
===
0
){
if
(
result
.
data
.
length
>
0
){
$
(
"
#ccaQuickReplyAgentBox
"
).
html
(
""
);
$
.
each
(
sortByKey
(
result
.
data
,
'
score
'
),
function
(
i
,
n
){
var
li
=
'
<li class="ukefu-agentservice-list" style="font-size: 14px;line-height:22px" onclick="chooseAnswer(
\'
'
+
result
.
data
[
i
].
reply_plain_text
+
'
\'
)">
\n
'
+
'
<div class="nowrap" title="
'
+
result
.
data
[
i
].
post
+
'
">问题:
'
+
result
.
data
[
i
].
post
+
'
</div>
\n
'
+
'
<div style="color: #333">
\n
'
+
'
<p title="
'
+
result
.
data
[
i
].
reply_plain_text
+
'
" class="nowrap" style="float: left ">答案:
'
+
result
.
data
[
i
].
reply_plain_text
+
'
</p>
\n
'
+
'
<button style="float: right" class="layui-btn layui-btn-mini" onclick="chooseAnswer(
\'
'
+
result
.
data
[
i
].
reply_plain_text
+
'
\'
)">选择</button>
\n
'
+
'
</div>
\n
'
+
'
</li>
'
$
(
"
#ccaQuickReplyAgentBox
"
).
append
(
li
);
$
.
each
(
sortByKey
(
result
.
data
,
'
score
'
),
function
(
i
,
n
){
var
answerList
=
result
.
data
[
i
].
replies
;
var
answer
;
for
(
var
i
=
0
;
i
<
answerList
.
length
;
i
++
)
{
if
(
answerList
[
i
].
rtype
==
'
plain
'
&&
answerList
[
i
].
enabled
==
true
)
{
answer
=
answerList
[
i
]
break
;
}
}
if
(
answer
)
{
var
li
=
'
<li class="ukefu-agentservice-list" onclick="chooseAnswer(
\'
'
+
answer
.
content
+
'
\'
)">
\n
'
+
'
<div class="nowrap" title="
'
+
result
.
data
[
i
].
post
+
'
">问题:
'
+
result
.
data
[
i
].
post
+
'
</div>
\n
'
+
'
<div style="color: #333">
\n
'
+
'
<p class="nowrap" title="
'
+
answer
.
content
+
'
" style="float: left ">答案:
'
+
answer
.
content
+
'
</p>
\n
'
+
'
<button style="float: right" class="layui-btn layui-btn-mini" onclick="chooseAnswer(
\'
'
+
answer
.
content
+
'
\'
)">选择</button>
\n
'
+
'
</div>
\n
'
+
'
</li>
'
$
(
"
#ccaQuickReplyAgentBox
"
).
append
(
li
);
}
if
(
i
>
4
){
return
false
;
}
...
...
@@ -613,14 +623,24 @@ word-break: break-all;"><#if curagentuser??>${curagentuser.username!''}<#if cura
if
(
result
.
data
.
length
>
0
){
$
(
"
#ccaQuickReplyBox
"
).
html
(
""
);
$
.
each
(
sortByKey
(
result
.
data
,
'
score
'
),
function
(
i
,
n
){
var
li
=
'
<li class="ukefu-agentservice-list" onclick="chooseAnswer(
\'
'
+
result
.
data
[
i
].
reply_plain_text
+
'
\'
)">
\n
'
+
'
<div class="nowrap" title="
'
+
result
.
data
[
i
].
post
+
'
">问题:
'
+
result
.
data
[
i
].
post
+
'
</div>
\n
'
+
'
<div style="color: #333">
\n
'
+
'
<p class="nowrap" title="
'
+
result
.
data
[
i
].
reply_plain_text
+
'
" style="float: left ">答案:
'
+
result
.
data
[
i
].
reply_plain_text
+
'
</p>
\n
'
+
'
<button style="float: right" class="layui-btn layui-btn-mini" onclick="chooseAnswer(
\'
'
+
result
.
data
[
i
].
reply_plain_text
+
'
\'
)">选择</button>
\n
'
+
'
</div>
\n
'
+
'
</li>
'
$
(
"
#ccaQuickReplyBox
"
).
append
(
li
);
var
answerList
=
result
.
data
[
i
].
replies
;
var
answer
;
for
(
var
i
=
0
;
i
<
answerList
.
length
;
i
++
)
{
if
(
answerList
[
i
].
rtype
==
'
plain
'
&&
answerList
[
i
].
enabled
==
true
)
{
answer
=
answerList
[
i
]
break
;
}
}
if
(
answer
)
{
var
li
=
'
<li class="ukefu-agentservice-list" onclick="chooseAnswer(
\'
'
+
answer
.
content
+
'
\'
)">
\n
'
+
'
<div class="nowrap" title="
'
+
result
.
data
[
i
].
post
+
'
">问题:
'
+
result
.
data
[
i
].
post
+
'
</div>
\n
'
+
'
<div style="color: #333">
\n
'
+
'
<p class="nowrap" title="
'
+
answer
.
content
+
'
" style="float: left ">答案:
'
+
answer
.
content
+
'
</p>
\n
'
+
'
<button style="float: right" class="layui-btn layui-btn-mini" onclick="chooseAnswer(
\'
'
+
answer
.
content
+
'
\'
)">选择</button>
\n
'
+
'
</div>
\n
'
+
'
</li>
'
$
(
"
#ccaQuickReplyBox
"
).
append
(
li
);
}
if
(
i
>
4
){
return
false
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录