网站首页 > 资源文章 正文
在上两个章节,我对微信的消息收发做了一个分析,并对消息和图片做了封装,那么我们要发送消息,只有将类的属性初始化就可以了。如果对之前的文章存在疑惑或者还没有了解的,欢迎留言与翻阅。如果对我的文章感兴趣,欢迎订阅我的头条号:一点热,www.yeehot.com
有了这些基础,我们可能也会想做一个机器人接入到我们的公众号平台,为了可以让大家有一个直观的了解,我直接展示一张我已经接入机器人API的公众号平台的图片。大家也可以上去测试。
上一章节快速入口
Java使用springMVC开发微信公众号自动回复图片消息
我们首先到图灵机器人的网站申请一个KEY,当然我们也可以在微信公众号直接接入机器人,不过我这里主要以自己接入web api为例子,其实可以兼容到我们后面的功能开发。
官网地址http://www.tuling123.com/
这个申请的步骤我就不做介绍了,大家申请后,可以拿到KEY,然后我们可以在微信公众号,收到消息的同时,然后访问图灵的API,得到数据,再封装到我们的类,然后返回给微信服务器,这样就完成了一个自动回复的操作。
我这里还是以前几节的知识为基础,如果需要源码可以在我公众号,回复你的邮件索取吧。
我这里使用okhttp3进行post我们的json数据到图灵机器人服务器。
关于这个okhttp我在前几节有做说明的,如果不明白可以看回之前的文章,以下是通过maven来下载OKhttp的包。
<!-- https://mvnrepository.com/artifact/com.squareup.okhttp/okhttp -->
<dependency>
<groupId>com.squareup.okhttp</groupId>
<artifactId>okhttp</artifactId>
<version>2.7.5</version>
</dependency>
<dependency>
<groupId>jdom</groupId>
<artifactId>jdom</artifactId>
<version>1.0</version>
</dependency>
接着我们继续修改上一节的controller,我们对文本信息进行检查,如果是文本内容,我们接入图灵的API。
if (messagetype.equals("text"))
{
YhTextMessage RecivetextMessage=new YhTextMessage(postmessage);
if (RecivetextMessage.getContent().equals("图片")){
ImageMessage imageMessage=new ImageMessage();
imageMessage.setFromUserName(RecivetextMessage.getToUserName());
imageMessage.setCreateTime(String.valueOf(System.currentTimeMillis()));
imageMessage.setToUserName(RecivetextMessage.getFromUserName());
imageMessage.setMsgType("image");
// imageMessage.setMsgId(System.currentTimeMillis()+"00");
imageMessage.setMediaId("nEQXRooIfTR-yNXQK0mUnoyZs7gQ2_agbhY2UHr1jLATlCqLpPtVJqJWFftV8d92");
responsemessage=imageMessage.MessageToMap();
}
else {
YhTextMessage sendMessage=new YhTextMessage();
// sendMessage.setContent("你好,我的头条号:一点热");
sendMessage.setContent(RecivetextMessage.getContent());//用于图灵机器人测试
sendMessage.setToUserName(RecivetextMessage.getFromUserName());
sendMessage.setMsgType(RecivetextMessage.getMsgType());
sendMessage.setFromUserName(RecivetextMessage.getToUserName());
sendMessage.setCreateTime(String.valueOf(System.currentTimeMillis()));
try {
sendMessage=UseTulingMessage(sendMessage);
} catch (JSONException e) {
e.printStackTrace();
}
responsemessage=sendMessage.MessageToMap();
}
}
然后我们写一个使用图灵信息的方法,UseTulingMessage,关于这个方法,主要是使用OKhttp进行post 我们的json数据,并且对我们返回的json数据,提取出来,转换成我们微信回复信息的内容。
public YhTextMessage UseTulingMessage( YhTextMessage yhTextMessage) throws JSONException {
OkHttpClient okHttpClient = new OkHttpClient();
JSONObject jsonObject=new JSONObject();
jsonObject.put("key","你的图灵KEY");
jsonObject.put("info",yhTextMessage.getContent());
jsonObject.put("userid","0");
String recontent="查无该结果";
RequestBody requestBody = RequestBody.create(MediaType.parse("application/json; charset=utf-8"), jsonObject.toString());
//创建一个请求对象
Request request = new Request.Builder()
.url("http://www.tuling123.com/openapi/api")
.post(requestBody)
.build();
//发送请求获取响应
try {
Response response=okHttpClient.newCall(request).execute();
//判断请求是否成功
if(response.isSuccessful()){
recontent=response.body().string();
}
} catch (IOException e) {
e.printStackTrace();
}
if (recontent.contains("code")){
JSONObject rjsonobject=new JSONObject(recontent);
int code=rjsonobject.getInt("code");
if (code==100000){
recontent=rjsonobject.getString("text");
}
else if (code==200000)
{
recontent=rjsonobject.getString("text")+"当前链接:"+rjsonobject.getString("url");
}
else if (code==302000)
{
recontent=rjsonobject.getString("text")+" ";
JSONArray jsonArray=rjsonobject.getJSONArray("list");
for (int i=0;i<jsonArray.length();i++){
recontent+=jsonArray.getJSONObject(i).getString("article")+"链接为:"+jsonArray.getJSONObject(i).getString("detailurl");
}
}
else if (code==308000)
{
recontent=rjsonobject.getString("text")+" ";
JSONArray jsonArray=rjsonobject.getJSONArray("list");
for (int i=0;i<jsonArray.length();i++){
recontent+=jsonArray.getJSONObject(i).getString("name")+"链接为:"+jsonArray.getJSONObject(i).getString("detailurl");
}
}
}
System.out.print(recontent);
yhTextMessage.setContent(recontent);
return yhTextMessage;
}
最后,我们可以做一个本地测试,我们直接使用postman来测试
我们向我们的接口post 文本数据,文本内容为广州。
<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>1348831860</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[广州]]></Content>
<MsgId>1234567890123456</MsgId>
</xml>
最后,返回的数据,是我们的一段内容
这样说明我们已经接入了API成功。我们可以部署到服务器进行测试,测试结果就是我开始上传的微信图片,大家可以直接测试。
今天就讲到这里,我主要是介绍如何接入一个API来实现自动回复,这个对于我们以后接入其它的功能开发很有帮助,比如是周公解梦,八字等等的API,欢迎继续关注我的头条号:一点热,如果有什么问题,欢迎留言咨询,我看到之后会第一时间回复大家的。也欢迎收藏与转发,如果需要转载到其他网站,请与我联系。
猜你喜欢
- 2024-09-21 基于JavaEE——微信网页(一)角色的基本说明
- 2024-09-21 移动开发:SpringBoot整合微信小程序登录
- 2024-09-21 微信公众平台开发java版之公众平台注册,设置,登录(第一课)
- 2024-09-21 Java基于微信公众号接口实现授权登录源码及原理分析
- 2024-09-21 基于微信小程序的游戏论坛设计与实现-计算机毕业设计源码+LW文档
- 2024-09-21 用Java搭建微信公众号生成access_token
- 2024-09-21 Jeewx-api 1.4.9 版本发布—第三方APP开发SDK,支持微信、钉钉等
- 2024-09-21 SpringBoot实战之—与微信小程序的通信(附源码)
- 2024-09-21 Joolun微信小程序源码功能一览表(Java)
- 2024-09-21 JAVA代码实现的微信公众号简单推送消息功能程序,附代码
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- 电脑显示器花屏 (79)
- 403 forbidden (65)
- linux怎么查看系统版本 (54)
- 补码运算 (63)
- 缓存服务器 (61)
- 定时重启 (59)
- plsql developer (73)
- 对话框打开时命令无法执行 (61)
- excel数据透视表 (72)
- oracle认证 (56)
- 网页不能复制 (84)
- photoshop外挂滤镜 (58)
- 网页无法复制粘贴 (55)
- vmware workstation 7 1 3 (78)
- jdk 64位下载 (65)
- phpstudy 2013 (66)
- 卡通形象生成 (55)
- psd模板免费下载 (67)
- shift (58)
- localhost打不开 (58)
- 检测代理服务器设置 (55)
- frequency (66)
- indesign教程 (55)
- 运行命令大全 (61)
- ping exe (64)
本文暂时没有评论,来添加一个吧(●'◡'●)