zoukankan      html  css  js  c++  java
  • 程序员做自己的产品 “在线客服系统” 之:种子用户的重要性

    本系列文章详细介绍使用 .net core 和 WPF 开发 升讯威在线客服与营销系统 的过程。本产品已经成熟稳定并投入商用。

    免费使用 & 私有化部署免费下载:https://docs.shengxunwei.com/Post/f7bc8496-14ee-4a53-07b4-08d8e3da6269

    视频实拍:演示升讯威在线客服系统在网络中断,直接禁用网卡,拔掉网线的情况下,也不丢消息,不出异常。
    https://blog.shengxunwei.com/Home/Post/fe432a51-337c-4558-b9e8-347b58cbcd53


    本文开个小差,不谈技术话题,谈一谈在做产品过程中,种子用户的重要性以及如何对待你的种子用户。

    我开发在线客服系统,经历了两个阶段,在我之前的博客中有提及,开始着手做这款产品大约在2015年,坚持了2年之后换了方向,直到2020年,我重新捡起这块工作,做了大的重构,完成了这个产品。

    本文对2020年开始继续这款产品的开发至今,对我有过重大帮助的种子用户进行了记录,并详细说明了我是如何与宝贵的种子用户沟通交流,共同完善产品的。

    在这里我首先感谢下文中提到的 A 、B、C 三个种子用户。
    没有这几个种子用户,产品的完成、完善、稳定可能还会走很多弯路,花费很长时间。
    特别是在这期间,也有过几个用户试用后因为出现故障直接放弃的,相比之下,三个种子用户的包容与耐心更加弥足珍贵。


    种子用户A:

    催生产品的重要用户。

    2020 年我刚捡起这块工作继续开始做没多久,就有朋友寻着我 2015 年发的博客找到了我,询问这款产品的开发情况,我如实相告刚刚开始着手重构,准备彻底完成然后发新版本。A 朋友仔细阅读了解了我之前的博客,经过持续的沟通和深入的了解,在我还没有完成时,就果断预定了产品。

    我在开始在线客服系统的继续开发时,对是不是能够坚持做完,做完善,心里并没有多少底,也没有计划,只是业余只要有空闲,就打开电脑开始做,做多少算多少。

    可以说正是因为有了 A 用户的坚定支持,以及三不五时的“催更”。才让这件事情有了比较严谨的计划性,以及对功能范围的清晰定义。包括当时的一个重要指导思路:先完成核心功能,使之稳定可靠,不重要的外围功能和细节先放一放,留在以后通过热更新的方式逐步完善。

    大约 2020 年 11 月左右,终于完成了第一个版本,简单测试之后上线了。

    没有意外,接下来的一段时间,各种救火……

    1. 问题一:客服网络线路不好,容易掉线
      在最初的设计中,客服端与服务器建立基于 TCP/IP 的长连接,只要网络中断,则认为客服下线或掉线,退出重新登录,当时认为这个逻辑没问题。
      A 用户实际使用时,客服办公室网络到服务器之间的连接很不稳定,断线比较频繁,基本都是闪断,估计持续时间不超过几秒钟,但只要闪断,程序就认为客服下线,走下线流程,对客服的实际使用有比较大的影响。
      网络问题是客观存在的,只能从软件层面去优化适配,我花了大力气实现了断点续传,使得客服在网络闪断时,软件不再退出,数据也不再释放,程序自动恢复连接之后完成数据同步。
      这个过程很不容易,具体的实现方案也几经变更,最终完美解决,我录制了视频演示了这个机制作用的效果。
      https://blog.shengxunwei.com/Home/Post/fe432a51-337c-4558-b9e8-347b58cbcd53

    2. 问题二:不可避免的小 BUG
      毕竟产品初步完成,没有严谨的测试流程,一些小 BUG 不可避免,正是因为有了 A 用户,才使得产品在正式发布之前能够在实际场景下验证,一点一点修复掉这些问题。在使用过程中反馈的意见,用户体验问题,我都特别重视,能优化的都会优化掉。
      做产品和做项目有很大的不同,做项目一般功能完成和 BUG 修复之后,就得验收结款了。做产品时就不是这个流程,对用户的反馈,用户的意见,都会非常重视。特别是种子用户,绝对的尊重和感谢的态度来处理他们的意见。

    种子用户 B:

    产品能够完美支持 Linux + MySQL 平台的重要帮助者。

    虽然服务器端是 .net core 平台,但在产品发布时,我只测试了 Windows 平台,数据库也只支持 SQL Server ,B 用户将其部署在了 CentOS 上,随后热心的联系我,向我反馈了部署在 CentOS 上出现的问题,甚至帮我提出了解决的方案。随后坚定的支持我实现对 MySQL 数据库的支持,并给予了热心的帮助。

    种子用户 C:

    大客户,使产品真正实现了企业级的业务承载能力。

    如果说是 A 用户催生了产品的诞生,达到能够投入使用的水平,那么 C 用户则真正帮助我把产品做到了企业级的水准。

    在 C 用户上线使用时,我信心满满,毕竟已经有一些朋友都在使用我的升讯威在线客服系统了。而现实却与料想的情况完全不一样。 C 用户的同时在线客服数量超过 20 人,最高同时在线访客超过 1000 人,日均聊天消息超过 20000 条。系统第一次面临这样的大考,在很长一段时间里,又是各种救火……

    C 用户在完全投产前,也测试了一段时间,但随着切换过来的客服越来越多,访客越来越多,出现了一些奇怪且严重的故障。导致经常性需要手工重启服务才可解决,而我本机开发环境基本不能重现故障。
    在这种情况下 C 用户与 A 用户一样,给予了极大的包容与耐心,一方面安抚客服,一方面全力协助我排查故障。这其中除了系统自身的问题,还有 APP 集成的问题、与 A 用户一样的网络不稳定问题等等。其中艰难略过不细说,最终使系统能够在高压力高并发环境下稳定运行,前后花了好几个月的时间。

    如果没有 C 用户在这过程中的支持,我的在线客服系统很难有机会在这样真实的环境中得到验证,并解决问题,涅槃重生。

    现在完全可以说,即使再有更多的客服在线,更多的访客,系统也可以从容应对。


    最后安利一下我这个程序员业余肝出来的产品,在线使用和完整下载私有化部署都是免费的。

    私有化版下载地址与版本说明:
    https://docs.shengxunwei.com/Post/f7bc8496-14ee-4a53-07b4-08d8e3da6269/553293a8-dfa1-4282-bc3f-96c6c623fc9a


    支持请点个赞吧~ 谢谢!

  • 相关阅读:
    CentOS 6.5 下源码搭建LAMP环境
    CentOS 6.5 下MySql主从、主主配置
    js基础梳理内存空间
    js基础梳理如何理解作用域和作用域链?
    js基础梳理究竟什么是变量对象,什么是活动对象?
    js基础梳理究竟什么是执行上下文栈(执行栈),执行上下文(可执行代码)?
    python作用域解析
    expect简单自动交互用于密码、命令输入
    使用pyinstaller打包多个py文件为一个EXE文件
    python*args和**kwargs作用和区别
  • 原文地址:https://www.cnblogs.com/sheng_chao/p/15423409.html
Copyright © 2011-2022 走看看