diff --git a/contact-center/app/src/main/java/com/chatopera/cc/util/SystemEnvHelper.java b/contact-center/app/src/main/java/com/chatopera/cc/util/SystemEnvHelper.java index c3b44881d4ceb84e32a9d5189ea9d77b5ec6b47d..5b6f091e0dc33a04c613f86efc1572c3728d3833 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/util/SystemEnvHelper.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/util/SystemEnvHelper.java @@ -68,7 +68,7 @@ public class SystemEnvHelper { * @return */ public static String parseFromApplicationProps(final String property) { - // 将 propert转化为环境变量 + // 将 property 转化为环境变量 String P = StringUtils.upperCase(property); P = StringUtils.replaceChars(P, "-", "_"); @@ -82,14 +82,26 @@ public class SystemEnvHelper { } /** - * 记载application.properties + * Get properties filename + * @return + */ + private static String getPropsFileName() { + String profile = getenv("SPRING_PROFILES_ACTIVE", ""); + if (StringUtils.isNotBlank(profile)) { + return "application-" + profile + ".properties"; + } + return "application.properties"; + } + + /** + * 加载 application.properties * * @return */ private static Properties getProps() { if (props == null) { try (InputStream input = SystemEnvHelper.class.getClassLoader().getResourceAsStream( - "application.properties")) { + getPropsFileName())) { // load a properties file props = new Properties(); props.load(input); diff --git a/contact-center/app/src/main/resources/templates/apps/im/chatbot/index.pug b/contact-center/app/src/main/resources/templates/apps/im/chatbot/index.pug index 167395acaa97dbf07a86ea5f4a9895a77c933b09..6804dd9293882d8d70c2ea1395b876ab818cb78d 100644 --- a/contact-center/app/src/main/resources/templates/apps/im/chatbot/index.pug +++ b/contact-center/app/src/main/resources/templates/apps/im/chatbot/index.pug @@ -561,11 +561,11 @@ html if (allowClick) { allowClick = false; socket.emit('message', { - appid: "${appid!''}", - userid: "${userid!''}", + appid: "#{appid}", + userid: "#{userid}", type: "message", - session: "${sessionid!''}", - orgi: "${orgi!''}", + session: "#{sessionid}", + orgi: "#{orgi}", message: key }); } @@ -587,11 +587,11 @@ html var regClick = function (key) { btn.click(function () { socket.emit('message', { - appid: "${appid!''}", - userid: "${userid!''}", + appid: "#{appid}", + userid: "#{userid}", type: "message", - session: "${sessionid!''}", - orgi: "${orgi!''}", + session: "#{sessionid}", + orgi: "#{orgi}", message: key }); }); @@ -629,7 +629,7 @@ html content = createCard(message, expmsg); } - var box = $('
'); + var box = $('
'); box.find('.chat-content').append(content); diff --git a/contact-center/app/src/main/resources/templates/apps/im/chatbot/mobile.pug b/contact-center/app/src/main/resources/templates/apps/im/chatbot/mobile.pug index 454b0711506820c733748f384929b34934284150..3c0830d4417cdac5c727cdfb12494aa87b6e1baa 100644 --- a/contact-center/app/src/main/resources/templates/apps/im/chatbot/mobile.pug +++ b/contact-center/app/src/main/resources/templates/apps/im/chatbot/mobile.pug @@ -360,7 +360,7 @@ html content = createCard(message, expmsg); } - var box = $('
'); + var box = $('
'); box.find('.chat-content').append(content); @@ -405,11 +405,11 @@ html var regClick = function (key) { btn.click(function () { socket.emit('message', { - appid: "${appid!''}", - userid: "${userid!''}", + appid: "#{appid}", + userid: "#{userid}", type: "message", - session: "${sessionid!''}", - orgi: "${orgi!''}", + session: "#{sessionid}", + orgi: "#{orgi}", message: key }); }); diff --git a/public/plugins/README.md b/public/plugins/README.md index 38dc30d4b18f03dcf7c68d649477b136b07b9c3a..f5f0bf126126005c1543a6797d06631cdfcec052 100644 --- a/public/plugins/README.md +++ b/public/plugins/README.md @@ -1,8 +1,48 @@ # 春松客服插件 -此目录包含春松客服的开源的插件,每个插件授权参考各子目录。 +本文件夹包含春松客服的开源的插件,每个插件授权参考各子目录。 + +## 规范 + +目前,春松客服插件安装是在命令行终端内完成:使用 Bash Shell 命令,链接插件源码到春松客服源码,然后编译打包 WAR 后得到插件功能。 + +> 提示:Windows 上使用 Git Bash 获得 Bash Shell, [https://git-scm.com/downloads](https://git-scm.com/downloads)。 + +不同的插件均遵循以下的规范。 + +### 插件安装 + +执行命令: + +``` +cd plugins/PLUGIN +./scripts/install.sh +``` + +其中,`PLUGIN` 是插件的名字。 + +### 卸载插件 + +执行命令: + +``` +cd plugins/PLUGIN +./scripts/uninstall.sh +``` + +## 应用打包 +安装插件后,插件开发过程同[春松客服开发环境搭建](https://docs.chatopera.com/products/cskefu/osc/engineering.html)。 + +如果需要部署到系统测试、生产环境等,首先打包为 WAR 应用,方式如下: + +``` +cd contact-center +./admin/package.sh +``` + +春松客服的发布形式为 Docker 镜像,如果在更改源码后,也可以使用春松客服的 Docker 镜像构建脚本发布,参考[构建脚本](https://github.com/chatopera/cskefu/blob/osc/contact-center/admin/build.sh)。 ## 机器人客服 - [源码和安装说明](./chatbot) -- [使用介绍](https://docs.chatopera.com/products/cskefu/work-chatbot.html) +- [使用介绍](https://docs.chatopera.com/products/cskefu/work-chatbot/index.html) diff --git a/public/plugins/chatbot/classes/ChatbotEventSubscription.java b/public/plugins/chatbot/classes/ChatbotEventSubscription.java index 1952c297047715af8898e9713fcd2fb2a816ec68..e405f087fdd18a6a8f4f7c95cfe75cf9053a6741 100644 --- a/public/plugins/chatbot/classes/ChatbotEventSubscription.java +++ b/public/plugins/chatbot/classes/ChatbotEventSubscription.java @@ -121,7 +121,7 @@ public class ChatbotEventSubscription { JSONArray respParams = new JSONArray(); if (!StringUtils.equals(MainContext.ChannelType.WEBIM.toString(), c.getChannel())) { if (data.getBoolean("logic_is_fallback")) { - if (StringUtils.equals(Constants.CHATBOT_CHATBOT_FIRST, c.getWorkmode())) { + if (!StringUtils.equals(Constants.CHATBOT_HUMAN_FIRST, c.getWorkmode())) { JSONArray faqReplies = data.getJSONArray("faq"); JSONObject message = new JSONObject(); JSONObject attachment = new JSONObject(); @@ -141,6 +141,10 @@ public class ChatbotEventSubscription { buttons.put(button); } } else { + if (StringUtils.equals(c.getWorkmode(), Constants.CHATBOT_CHATBOT_ONLY)) { + return; + } + payload.put("text", data.getString("string")); JSONObject button = new JSONObject(); button.put("type", "postback"); @@ -154,6 +158,10 @@ public class ChatbotEventSubscription { resp.setExpmsg(message.toString()); } } else if (StringUtils.equals(Constants.PROVIDER_FAQ, data.getJSONObject("service").get("provider").toString())) { + if (data.has("params")) { + resp.setMessage(data.getJSONArray("params").getJSONObject(0).getString("content")); + } + respHelp = creatChatMessage(request, c); JSONObject message = new JSONObject(); JSONObject attachment = new JSONObject(); @@ -175,6 +183,7 @@ public class ChatbotEventSubscription { payload.put("buttons", buttons); attachment.put("payload", payload); message.put("attachment", attachment); + respHelp.setExpmsg(message.toString()); } else if (data.has("params")) { Object obj = data.get("params");