mirror of
https://gitee.com/binary/weixin-java-tools.git
synced 2025-05-04 12:47:46 +08:00
#615 公众号客服消息添加 "发送小程序卡片" 类型
This commit is contained in:
parent
f704b1a538
commit
96e7310143
@ -78,6 +78,11 @@ public class WxConsts {
|
||||
* 转发到客服的消息.
|
||||
*/
|
||||
public static final String TRANSFER_CUSTOMER_SERVICE = "transfer_customer_service";
|
||||
|
||||
/**
|
||||
* 小程序卡片(要求小程序与公众号已关联)
|
||||
*/
|
||||
public static final String MINIPROGRAMPAGE="miniprogrampage";
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -30,6 +30,8 @@ public class WxMpKefuMessage implements Serializable {
|
||||
private String kfAccount;
|
||||
private String cardId;
|
||||
private String mpNewsMediaId;
|
||||
private String miniProgramAppId;
|
||||
private String miniProgramPagePath;
|
||||
private List<WxArticle> articles = new ArrayList<>();
|
||||
|
||||
/**
|
||||
@ -88,6 +90,13 @@ public class WxMpKefuMessage implements Serializable {
|
||||
return new WxCardBuilder();
|
||||
}
|
||||
|
||||
/**
|
||||
* 小程序卡片
|
||||
*/
|
||||
public static MiniProgramPageBuilder MINIPROGRAMPAGE() {
|
||||
return new MiniProgramPageBuilder();
|
||||
}
|
||||
|
||||
/**
|
||||
* <pre>
|
||||
* 请使用
|
||||
@ -99,6 +108,7 @@ public class WxMpKefuMessage implements Serializable {
|
||||
* {@link WxConsts.KefuMsgType#NEWS}
|
||||
* {@link WxConsts.KefuMsgType#MPNEWS}
|
||||
* {@link WxConsts.KefuMsgType#WXCARD}
|
||||
* {@link WxConsts.KefuMsgType#MINIPROGRAMPAGE}
|
||||
* </pre>
|
||||
*
|
||||
*/
|
||||
|
@ -0,0 +1,61 @@
|
||||
package me.chanjar.weixin.mp.builder.kefu;
|
||||
|
||||
import me.chanjar.weixin.common.api.WxConsts.KefuMsgType;
|
||||
import me.chanjar.weixin.mp.bean.kefu.WxMpKefuMessage;
|
||||
|
||||
/**
|
||||
* 小程序卡片 builder
|
||||
* <pre>
|
||||
* 用法:
|
||||
* WxMpKefuMessage m = WxMpKefuMessage.MINIPROGRAMPAGE().title("xxxx").thumbMediaId("xxxxx").appId("xxxx").pagePath("****").toUser(...).build();
|
||||
* </pre>
|
||||
*
|
||||
* @author boris.bao
|
||||
*/
|
||||
public final class MiniProgramPageBuilder extends BaseBuilder<MiniProgramPageBuilder> {
|
||||
|
||||
private String title;
|
||||
private String appId;
|
||||
private String pagePath;
|
||||
private String thumbMediaId;
|
||||
|
||||
public MiniProgramPageBuilder() {
|
||||
this.msgType = KefuMsgType.MINIPROGRAMPAGE;
|
||||
}
|
||||
|
||||
|
||||
public MiniProgramPageBuilder title(String title) {
|
||||
this.title = title;
|
||||
return this;
|
||||
}
|
||||
|
||||
public MiniProgramPageBuilder appId(String appId) {
|
||||
this.appId = appId;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
public MiniProgramPageBuilder pagePath(String pagePath) {
|
||||
this.pagePath = pagePath;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
public MiniProgramPageBuilder thumbMediaId(String thumbMediaId) {
|
||||
this.thumbMediaId = thumbMediaId;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public WxMpKefuMessage build() {
|
||||
WxMpKefuMessage m = super.build();
|
||||
m.setTitle(this.title);
|
||||
m.setMiniProgramAppId(this.appId);
|
||||
m.setMiniProgramPagePath(this.pagePath);
|
||||
m.setThumbMediaId(this.thumbMediaId);
|
||||
return m;
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -2,6 +2,7 @@ package me.chanjar.weixin.mp.util.json;
|
||||
|
||||
import com.google.gson.*;
|
||||
import me.chanjar.weixin.common.api.WxConsts;
|
||||
import me.chanjar.weixin.common.api.WxConsts.KefuMsgType;
|
||||
import me.chanjar.weixin.mp.bean.kefu.WxMpKefuMessage;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
@ -79,6 +80,15 @@ public class WxMpKefuMessageGsonAdapter implements JsonSerializer<WxMpKefuMessag
|
||||
messageJson.add("wxcard", wxcard);
|
||||
}
|
||||
|
||||
if (KefuMsgType.MINIPROGRAMPAGE.equals(message.getMsgType())) {
|
||||
JsonObject miniProgramPage = new JsonObject();
|
||||
miniProgramPage.addProperty("title", message.getTitle());
|
||||
miniProgramPage.addProperty("appid", message.getMiniProgramAppId());
|
||||
miniProgramPage.addProperty("pagepath", message.getMiniProgramPagePath());
|
||||
miniProgramPage.addProperty("thumb_media_id", message.getThumbMediaId());
|
||||
messageJson.add("miniprogrampage", miniProgramPage);
|
||||
}
|
||||
|
||||
if (StringUtils.isNotBlank(message.getKfAccount())) {
|
||||
JsonObject newsJsonObject = new JsonObject();
|
||||
newsJsonObject.addProperty("kf_account", message.getKfAccount());
|
||||
|
@ -2,8 +2,8 @@ package me.chanjar.weixin.mp.bean.kefu;
|
||||
|
||||
import me.chanjar.weixin.common.api.WxConsts;
|
||||
import me.chanjar.weixin.mp.bean.kefu.WxMpKefuMessage.WxArticle;
|
||||
import org.testng.*;
|
||||
import org.testng.annotations.*;
|
||||
import org.testng.Assert;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
@Test
|
||||
public class WxMpKefuMessageTest {
|
||||
@ -13,12 +13,14 @@ public class WxMpKefuMessageTest {
|
||||
reply.setToUser("OPENID");
|
||||
reply.setMsgType(WxConsts.KefuMsgType.TEXT);
|
||||
reply.setContent("sfsfdsdf");
|
||||
Assert.assertEquals(reply.toJson(), "{\"touser\":\"OPENID\",\"msgtype\":\"text\",\"text\":{\"content\":\"sfsfdsdf\"}}");
|
||||
Assert
|
||||
.assertEquals(reply.toJson(), "{\"touser\":\"OPENID\",\"msgtype\":\"text\",\"text\":{\"content\":\"sfsfdsdf\"}}");
|
||||
}
|
||||
|
||||
public void testTextBuild() {
|
||||
WxMpKefuMessage reply = WxMpKefuMessage.TEXT().toUser("OPENID").content("sfsfdsdf").build();
|
||||
Assert.assertEquals(reply.toJson(), "{\"touser\":\"OPENID\",\"msgtype\":\"text\",\"text\":{\"content\":\"sfsfdsdf\"}}");
|
||||
Assert
|
||||
.assertEquals(reply.toJson(), "{\"touser\":\"OPENID\",\"msgtype\":\"text\",\"text\":{\"content\":\"sfsfdsdf\"}}");
|
||||
}
|
||||
|
||||
public void testImageReply() {
|
||||
@ -26,12 +28,14 @@ public class WxMpKefuMessageTest {
|
||||
reply.setToUser("OPENID");
|
||||
reply.setMsgType(WxConsts.KefuMsgType.IMAGE);
|
||||
reply.setMediaId("MEDIA_ID");
|
||||
Assert.assertEquals(reply.toJson(), "{\"touser\":\"OPENID\",\"msgtype\":\"image\",\"image\":{\"media_id\":\"MEDIA_ID\"}}");
|
||||
Assert.assertEquals(reply.toJson(),
|
||||
"{\"touser\":\"OPENID\",\"msgtype\":\"image\",\"image\":{\"media_id\":\"MEDIA_ID\"}}");
|
||||
}
|
||||
|
||||
public void testImageBuild() {
|
||||
WxMpKefuMessage reply = WxMpKefuMessage.IMAGE().toUser("OPENID").mediaId("MEDIA_ID").build();
|
||||
Assert.assertEquals(reply.toJson(), "{\"touser\":\"OPENID\",\"msgtype\":\"image\",\"image\":{\"media_id\":\"MEDIA_ID\"}}");
|
||||
Assert.assertEquals(reply.toJson(),
|
||||
"{\"touser\":\"OPENID\",\"msgtype\":\"image\",\"image\":{\"media_id\":\"MEDIA_ID\"}}");
|
||||
}
|
||||
|
||||
public void testVoiceReply() {
|
||||
@ -39,12 +43,14 @@ public class WxMpKefuMessageTest {
|
||||
reply.setToUser("OPENID");
|
||||
reply.setMsgType(WxConsts.KefuMsgType.VOICE);
|
||||
reply.setMediaId("MEDIA_ID");
|
||||
Assert.assertEquals(reply.toJson(), "{\"touser\":\"OPENID\",\"msgtype\":\"voice\",\"voice\":{\"media_id\":\"MEDIA_ID\"}}");
|
||||
Assert.assertEquals(reply.toJson(),
|
||||
"{\"touser\":\"OPENID\",\"msgtype\":\"voice\",\"voice\":{\"media_id\":\"MEDIA_ID\"}}");
|
||||
}
|
||||
|
||||
public void testVoiceBuild() {
|
||||
WxMpKefuMessage reply = WxMpKefuMessage.VOICE().toUser("OPENID").mediaId("MEDIA_ID").build();
|
||||
Assert.assertEquals(reply.toJson(), "{\"touser\":\"OPENID\",\"msgtype\":\"voice\",\"voice\":{\"media_id\":\"MEDIA_ID\"}}");
|
||||
Assert.assertEquals(reply.toJson(),
|
||||
"{\"touser\":\"OPENID\",\"msgtype\":\"voice\",\"voice\":{\"media_id\":\"MEDIA_ID\"}}");
|
||||
}
|
||||
|
||||
public void testVideoReply() {
|
||||
@ -55,12 +61,15 @@ public class WxMpKefuMessageTest {
|
||||
reply.setThumbMediaId("MEDIA_ID");
|
||||
reply.setTitle("TITLE");
|
||||
reply.setDescription("DESCRIPTION");
|
||||
Assert.assertEquals(reply.toJson(), "{\"touser\":\"OPENID\",\"msgtype\":\"video\",\"video\":{\"media_id\":\"MEDIA_ID\",\"thumb_media_id\":\"MEDIA_ID\",\"title\":\"TITLE\",\"description\":\"DESCRIPTION\"}}");
|
||||
Assert.assertEquals(reply.toJson(),
|
||||
"{\"touser\":\"OPENID\",\"msgtype\":\"video\",\"video\":{\"media_id\":\"MEDIA_ID\",\"thumb_media_id\":\"MEDIA_ID\",\"title\":\"TITLE\",\"description\":\"DESCRIPTION\"}}");
|
||||
}
|
||||
|
||||
public void testVideoBuild() {
|
||||
WxMpKefuMessage reply = WxMpKefuMessage.VIDEO().toUser("OPENID").title("TITLE").mediaId("MEDIA_ID").thumbMediaId("MEDIA_ID").description("DESCRIPTION").build();
|
||||
Assert.assertEquals(reply.toJson(), "{\"touser\":\"OPENID\",\"msgtype\":\"video\",\"video\":{\"media_id\":\"MEDIA_ID\",\"thumb_media_id\":\"MEDIA_ID\",\"title\":\"TITLE\",\"description\":\"DESCRIPTION\"}}");
|
||||
WxMpKefuMessage reply = WxMpKefuMessage.VIDEO().toUser("OPENID").title("TITLE").mediaId("MEDIA_ID")
|
||||
.thumbMediaId("MEDIA_ID").description("DESCRIPTION").build();
|
||||
Assert.assertEquals(reply.toJson(),
|
||||
"{\"touser\":\"OPENID\",\"msgtype\":\"video\",\"video\":{\"media_id\":\"MEDIA_ID\",\"thumb_media_id\":\"MEDIA_ID\",\"title\":\"TITLE\",\"description\":\"DESCRIPTION\"}}");
|
||||
}
|
||||
|
||||
public void testMusicReply() {
|
||||
@ -72,7 +81,8 @@ public class WxMpKefuMessageTest {
|
||||
reply.setTitle("TITLE");
|
||||
reply.setMusicUrl("MUSIC_URL");
|
||||
reply.setHqMusicUrl("HQ_MUSIC_URL");
|
||||
Assert.assertEquals(reply.toJson(), "{\"touser\":\"OPENID\",\"msgtype\":\"music\",\"music\":{\"title\":\"TITLE\",\"description\":\"DESCRIPTION\",\"thumb_media_id\":\"MEDIA_ID\",\"musicurl\":\"MUSIC_URL\",\"hqmusicurl\":\"HQ_MUSIC_URL\"}}");
|
||||
Assert.assertEquals(reply.toJson(),
|
||||
"{\"touser\":\"OPENID\",\"msgtype\":\"music\",\"music\":{\"title\":\"TITLE\",\"description\":\"DESCRIPTION\",\"thumb_media_id\":\"MEDIA_ID\",\"musicurl\":\"MUSIC_URL\",\"hqmusicurl\":\"HQ_MUSIC_URL\"}}");
|
||||
}
|
||||
|
||||
public void testMusicBuild() {
|
||||
@ -84,7 +94,8 @@ public class WxMpKefuMessageTest {
|
||||
.musicUrl("MUSIC_URL")
|
||||
.hqMusicUrl("HQ_MUSIC_URL")
|
||||
.build();
|
||||
Assert.assertEquals(reply.toJson(), "{\"touser\":\"OPENID\",\"msgtype\":\"music\",\"music\":{\"title\":\"TITLE\",\"description\":\"DESCRIPTION\",\"thumb_media_id\":\"MEDIA_ID\",\"musicurl\":\"MUSIC_URL\",\"hqmusicurl\":\"HQ_MUSIC_URL\"}}");
|
||||
Assert.assertEquals(reply.toJson(),
|
||||
"{\"touser\":\"OPENID\",\"msgtype\":\"music\",\"music\":{\"title\":\"TITLE\",\"description\":\"DESCRIPTION\",\"thumb_media_id\":\"MEDIA_ID\",\"musicurl\":\"MUSIC_URL\",\"hqmusicurl\":\"HQ_MUSIC_URL\"}}");
|
||||
}
|
||||
|
||||
public void testNewsReply() {
|
||||
@ -106,8 +117,8 @@ public class WxMpKefuMessageTest {
|
||||
article2.setTitle("Happy Day");
|
||||
reply.getArticles().add(article2);
|
||||
|
||||
|
||||
Assert.assertEquals(reply.toJson(), "{\"touser\":\"OPENID\",\"msgtype\":\"news\",\"news\":{\"articles\":[{\"title\":\"Happy Day\",\"description\":\"Is Really A Happy Day\",\"url\":\"URL\",\"picurl\":\"PIC_URL\"},{\"title\":\"Happy Day\",\"description\":\"Is Really A Happy Day\",\"url\":\"URL\",\"picurl\":\"PIC_URL\"}]}}");
|
||||
Assert.assertEquals(reply.toJson(),
|
||||
"{\"touser\":\"OPENID\",\"msgtype\":\"news\",\"news\":{\"articles\":[{\"title\":\"Happy Day\",\"description\":\"Is Really A Happy Day\",\"url\":\"URL\",\"picurl\":\"PIC_URL\"},{\"title\":\"Happy Day\",\"description\":\"Is Really A Happy Day\",\"url\":\"URL\",\"picurl\":\"PIC_URL\"}]}}");
|
||||
}
|
||||
|
||||
public void testNewsBuild() {
|
||||
@ -125,7 +136,22 @@ public class WxMpKefuMessageTest {
|
||||
|
||||
WxMpKefuMessage reply = WxMpKefuMessage.NEWS().toUser("OPENID").addArticle(article1).addArticle(article2).build();
|
||||
|
||||
Assert.assertEquals(reply.toJson(), "{\"touser\":\"OPENID\",\"msgtype\":\"news\",\"news\":{\"articles\":[{\"title\":\"Happy Day\",\"description\":\"Is Really A Happy Day\",\"url\":\"URL\",\"picurl\":\"PIC_URL\"},{\"title\":\"Happy Day\",\"description\":\"Is Really A Happy Day\",\"url\":\"URL\",\"picurl\":\"PIC_URL\"}]}}");
|
||||
Assert.assertEquals(reply.toJson(),
|
||||
"{\"touser\":\"OPENID\",\"msgtype\":\"news\",\"news\":{\"articles\":[{\"title\":\"Happy Day\",\"description\":\"Is Really A Happy Day\",\"url\":\"URL\",\"picurl\":\"PIC_URL\"},{\"title\":\"Happy Day\",\"description\":\"Is Really A Happy Day\",\"url\":\"URL\",\"picurl\":\"PIC_URL\"}]}}");
|
||||
}
|
||||
|
||||
public void testMiniProgramPageBuild() {
|
||||
|
||||
WxMpKefuMessage reply = WxMpKefuMessage.MINIPROGRAMPAGE()
|
||||
.toUser("OPENID")
|
||||
.title("title")
|
||||
.appId("appid")
|
||||
.pagePath("pagepath")
|
||||
.thumbMediaId("thumb_media_id")
|
||||
.build();
|
||||
|
||||
Assert.assertEquals(reply.toJson(),
|
||||
"{\"touser\":\"OPENID\",\"msgtype\":\"miniprogrampage\",\"miniprogrampage\":{\"title\":\"title\",\"appid\":\"appid\",\"pagepath\":\"pagepath\",\"thumb_media_id\":\"thumb_media_id\"}}");
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user