700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 微信公众号接入图灵机器人实现自动回复消息

微信公众号接入图灵机器人实现自动回复消息

时间:2018-07-09 15:14:19

相关推荐

微信公众号接入图灵机器人实现自动回复消息

独角兽企业重金招聘Python工程师标准>>>

1、创建图灵机器人

进入图灵机器人网址:/

登录/注册,进入机器人管理,然后点击创建机器人

然后我们选择或填写机器人的相关属性,这里我选择的是聊天社交,模拟真人聊天的机器人,应用终端由于是微信公众号接入,机器人设置里面,我们可以拿到接口api相关的信息。直接上图:

2、后端代码开始接入

常量类

public final class Constants {/** * GET或POST必须大写,不可更改 */ public static final StringGET= "GET"; public static final StringPOST= "POST"; /* 微信请求消息类型(由微信方规定,不可更改) */ /** *文本 */ public static final StringREQ_TEXT_TYPE= "text"; /** *事件 */ public static final StringREQ_EVENT_TYPE= "event"; /** *订阅 */ public static final StringREQ_SUBSCRIBE_TYPE= "subscribe"; /** *取消订阅 */ public static final StringREQ_UNSUBSCRIBE_TYPE= "unsubscribe"; /* 微信返回消息类型(由微信方规定,不可更改) */ /** *文本 */ public static final StringRESP_TEXT_TYPE= "text"; /** *图文 */ public static final StringRESP_NEWS_TYPE= "news"; /* 图灵机器人返回数据类型状态码(官方固定) */ /** *文本 */ public static final IntegerTEXT_CODE= 100000; /** *列车 */ public static final IntegerTRAIN_CODE= 305000; /** *航班 */ public static final IntegerFLIGHT_CODE= 306000; /** *链接类 */ public static final IntegerLINK_CODE= 200000; /** *新闻 */ public static final IntegerNEWS_CODE= 302000; /** *菜谱、视频、小说 */ public static final IntegerMENU_CODE= 308000; /** * key的长度错误(32位) */ public static final IntegerLENGTH_WRONG_CODE= 40001; /** *请求内容为空 */ public static final IntegerEMPTY_CONTENT_CODE= 40002; /** * key错误或帐号未激活 */ public static final IntegerKEY_WRONG_CODE= 40003; /** *当天请求次数已用完 */ public static final IntegerNUMBER_DONE_CODE= 40004; /** *暂不支持该功能 */ public static final IntegerNOT_SUPPORT_CODE= 40005; /** *服务器升级中 */ public static final IntegerUPGRADE_CODE= 40006; /** *服务器数据格式异常 */ public static final IntegerDATA_EXCEPTION_CODE= 40007; /** *获取access_token的接口地址 */ public final static StringACCESS_TOKEN_URL= "https://api./cgi-bin/token?grant_type=client_credential&appid=&secret="; /** *图灵机器人接口地址 */ public final static StringTURING_API_URL= "/openapi/api"; private Constants() {}}

服务层处理文本消息

@Servicepublic class TextMessageHandle {/** *处理文本消息 * *@paramcustomName 用户 *@paramseverName 微信服务器 *@paramtextContent文本内容 *@return *@throwsException */ 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 StringAPP_ID= ""; /** *应用秘钥 */ public static StringAPP_SECRET= ""; /** *令牌 */ public static StringTOKEN= ""; /** *图灵机器人应用key */ public static StringAPI_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); }}

结果:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。