微信客服机器人(踩坑记录、SpringBoot、企业微信)
微信客服机器人(踩坑记录、SpringBoot、企业微信)
转载请注明出处:https://www.jjput.com/archives/wei-xin-ke-fu-ji-qi-ren
总体流程
- 当有新的消息时,微信主动请求微服务接口,通知有新消息。
- 微服务主动向微信拉取消息列表(最多1000条)。
- 对消息列表中的每一个消息向机器人进行提问。
- 机器人返回答案。
- 将答案进行处理后,通过微信接口向微信用户进行发送。
微信功能说明文档(步骤1、2、5)
0、准备工作
在第一步接受微信消息前,需要进入微信客服后台配置。
根据文档3.1-支持Http Get请求验证URL有效性(微信这方面有很多份文档,这点必须吐槽一下,有些过时了按照上面基本不对,基本都不是特别完善),我们需要完成一个Get请求,以用于微信配置时验证url正确性。
注意验证url与下面回调url都应该是相同路径,只是请求方式不同(Get&Post)
接收到Get请求后,还需要正确的解密数据,将解密后的数据返回。
微信解密说明文档
解不出来,可以借助官方解密demo(支持C++、Python、PHP、java、C#、golang、node)
1、回调消息通知
完成准备工作以后,并正确的配置了回调路径后,我们开始接收回调消息通知。
详细查看文档-3.2支持Http Post请求接收业务数据
这里注意一下POST接收的消息体类型是text/xml
不是application/xml
!!更不可能是application/json;charset=UTF-8
!!!
做到这我真的快受不了,必须喷一下,他娘的微信的api文档他自己验证过没有?这就是堂堂一线大厂?对外公开文档如此不严谨。
2、主动获取消息列表
这一步我们才是真正的获取到用户给我们发送到消息。
这里没什么好说的,按照官方文档可以走得通。
最后说明一下cursor
这个参数,第一次可以不带,后续请求务必带上,该字段主要过滤已经接收过的消息,避免重复消费。
当然我们自己还要做些策略,不要全信官方!!
我这里将每次的msgid
做了存储。消费策略是先判断消息时长未超过30分钟->msgid未被记录(redis缓存msgid,30分钟超时)。
5、发送消息
这里直接参照官方文档走即可,并没有什么坑踩。
并且官方支持日常聊天的所有消息格式:
消息格式(msgtype)
msgtype | 说明 |
---|---|
text | 文本 |
image | 图片 |
voice | 语音 |
video | 视频 |
file | 文件 |
location | 地理位置 |
msgmenu | 菜单 |
event event_type=enter_session |
用户进入会话 |
event event_type=msg_send_fail |
消息发送失败 |
机器人(步骤3、4)
机器人这边我不做过多介绍,考虑到每个人选择不同(我自己是用阿里的客服机器人)。
面上看上去只有两个步骤,但根据公司业务需求,背后的逻辑可能会非常多,比如什么情绪判断,主动接入人工,拟人化话说等等。
设计文档
最后我给出自己的部分设计方案,希望大家探讨,有不合理之处欢迎指正。感激不尽!
微信客服机器人(踩坑记录、SpringBoot、企业微信)相关推荐
- 微信vue路由跳转兼容_Vue微信公众号开发踩坑记录
需求 微信授权登录(基于公众号的登录方案) 接入JS-SDK实现图片上传,分享等功能 现状及难点 采用的Vue框架,前后端分离模式(vue工程仅作为客户端),用户通过域名访问的是客户端,但是微信授权中 ...
- Hexo+GitHub 博客部署 个人踩坑记录(一)
Hexo+GitHub 博客部署 个人踩坑记录(一) 前言 博客的作用 编程学习本身是持续性的学习行为,说明所学习的内容是在持续地增加.这要求我们要学会阶段性总结自己所学的东西,复习并巩固.所以写文章 ...
- 微信退款 java工具类,微信支付中退款踩坑记录
首先附上微信支付的开发者文档 其实这里所说的踩坑记录,无非就是微信在开发者文档上的写不太明确,也没有比较官方的demo,在此列出一个可行的demo,供大家下载使用. 主要问题就是在这几步解密上 微信的 ...
- 腾讯微信客服电话号码是多少呢/腾讯微信人工服务热线
这个时候,我们就可以拨打微信服务电话到人工客服咨询中心,让人工客服为我们解决我们需要解决的问题和我们想要知道的信息电话接通后,按照微信人工服务的提示指示去做,这样我们就可以24小时打通微信人工服务热线 ...
- 微信公众号H5端网页分享微信好友-实现思路(踩坑记录总结)
第三方配置就不说了,按着官方文档来就可以了 第一个坑 在进行接口鉴权时需要签名等参数,签名等参数需要调用后端接口返回.需要注意的是:调用接口需要一个参数就是页面路径地址(url参数,我这边页面路径用u ...
- 微信APP支付的踩坑记录(一):prepay_id 与 prepayid
最近在做微信APP支付时,发现报下面这个错误: -1 错误 可能的原因:签名错误.未注册APPID.项目设置APPID不正确.注册的APPID与设置的不匹配.其他异常等. 用微信签名校验工具校验签名又 ...
- 微信小程序 NFC 踩坑记录
需求 读取URL 写入URL 操作流程 一.读取 1. 获取NFC适配器实例 this.NFCAdapter = wx.getNFCAdapter() 2. 开始监听贴卡 this.NFCAdapte ...
- python怎么做自动化测试仪器经销商_Python自动化测试踩坑记录(企业中如何实施自动化测试)...
企业中如何实施自动化测试 在我们读高中的时候, 是不是经常听老师说:学好数理化,走遍天下都不怕. 作为软件测试这个行业,在当下,你学好自动化,你去哪面试都不怕. 说是这么说,但是你想提前下班,自动化测 ...
- 微信公众号 卡券 addCard 签名错误 踩坑记录
微信公众号 卡券 addCard 签名错误 踩坑记录 今天做微信卡券 添加卡券一直报签名错误 参考了好多文档 理了下思路 希望对遇到这问题的人有帮助.另外 本人小白一名,代码有不规范的地方,请大神勿喷 ...
最新文章
- java 解析cron_springtask 的使用方法和 cron 表达式解析
- OSPF 报文 链路状态请求报文 LSR
- JavaXml教程(一)简介
- 【华科考研机试题】最长最短文本
- redis一主一从一哨兵,第一次主从切换成功,再次主从切换无法正常执行?
- 计算机二级和英语四六级是同一个账号吗,英语四六级考试和计算机考试的登录账号和密码一样吗?我好像混了,但是密码一直输不对,...
- [RabbitMQ]MQ 的分类
- 开发VUE使用第三库,发现有bug怎么办?
- C# 温故而知新:Stream篇(六)
- java正则匹配的坑_java正则表达式入坑指南
- linux lvm 磁盘管理
- 经常用到的一些小病的预防的治疗
- delphi 获取打印机默认纸张_如何设置一台打印机打印不同尺寸的纸张
- 【转载】Latex对中文的支持 模版
- android实现Materia Design风格APP(六):结束,实现APP
- tftp怎么给服务器传文件,(tftp) - 在本机和tftp服务器之间使用TFTP协议传输文件...
- 简明C语言教程(七)scanf 用法
- 开发一个小程序商城需要多少钱?
- mysql relaylog清理_mysql 清除relay-log文件方法详解
- 玩转华为ENSP模拟器系列 | 配置设备使用SNMPv2c与网管通信示例