网站首页 > 精选教程 正文
为丰富微信小程序的服务能力,提高服务质量,微信为小程序提供客服消息能力,以便小程序用户可以方便快捷地与小程序服务提供方进行沟通。
那开发者的问题就来啦,如何在小程序里面搭建客服系统?别着急,让移步到微小程序“种草君”七嬷嬷带你飞。
第一:环境准备
1. 搭建 HTTPS 和 WSS 环境
由于微信规定,白名单域名不能携带端口信息,我们建议,开发者使用 NginX 进行代理转发,使其支持微信白名单域名的要求。
2. 定义前后端通信 JSON 协议
其中,token 是用来验证消息来源合法性的,fd 为当前 socket 连接资源 ID,from 为对方 socket 连接资源 ID,cmd 用于定义当前操作。
第二:聊天系统搭建
1. 服务端
采用 TP5 和 swoole 扩展,并新建了一个 socket 模块,用于处理 socket 请求。
目录结构如下:
分为服务端 server.php 和客户端 client.php,服务端以 cli 形式运行。具体代码请参考 swoole 源码包中的 SSL 样例。
运行命令如下(先切换到服务器程序代码的public目录 ):
php index.php socket/server/index
客户端其实是一个 web 端的 websocket,源码包中同样有提供样例,可供大家参考。
2. 小程序端
我们需要简单封装微信提供的 socket 接口,用于处理连接成功、发送消息、连接失败自动重连等操作。
目录结构如下:
发送方法封装参考:
3. 提升 cli 程序稳定性
编写 shell 脚本如下:
count=`ps -fe |grep "socket/server" | grep -v "grep" | grep "master" | wc -l`
echo $count
if [ $count -lt 1 ]; then
ps -eaf |grep "socket/server" | grep -v "grep"| awk '{print $2}'|xargs kill -9
sleep 2
ulimit -c unlimited
/opt/app/php/bin/php /opt/web/think/public/index.php socket/server/index
echo "restart";
echo $(date +%Y-%m-%d_%H:%M:%S) >/opt/script/log/restart.log
fi
启用 crontab:
crontab -e
加入一行:
*/1 * * * * /opt/script/check_server.sh #每隔一分钟检测下脚本
crontab -l
第三:注意事项
首先,如果使用 TP5 的帮助函数模块出现下面的错误,是数据库连接过期导致。建议大家将连接过期时间设置得更长,但即使这样,总有过期的时候。所以我们推荐使用 MongoDB。
其次,微信小程序真机环境不予许指定端口,那上面的服务器配置就没有什么用,解决办法是:停用 Apache 的 SSL 模块,改用 NginX 作为反向代理。
另外,如果要用 NginX 作为反向代理,会遇到会话过期的问题。我们有两个解决办法:
第一,设置代理超时时间为一个很长的时间,另一个是客户端做个心跳检测(即定时向服务器发送一条信息)。
这两种办法都会增加服务器的负担,大家可以根据自己情况进行选择,我们建议采用后一种方法。
好啦,以上就是种草君要安利的客服系统开发啦,更多关于微信小程序的好玩有趣内容,请继续关注移步到微。七嬷嬷等你开撩!
猜你喜欢
- 2024-10-16 web前端程序员,面试必备9种跨域产生原因和解决方案,附资料
- 2024-10-16 使用 Kubernetes Agent Server 实现 GitOps
- 2024-10-16 详解 WebSocket 原理,附完整的聊天室实战 Demo
- 2024-10-16 小程序开发教程的汇集 小程序实战开发教程
- 2024-10-16 Workerman的使用 workerman event
- 2024-10-16 如何快速搭建高可用的IM系统?只需要2小时!我前后看了三遍。
- 2024-10-16 Ubuntu 下 Janus Server 搭建笔记
- 2024-10-16 解锁远程办公自由:FRP快速实现本地服务远程调用
- 2024-10-16 vue3+vite+ts+pinia 后台管理项目总结
- 2024-10-16 首创!最全面全功能Midjourney Proxy代理SDK正式发布!
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)