1 Star 0 Fork 138

mtfei / gofly客服-在线客服即时通讯聊天kefu-客服IM在线聊天系统

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
Apache-2.0

go-fly

基于Golang语言和MySQL实现的WEB在线客服系统

主要技术栈 gin + jwt-go + websocket + go.uuid + gorm + cobra

更新日志

V0.4.1

访客端咨询按钮的样式修改,滚动区域修改

访客端浏览器提醒自动消失

客服端可以编辑自动回复内容了

命令行参数中新增了关闭服务的功能如:./go-fly stop

V0.3.9

利用go1.16特性进行内嵌资源 , 把模板和js内嵌入二进制文件

增加安装界面,访问[域名]/install 进入安装界面,填写数据库信息,会自动写入配置并且导入数据库

V0.3.8

访客端输入框以及图标icon按钮修改

客服端界面icon修改

修复后端发消息空指针错误导致的进程退出

后端代码增加了允许跨域的http头,所以可以把nginx中的跨域相关http头可以去掉

V0.3.7

访客端增加自助服务点击后可以自动回复

访客端手机端咨询按钮移到右侧不遮挡底部

访客端前端修复多个layer冲突问题

后端修改守护进程方式,进程崩溃后可自动重启

后端增加定时清理频限防止内存泄露

后端增加通知频限和访客输入频限防止死锁

编译增加linux-x86_64/linux-i686版本支持

V0.3.6

修复访客端标题闪烁问题

优化访客端头像样式以及小键盘遮挡问题

优化发消息问题

新增访客关键词自动回复功能

客服端增加附件上传功能

客服端增加关键词自动回复功能

V0.3.5

新增分开系统自动断线与客服关闭连接

修复没有设置欢迎时tip显示错误问题

修复客服端发送消息错误提示不显示问题

修复一些界面问题

V0.3.4

修复发送死锁问题

V0.3.3

1.访客/客服端聊天界面样式修改

2.访客端展示客服头像信息

3.访客到来自动打开,以及参数控制

4.访客/客服端聊天信息默认折叠

5.客服端新消息提醒标识

6.客服端访客列表展示访客正在输入信息

V0.3.2

1.修改访客界面样式,更加简洁扁平

2.修改自动欢迎界面样式增加聊天框效果

3.修改数据库时间字段类型,兼容mysql5.7

4.修复数据库执行sql获取错误信息

V0.3.1

1.修改在线咨询浮框样式

2.修改数据库时间字段类型,兼容mysql5.5+

V0.2.9

1.访客开多个窗口时 , 单点登录关闭旧ws连接

2.访客切换窗口时可以自动重连

3.访客到来时 , http接口和ws接口同时发送给客服上线信息

4.客服后台定时拉取在线访客接口

5.客服后台切换tab拉取在线访客

项目预览

Image text

Image text

Image text

Image text

Image text

安装使用

1. 先安装和运行mysql >=5.5版本 , 创建gofly数据库.

create database gofly charset utf8;

在config目录mysql.json中配置数据库

{
	"Server":"127.0.0.1",
	"Port":"3306",
	"Database":"gofly",
	"Username":"go-fly",
	"Password":"go-fly"
}

2. 二进制文件运行

  1. 下载地址

    github: https://github.com/taoshihan1991/go-fly/releases/

    gitee(国内): https://gitee.com/taoshihan/go-fly/releases

  2. 文件解压缩

    windows系统下,在cmd命令行,进入项目解压后目录; linux系统下创建目录执行如下

      linux服务器:
      mkdir go-fly
      cd go-fly
      wget xxxxxxxxxxx.zip
      unzip xxxx.zip
      chmod 0777 -R ./

    导入数据库( 注意:会删除表并且清空数据 )

      windows: go-fly.exe install
      
      linux: ./go-fly install

    运行项目

      linux:   ./go-fly server [可选 -p 8082 -d]
     
      windows: go-fly.exe server [可选 -p 8082]
  3. 参数说明

    -p 指定端口

    -d linux下是否以daemon守护进程运行

    -h 查看帮助

3. 源码运行

  1. 基于go module使用

    go env -w GO111MODULE=on

    go env -w GOPROXY=https://goproxy.cn,direct

    在任意目录 git clone https://github.com/taoshihan1991/go-fly.git

    进入go-fly 目录

  2. 源码运行 go run go-fly.go server

  3. 源码打包 go build go-fly.go 会生成go-fly可以执行文件

  4. 导入数据库(会删除表清空数据) ./go-fly install

  5. 二进制文件运行

    linux: ./go-fly server [可选 -p 8082 -d]

    windows: go-fly.exe server [可选 -p 8082 -d]

  6. 关闭程序 ./go-fly stop

    linux下使用ps命令结合kill命令杀掉进程

    ps -ef|grep go-fly 看到父子进程id

    kill 进程父进程id ; kill 进程子进程id

4. 网页使用

1.服务端安装成功后可把域名换成自己的域名或IP

