如何在现有的springboot项目中加入一个网页版在线客服功能?

在现有的springboot项目中加入一个网页版在线客服功能

这个你要自己做,可以用 websocket
外加一些ui,说白了就是一个可以滚动的div,下面是一个textarea

客服是聊天功能

是要接入客服聊天系统吗

自己做不划算,买三方吧,嵌入js就行。自己做就用websocket

  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7583235
  • 这篇博客也不错, 你可以看下springboot篇】二十一. 基于springboot电商项目 四 商品同步索引库和搜索列表实现
  • 除此之外, 这篇博客: 基于springboot,自定义线程池提高定时任务执行效率中的 基于springboot,自定义线程池提高定时任务执行效率 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
    • 在主类上开启@EnableScheduling和@EnableAsync以执行定时任务
    /**
     * mallAdminApplication
     *
     * @author lyc
     **/
    @EnableDubboConfiguration
    @SpringBootApplication(exclude = {SpringBootConfiguration.class, DruidDataSourceAutoConfigure.class, DataSourceAutoConfiguration.class})
    @EnableSwaggerAutoConfig
    @EnableScheduling
    public class MallAdminApplication {
        public static void main(String[] args) {
            SpringApplication.run(MallAdminApplication.class, args);
        }
    } 
    
    • 配置线程池
    /**
     * 线程池配置
     *
     * @author lyc
     **/
    @Configuration
    @Slf4j
    public class ThreadPoolConfig {
    
        @Bean
        public Executor asyncServiceExecutor() {
            log.info("start asyncServiceExecutor");
            ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
            //配置核心线程数
            executor.setCorePoolSize(5);
            //配置最大线程数
            executor.setMaxPoolSize(5);
            //配置队列大小
            executor.setQueueCapacity(99999);
            //配置线程池中的线程的名称前缀
            executor.setThreadNamePrefix("async-service-");
    
            // rejection-policy:当pool已经达到max size的时候,如何处理新任务
            // CALLER_RUNS:不在新线程中执行任务,而是有调用者所在的线程来执行
            executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
            //执行初始化
            executor.initialize();
            return executor;
        }
    } 
    
    • 以下模拟每隔一秒钟分别向两张表中插入数据,可用于向数据库中快速插入一些随机数据用于测试的需要
    /**
     * 定时任务,用于添加测试数据
     *
     * @author lyc
     **/
    @Component
    @Slf4j
    public class ScheduledTaskConfig {
        @Reference
        private IPmsProductService pmsProductService;
        @Reference
        private IOmsOrderService omsOrderService;
        @Reference
        private IUmsMemberService umsMemberService;
        private Snowflake snowflake = IdUtil.getSnowflake(1L, 1L);
    
        /**
        *使用自定义的线程池执行任务
        **/
        @Autowired
        @Qualifier("asyncServiceExecutor")
        private Executor executor;
    
        @Scheduled(cron = "*/1 * * * * ?")
        @Async("asyncServiceExecutor")
        public void scheduledInsertPmsProduct() {
            for (int i = 0; i < 100; i++) {
                CompletableFuture.runAsync(() -> {
                    String randomUUID = IdUtil.randomUUID();
                    String name = "商品名称" + randomUUID;
                    log.info(">>>>>>>>>>>>>开始插入商品数据: {}", name);
                    pmsProductService.save(new PmsProduct().setName(name)
                            .setDescription("商品描述" + randomUUID)
                            .setProductSn("no" + randomUUID));
                }, executor);
            }
        }
    
        @Scheduled(cron = "*/1 * * * * ?")
        @Async("asyncServiceExecutor")
        public void scheduledInsertUmsMember() {
            for (int i = 0; i < 100; i++) {
                CompletableFuture.runAsync(() -> {
                    String snowflakeStr = snowflake.nextIdStr();
                    String name = "user" + snowflakeStr;
                    String nickname = "昵称" + snowflakeStr;
                    Random random = new Random();
                    log.info(">>>>>>>>>>>>>开始插入用户数据: {}", name);
    
                    umsMemberService.save(new UmsMember()
                            .setNickname(nickname)
                            .setUsername(name)
                            .setPassword(snowflakeStr)
                            .setGender(random.nextInt(3)));
                }, executor);
            }
        }
    
    
    }
    
  • 您还可以看一下 甘智昌老师的基于springboot的统一返回值和异常处理课程中的 创建springboot项目小节, 巩固相关知识点

以下内容部分参考ChatGPT模型:


思路:

  1. 在前端页面中嵌入客服系统的聊天窗口,可使用第三方的在线客服系统,如QQ客服、阿里旺旺等,也可以使用自己公司的客服系统。

  2. 在后端中增加接口,用于处理客服系统的请求,如获取客服人员列表、客户聊天记录等。

  3. 在后端中增加WebSocket服务,用于客服人员与客户之间的实时通讯。

  4. 在后端中增加数据库,用于存储客户和客服人员的聊天记录。

代码示例:

  1. 在前端页面中嵌入QQ客服聊天窗口:
<!-- 引入QQ客服代码 -->
<script type="text/javascript" src="http://wpa.b.qq.com/cgi/wpa.php"></script>
<!-- 在需要显示客服窗口的位置添加以下代码 -->
<a href="http://wpa.qq.com/msgrd?v=3&uin=123456789&site=qq&menu=yes" target="_blank">在线客服</a>
  1. 在后端中增加客服接口:
@RestController
@RequestMapping("/chat")
public class ChatController {
    @Autowired
    private ChatService chatService;

    @GetMapping("/users")
    public List<User> getUserList() {
        return chatService.getUserList();
    }

    @GetMapping("/messages")
    public List<Message> getMessageList(@RequestParam("userId") Long userId) {
        return chatService.getMessageList(userId);
    }

    @PostMapping("/send")
    public void sendMessage(@RequestBody Message message) {
        chatService.sendMessage(message);
    }
}
  1. 在后端中增加WebSocket服务:
@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {
    @Override
    public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
        registry.addHandler(chatWebSocketHandler(), "/chat").setAllowedOrigins("*");
    }

    @Bean
    public WebSocketHandler chatWebSocketHandler() {
        return new ChatWebSocketHandler();
    }
}
  1. 在后端中增加数据库:
CREATE TABLE user (
  id BIGINT PRIMARY KEY,
  name VARCHAR(50),
  avatar VARCHAR(100)
);

CREATE TABLE message (
  id BIGINT PRIMARY KEY,
  sender_id BIGINT,
  receiver_id BIGINT,
  content VARCHAR(1000),
  create_time TIMESTAMP
);

以上代码仅供参考,具体实现需要根据项目需求进行调整。


如果我的建议对您有帮助、请点击采纳、祝您生活愉快