From ce3a4a3da5da157dad1358a64f513f9f96c414e3 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 25 Feb 2026 03:17:13 +0000 Subject: [PATCH 1/3] Initial plan From e423183df0b35f86777e8b41b7d4ef3aa7f5b698 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 25 Feb 2026 03:20:26 +0000 Subject: [PATCH 2/3] =?UTF-8?q?feat(mp):=20=E6=B7=BB=E5=8A=A0=E8=A2=AB?= =?UTF-8?q?=E5=8A=A8=E5=9B=9E=E5=A4=8D=E6=B6=88=E6=81=AF=E4=B8=AD=E7=9A=84?= =?UTF-8?q?=E8=BD=AC=E6=8E=A5AI=E5=9B=9E=E5=A4=8D=E5=8A=9F=E8=83=BD(transf?= =?UTF-8?q?er=5Fbiz=5Fai=5Fivr)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 WxConsts.XmlMsgType 中新增 TRANSFER_BIZ_AI_IVR 常量 - 新增 WxMpXmlOutTransferBizAiIvrMessage 消息类 - 新增 TransferBizAiIvrBuilder 构建器类 - 在 WxMpXmlOutMessage 中添加 TRANSFER_BIZ_AI_IVR() 工厂方法 - 在 XStreamTransformer 中注册新消息类型 - 新增单元测试 WxMpXmlOutTransferBizAiIvrMessageTest Co-authored-by: binarywang <1343140+binarywang@users.noreply.github.com> --- .../chanjar/weixin/common/api/WxConsts.java | 1 + .../mp/bean/message/WxMpXmlOutMessage.java | 9 ++++ .../WxMpXmlOutTransferBizAiIvrMessage.java | 29 ++++++++++++ .../outxml/TransferBizAiIvrBuilder.java | 22 ++++++++++ .../mp/util/xml/XStreamTransformer.java | 2 + ...WxMpXmlOutTransferBizAiIvrMessageTest.java | 44 +++++++++++++++++++ 6 files changed, 107 insertions(+) create mode 100644 weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/message/WxMpXmlOutTransferBizAiIvrMessage.java create mode 100644 weixin-java-mp/src/main/java/me/chanjar/weixin/mp/builder/outxml/TransferBizAiIvrBuilder.java create mode 100644 weixin-java-mp/src/test/java/me/chanjar/weixin/mp/bean/message/WxMpXmlOutTransferBizAiIvrMessageTest.java diff --git a/weixin-java-common/src/main/java/me/chanjar/weixin/common/api/WxConsts.java b/weixin-java-common/src/main/java/me/chanjar/weixin/common/api/WxConsts.java index d7e8936e62..4924682e5e 100644 --- a/weixin-java-common/src/main/java/me/chanjar/weixin/common/api/WxConsts.java +++ b/weixin-java-common/src/main/java/me/chanjar/weixin/common/api/WxConsts.java @@ -53,6 +53,7 @@ public static class XmlMsgType { public static final String DEVICE_STATUS = "device_status"; public static final String HARDWARE = "hardware"; public static final String TRANSFER_CUSTOMER_SERVICE = "transfer_customer_service"; + public static final String TRANSFER_BIZ_AI_IVR = "transfer_biz_ai_ivr"; public static final String UPDATE_TASKCARD = "update_taskcard"; public static final String UPDATE_BUTTON = "update_button"; } diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/message/WxMpXmlOutMessage.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/message/WxMpXmlOutMessage.java index 1f3143df7e..ace5b46c54 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/message/WxMpXmlOutMessage.java +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/message/WxMpXmlOutMessage.java @@ -131,6 +131,15 @@ public static TransferCustomerServiceBuilder TRANSFER_CUSTOMER_SERVICE() { return new TransferCustomerServiceBuilder(); } + /** + * 获得转接AI回复消息builder + * + * @return 转接AI回复消息构建器 + */ + public static TransferBizAiIvrBuilder TRANSFER_BIZ_AI_IVR() { + return new TransferBizAiIvrBuilder(); + } + /** * 获得设备消息builder * diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/message/WxMpXmlOutTransferBizAiIvrMessage.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/message/WxMpXmlOutTransferBizAiIvrMessage.java new file mode 100644 index 0000000000..0148e128d2 --- /dev/null +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/message/WxMpXmlOutTransferBizAiIvrMessage.java @@ -0,0 +1,29 @@ +package me.chanjar.weixin.mp.bean.message; + +import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement; +import com.thoughtworks.xstream.annotations.XStreamAlias; +import lombok.Data; +import lombok.EqualsAndHashCode; +import me.chanjar.weixin.common.api.WxConsts; + +/** + * 转接AI回复消息. + *
+ * 当用户发送消息给公众号时,公众号开发者服务器回复如下内容,会触发微信公众平台的AI回复。
+ * 注意:需要公众号在微信公众平台上已开启AI回复功能,并且AI已学习完毕历史发表文章。
+ * 官方文档:https://developers.weixin.qq.com/doc/subscription/guide/product/message/Passive_user_reply_message.html
+ * 
+ * + * @author Binary Wang + */ +@Data +@XStreamAlias("xml") +@JacksonXmlRootElement(localName = "xml") +@EqualsAndHashCode(callSuper = true) +public class WxMpXmlOutTransferBizAiIvrMessage extends WxMpXmlOutMessage { + private static final long serialVersionUID = 8275281170988017563L; + + public WxMpXmlOutTransferBizAiIvrMessage() { + this.msgType = WxConsts.XmlMsgType.TRANSFER_BIZ_AI_IVR; + } +} diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/builder/outxml/TransferBizAiIvrBuilder.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/builder/outxml/TransferBizAiIvrBuilder.java new file mode 100644 index 0000000000..f9f69c2f52 --- /dev/null +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/builder/outxml/TransferBizAiIvrBuilder.java @@ -0,0 +1,22 @@ +package me.chanjar.weixin.mp.builder.outxml; + +import me.chanjar.weixin.mp.bean.message.WxMpXmlOutTransferBizAiIvrMessage; + +/** + * 转接AI回复消息builder. + *
+ * 用法: WxMpXmlOutTransferBizAiIvrMessage m = WxMpXmlOutMessage.TRANSFER_BIZ_AI_IVR().toUser("").fromUser("").build();
+ * 
+ * + * @author Binary Wang + */ +public final class TransferBizAiIvrBuilder + extends BaseBuilder { + + @Override + public WxMpXmlOutTransferBizAiIvrMessage build() { + WxMpXmlOutTransferBizAiIvrMessage m = new WxMpXmlOutTransferBizAiIvrMessage(); + setCommon(m); + return m; + } +} diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/xml/XStreamTransformer.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/xml/XStreamTransformer.java index 55e92700de..527fc722d5 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/xml/XStreamTransformer.java +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/xml/XStreamTransformer.java @@ -15,6 +15,7 @@ import me.chanjar.weixin.mp.bean.message.WxMpXmlOutNewsMessage; import me.chanjar.weixin.mp.bean.message.WxMpXmlOutTextMessage; import me.chanjar.weixin.mp.bean.message.WxMpXmlOutTransferKefuMessage; +import me.chanjar.weixin.mp.bean.message.WxMpXmlOutTransferBizAiIvrMessage; import me.chanjar.weixin.mp.bean.message.WxMpXmlOutVideoMessage; import me.chanjar.weixin.mp.bean.message.WxMpXmlOutVoiceMessage; @@ -30,6 +31,7 @@ public class XStreamTransformer { registerClass(WxMpXmlOutVideoMessage.class); registerClass(WxMpXmlOutVoiceMessage.class); registerClass(WxMpXmlOutTransferKefuMessage.class); + registerClass(WxMpXmlOutTransferBizAiIvrMessage.class); } /** diff --git a/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/bean/message/WxMpXmlOutTransferBizAiIvrMessageTest.java b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/bean/message/WxMpXmlOutTransferBizAiIvrMessageTest.java new file mode 100644 index 0000000000..eb9f476c56 --- /dev/null +++ b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/bean/message/WxMpXmlOutTransferBizAiIvrMessageTest.java @@ -0,0 +1,44 @@ +package me.chanjar.weixin.mp.bean.message; + +import org.testng.Assert; +import org.testng.annotations.Test; + +/** + * 转接AI回复消息测试. + * + * @author Binary Wang + */ +public class WxMpXmlOutTransferBizAiIvrMessageTest { + + @Test + public void test() { + WxMpXmlOutTransferBizAiIvrMessage m = new WxMpXmlOutTransferBizAiIvrMessage(); + m.setCreateTime(1399197672L); + m.setFromUserName("fromuser"); + m.setToUserName("touser"); + + String expected = "" + + "" + + "" + + "1399197672" + + "" + + ""; + System.out.println(m.toXml()); + Assert.assertEquals(m.toXml().replaceAll("\\s", ""), expected.replaceAll("\\s", "")); + } + + @Test + public void testBuild() { + WxMpXmlOutTransferBizAiIvrMessage m = WxMpXmlOutMessage.TRANSFER_BIZ_AI_IVR() + .fromUser("fromuser").toUser("touser").build(); + m.setCreateTime(1399197672L); + String expected = "" + + "" + + "" + + "1399197672" + + "" + + ""; + System.out.println(m.toXml()); + Assert.assertEquals(m.toXml().replaceAll("\\s", ""), expected.replaceAll("\\s", "")); + } +} From 05ac5ee670bb1dad9bebdd30963c3d96f1274c38 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 28 Feb 2026 08:58:24 +0000 Subject: [PATCH 3/3] =?UTF-8?q?fix(mp):=20=E5=B0=86=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E7=9A=84=E4=BD=9C=E8=80=85=E6=A0=87=E8=AE=B0?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=BAcopilot?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: binarywang <1343140+binarywang@users.noreply.github.com> --- .../mp/bean/message/WxMpXmlOutTransferBizAiIvrMessage.java | 2 +- .../weixin/mp/builder/outxml/TransferBizAiIvrBuilder.java | 2 +- .../mp/bean/message/WxMpXmlOutTransferBizAiIvrMessageTest.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/message/WxMpXmlOutTransferBizAiIvrMessage.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/message/WxMpXmlOutTransferBizAiIvrMessage.java index 0148e128d2..504d45869a 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/message/WxMpXmlOutTransferBizAiIvrMessage.java +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/message/WxMpXmlOutTransferBizAiIvrMessage.java @@ -14,7 +14,7 @@ * 官方文档:https://developers.weixin.qq.com/doc/subscription/guide/product/message/Passive_user_reply_message.html * * - * @author Binary Wang + * @author copilot */ @Data @XStreamAlias("xml") diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/builder/outxml/TransferBizAiIvrBuilder.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/builder/outxml/TransferBizAiIvrBuilder.java index f9f69c2f52..6e5a74d477 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/builder/outxml/TransferBizAiIvrBuilder.java +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/builder/outxml/TransferBizAiIvrBuilder.java @@ -8,7 +8,7 @@ * 用法: WxMpXmlOutTransferBizAiIvrMessage m = WxMpXmlOutMessage.TRANSFER_BIZ_AI_IVR().toUser("").fromUser("").build(); * * - * @author Binary Wang + * @author copilot */ public final class TransferBizAiIvrBuilder extends BaseBuilder { diff --git a/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/bean/message/WxMpXmlOutTransferBizAiIvrMessageTest.java b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/bean/message/WxMpXmlOutTransferBizAiIvrMessageTest.java index eb9f476c56..0ea0d3f6db 100644 --- a/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/bean/message/WxMpXmlOutTransferBizAiIvrMessageTest.java +++ b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/bean/message/WxMpXmlOutTransferBizAiIvrMessageTest.java @@ -6,7 +6,7 @@ /** * 转接AI回复消息测试. * - * @author Binary Wang + * @author copilot */ public class WxMpXmlOutTransferBizAiIvrMessageTest {