2.默认访问本地http://127.0.0.1:8081

    //下面js路径和GOFLY_URL 都要改成自己的
    <script src="https://gofly.sopans.com/assets/js/gofly-front.js"></script>
    <script>
        GOFLY.init({
            GOFLY_URL:"https://gofly.sopans.com",
            GOFLY_KEFU_ID: "kefu2",
            GOFLY_BTN_TEXT: "客服在线 欢迎咨询",
            GOFLY_LANG:"cn"
        })
    </script>

nginx部署

访问:https://gofly.sopans.com

1.参考支持https的部署示例 , 注意反向代理的端口号和证书地址 , 不使用https也可以访问 , 只是不会有浏览器通知弹窗

2.尽量按照下面的配置处理, 配置独立域名或者二级域名, 不建议在主域名加端口访问, 不建议主域名加目录访问

3.如果遇到域名跨域错误问题, 检查下面配置中add_header Access-Control-Allow-Origin这俩header头是否添加. 代码里已经解决跨域 , nginx里不要加跨域头,否则会冲突报错

server {
       listen 443 ssl http2;
        ssl on;
        ssl_certificate   conf.d/cert/4263285_gofly.sopans.com.pem;
        ssl_certificate_key  conf.d/cert/4263285_gofly.sopans.com.key;
        ssl_session_timeout 5m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        #listen          80; 
        server_name  gofly.sopans.com;
        access_log  /var/log/nginx/gofly.sopans.com.access.log  main;
        location /static {
                root /var/www/html/go-fly;//自己的部署路径,静态文件直接nginx响应
        }
        location / {
                proxy_pass http://127.0.0.1:8081;
                    proxy_http_version 1.1;
                    proxy_set_header X-Real-IP $remote_addr;
                    proxy_set_header Upgrade $http_upgrade;
                    proxy_set_header Connection "upgrade";
                    proxy_set_header Origin "";
        }
}
server{
       listen 80;
        server_name  gofly.sopans.com;
        access_log  /var/log/nginx/gofly.sopans.com.access.log  main;
        location /static {
                root /var/www/html/go-fly;//自己的部署路径,静态文件直接nginx响应
        }        
        location / {
                proxy_pass http://127.0.0.1:8081;
                    proxy_http_version 1.1;
                    proxy_set_header X-Real-IP $remote_addr;
                    proxy_set_header Upgrade $http_upgrade;
                    proxy_set_header Connection "upgrade";
                    proxy_set_header Origin "";
        }
}

宝塔部署

原文地址:https://www.zqcnc.cn/post/99.html

宝塔环境

  1. 创建一个静态站点,地址为想要访问的域名
  2. 为该站点配置证书
  3. 设置反向代理
  4. 修改反代配置 按照图示,将对应代码加入到配置文件中
#PROXY-START/
location /
{
    proxy_pass http://127.0.0.1:8081;
	proxy_http_version 1.1;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header REMOTE-HOST $remote_addr;
    
	proxy_set_header Upgrade $http_upgrade;
	proxy_set_header Connection "upgrade";
	proxy_set_header Origin "";
    
    add_header X-Cache $upstream_cache_status;
    
    #Set Nginx Cache
    
    	add_header Cache-Control no-cache;
    expires 12h;
}

#PROXY-END/

感谢赞助

2021年05月18日 *** 300元

2021年05月08日 **利 1500元(多商户)

2021年04月25日 **P7 88.88元

2021年04月19日 **指 1400元(多商户)

2021年04月01日 **科技 66.66元

2021年03月15日 **无畏 8.88元

2021年03月15日 **彬 77元

2021年03月10日 ABC 100元

2021年02月20日 广西***社 1000元

2021年02月19日 **辉 1000元

2021年02月04日 **宏 10.24元

2021年02月03日 pony 188元

2021年01月22日 **~ 1000元(多商户)

2021年01月20日 **生 8.88元

2021年01月17日 **白 8.88元

2021年01月13日 **~ 500元(多商户)

2020年12月31日 **强 8.88元

2020年12月24日 **松 8.88元

2020年12月23日 **渊 10元

2020年12月16日 **彬 8.8元

2020年11月30日 **宇 88元

打赏作者

支付宝 微信

版权声明

当前项目是完整功能代码 , 但是仍然仅支持个人演示测试 , 不包含线上使用 . 赞赏并联系作者后可得到作者授权 , 并且可以获取完整专属技术支持,包括安装/部署/bug修改以及后期功能升级 . 使用本软件时,请遵守当地法律法规,任何违法用途一切后果请自行承担.

Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] 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.

简介

golang客服在线客服聊天即时通讯系统 ,网页客服 ,网页聊天IM即时通讯,在线WEB聊天,WEBIM访客-客服即时通讯在线聊天 , 下载发行版压缩包,依赖安装很少 , 可以独立二进制部署 , js代码直接引入使用 /open source live customer chat by golang 展开 收起
Go
Apache-2.0
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Go
1
https://gitee.com/578796009/go-fly.git
git@gitee.com:578796009/go-fly.git
578796009
go-fly
gofly客服-在线客服即时通讯聊天kefu-客服IM在线聊天系统
master

搜索帮助