微信公众号接入图灵机器人实现自动回复消息
2019独角兽企业重金招聘Python工程师标准>>>
1、创建图灵机器人
进入图灵机器人网址:http://www.tuling123.com/
登录/注册,进入机器人管理,然后点击创建机器人
然后我们选择或填写机器人的相关属性,这里我选择的是聊天社交,模拟真人聊天的机器人,应用终端由于是微信公众号接入,机器人设置里面,我们可以拿到接口api相关的信息。直接上图:
2、后端代码开始接入
常量类
public final class Constants {/** * GET或POST必须大写,不可更改 */ public static final String GET = "GET"; public static final String POST = "POST"; /* 微信请求消息类型(由微信方规定,不可更改) */ /** * 文本 */ public static final String REQ_TEXT_TYPE = "text"; /** * 事件 */ public static final String REQ_EVENT_TYPE = "event"; /** * 订阅 */ public static final String REQ_SUBSCRIBE_TYPE = "subscribe"; /** * 取消订阅 */ public static final String REQ_UNSUBSCRIBE_TYPE = "unsubscribe"; /* 微信返回消息类型(由微信方规定,不可更改) */ /** * 文本 */ public static final String RESP_TEXT_TYPE = "text"; /** * 图文 */ public static final String RESP_NEWS_TYPE = "news"; /* 图灵机器人返回数据类型状态码(官方固定) */ /** * 文本 */ public static final Integer TEXT_CODE = 100000; /** * 列车 */ public static final Integer TRAIN_CODE = 305000; /** * 航班 */ public static final Integer FLIGHT_CODE = 306000; /** * 链接类 */ public static final Integer LINK_CODE = 200000; /** * 新闻 */ public static final Integer NEWS_CODE = 302000; /** * 菜谱、视频、小说 */ public static final Integer MENU_CODE = 308000; /** * key的长度错误(32位) */ public static final Integer LENGTH_WRONG_CODE = 40001; /** * 请求内容为空 */ public static final Integer EMPTY_CONTENT_CODE = 40002; /** * key错误或帐号未激活 */ public static final Integer KEY_WRONG_CODE = 40003; /** * 当天请求次数已用完 */ public static final Integer NUMBER_DONE_CODE = 40004; /** * 暂不支持该功能 */ public static final Integer NOT_SUPPORT_CODE = 40005; /** * 服务器升级中 */ public static final Integer UPGRADE_CODE = 40006; /** * 服务器数据格式异常 */ public static final Integer DATA_EXCEPTION_CODE = 40007; /** * 获取access_token的接口地址 */ public final static String ACCESS_TOKEN_URL = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=&secret="; /** * 图灵机器人接口地址 */ public final static String TURING_API_URL = "http://www.tuling123.com/openapi/api"; private Constants() {} }
服务层处理文本消息
@Service public class TextMessageHandle {/** * 处理文本消息 * * @param customName 用户 * @param severName 微信服务器 * @param textContent 文本内容 * @return * @throws Exception */ public String processMessage(String customName, String severName, String textContent) throws Exception {String fromUserName = customName; String toUserName = severName; String content = textContent; String info = URLEncoder.encode(content, "utf-8"); String requestUrl = Constants.TURING_API_URL + "?key=" + AppConstants.API_KEY + "&info=" + info + "&userid=" + fromUserName; String result = HttpUtil.get(requestUrl); Object obj = MessageUtil.processTuRingResult(result, toUserName, fromUserName); return MessageUtil.ObjectToXml(obj); } }
文本消息类
@XStreamAlias("xml") public class TextMessage extends BaseMessage{@XStreamAlias("Content")@XStreamCDATA private String Content; public TextMessage() {}public TextMessage(String fromUserName, String toUserName, String content) {super(fromUserName, toUserName); super.setMsgType(Constants.RESP_TEXT_TYPE); this.Content = content; }public String getContent() {return Content; }public void setContent(String content) {Content = content; } }
基础消息
public class BaseMessage implements Serializable {@XStreamAlias("ToUserName")@XStreamCDATA private String ToUserName; @XStreamAlias("FromUserName")@XStreamCDATA private String FromUserName; @XStreamAlias("CreateTime")private Long CreateTime; @XStreamAlias("MsgType")@XStreamCDATA private String MsgType; public BaseMessage() {super(); }public BaseMessage(String fromUserName, String toUserName) {super(); FromUserName = fromUserName; ToUserName = toUserName; CreateTime = System.currentTimeMillis(); }public String getToUserName() {return ToUserName; }public void setToUserName(String toUserName) {ToUserName = toUserName; }public String getFromUserName() {return FromUserName; }public void setFromUserName(String fromUserName) {FromUserName = fromUserName; }public Long getCreateTime() {return CreateTime; }public void setCreateTime(Long createTime) {CreateTime = createTime; }public String getMsgType() {return MsgType; }public void setMsgType(String msgType) {MsgType = msgType; } }
应用常量
public final class AppConstants {/** * 应用id */ public static String APP_ID = ""; /** * 应用秘钥 */ public static String APP_SECRET = ""; /** * 令牌 */ public static String TOKEN = ""; /** * 图灵机器人应用key */ public static String API_KEY = ""; }
最后服务层处理来自文本消息
else if (MsgType.TEXT.getValue().equals(msgType)) {//点击菜单 //回复微信服务器成功 try {String result;result = textMessageHandle.processMessage(custermname, servername, content); writeText(result, response); }} catch (Exception e) {logger.error("接收来至微信服务器的消息出现错误", e); writeText(MessageUtil.ObjectToXml(new TextMessage(custermname, servername, "我竟无言以对!")), response); e.printStackTrace(); }
private void writeText(String content, HttpServletResponse response) {Writer writer = null; try {response.setContentType("text/html"); response.setCharacterEncoding("UTF-8"); writer = response.getWriter(); writer.write(content); writer.flush(); } catch (IOException e) {logger.error("响应客户端文本内容出现异常", e); } finally {IOUtils.close(writer); } }
结果:
转载于:https://my.oschina.net/inchlifc/blog/1617986
微信公众号接入图灵机器人实现自动回复消息相关推荐
- 微信公众号接入图灵机器人
微信公众号接入图灵机器人 1. 申请一个微信公众号 这个步骤和申请一个小程序了类似,首先进入微信公众平台进行注册,关键是注册的时候是选择订阅号,还是服务号,我觉的如果你是自己做着玩的,就搞个订阅号,订 ...
- 如何在微信公众号调用图灵机器人(智能聊天)
最近在研究微信公众号,有人问我可以找你的公众号聊天吗?我的第一反应是我很忙我要上班没有时间,后面就度娘了一下,发现了这个神奇的图灵机器人,可以替你跟用户聊天!是否期待你的公众号有一个萌萌哒机器人陪客人 ...
- php给微信公众号接入聊天机器人程序+采坑记录
php给微信公众号接入聊天机器人程序 今天逛了下我的公众号,突然心血来潮,想添加个自动聊天功能,于是-动手-!! 主要用到的api: 图灵机器人api 青云客智能聊天机器人API 茉莉机器人API 至 ...
- 微信公众号接入天行机器人案例和方法
首先使用的是天行机器人: 1.接入基本原理: https://www.tianapi.com/apiview/47 申请完成后的结果如下 调用对应的接口的参数如下: http://api.tianap ...
- 海外微信公众号被关注后不能自动回复消息的解决方案
海外版微信 有过相关业务联系的人或许知道,微信公众平台存在两个版本:国内版和海外版.而这两个版本的功能是不一样的.看看对比图,海外版连最基本的 "被关注回复" 和 "收到 ...
- 微信个人公众号接入图灵机器人
打开http://www.tuling123.com/,进行注册图灵机器人 在机器人设置中添加个人公众号 人物设置里面可设置机器人基本信息 技能拓展里面可设置其功能开关闭状态. 打开公众号直接回复聊天 ...
- 微信公众号加入图灵机器人
<?php /** * wechat php test */ //define your token define("TOKEN", "公众号TOKEN" ...
- 微信公众号后台java开发实现自动回复机器人
1.注册微信公众号.(简单) 2.注册图灵机器人.(自己百度) 1)注册后可以拿到key (注意 api接入里的钥匙不要打开,否则要加解密,麻烦) 3.配置微信公众号服务器验证. 1)在开发的基本 ...
- 微信公众号-自动聊天机器人
倩男靓女们,大家好,我是小二 今天给大家推荐一个好玩的东西,这几天工作比较闲,就想玩玩微信公众号,想研究下 公众号自动回复的功能,看了一遍开发文档,看的迷迷糊糊,紧接着打开同性行交友网站-csdn,看 ...
最新文章
- Docker Hub 官方仓库发布编程语言包
- api 微信小程序组件库colorui_2020最全微信小程序UI组件库合集
- PowerBI随笔(1)-类似vlookup的合并查询
- Python OpenCV——函数 cv2.findContours 运行错误【in function ‘cv::pointSetBoundingRect‘】解决方案
- web安全学习-验证机制存在的问题
- python3字典相关方法
- 【Web】WEB项目初启动的那些糟心事
- VSCode代码格式化自动换行问题
- c#string类型探讨
- kettle读txt文件并处理
- mc服务器信息监控,Splunk搭建MC监控控制台
- js获取当前是第几周
- ACCESS实例2 资料管理1——表、表关系与查询
- String index out of range: -4 错误解析
- bootstarp table完成数据渲染之后展示趋势图(echart折线图)
- 修改注册表值scancode map来屏蔽键盘上的键
- 小程序真机调试连接本地服务器进行调试
- centOS:常用命令
- Hibernate 多表映射(Mybatis,Springjdbc,Hibernate ,JDBC的多表映射学习比较)
- h5页面转PDF下载(包括pc端和移动端)
热门文章
- C/C++中extern关键字
- JAVA黑白圆圈图形_CSS3 黑白交替旋转圆圈
- 进程文件: cidaemon or cidaemon.exe
- Python数据分析,抓取京东商品价格
- 决定局域网的主要技术要素
- HDU 2202 最大三角形
- B/S模式下如何使软件屏蔽系统热键
- java s3 与ceph的关系_Ceph存储与S3对象存储性能优化.pdf
- 未定义标识符 stringc/c++(20)_20款奔驰G63AMG霸气颜值 运动造型
- 2019春季学期进度报告(十六)