Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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";
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
*
Expand Down
Original file line number Diff line number Diff line change
@@ -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回复消息.
* <pre>
* 当用户发送消息给公众号时,公众号开发者服务器回复如下内容,会触发微信公众平台的AI回复。
* 注意:需要公众号在微信公众平台上已开启AI回复功能,并且AI已学习完毕历史发表文章。
* 官方文档:https://developers.weixin.qq.com/doc/subscription/guide/product/message/Passive_user_reply_message.html
* </pre>
*
* @author copilot
*/
@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;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package me.chanjar.weixin.mp.builder.outxml;

import me.chanjar.weixin.mp.bean.message.WxMpXmlOutTransferBizAiIvrMessage;

/**
* 转接AI回复消息builder.
* <pre>
* 用法: WxMpXmlOutTransferBizAiIvrMessage m = WxMpXmlOutMessage.TRANSFER_BIZ_AI_IVR().toUser("").fromUser("").build();
* </pre>
*
* @author copilot
*/
public final class TransferBizAiIvrBuilder
extends BaseBuilder<TransferBizAiIvrBuilder, WxMpXmlOutTransferBizAiIvrMessage> {

@Override
public WxMpXmlOutTransferBizAiIvrMessage build() {
WxMpXmlOutTransferBizAiIvrMessage m = new WxMpXmlOutTransferBizAiIvrMessage();
setCommon(m);
return m;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand All @@ -30,6 +31,7 @@ public class XStreamTransformer {
registerClass(WxMpXmlOutVideoMessage.class);
registerClass(WxMpXmlOutVoiceMessage.class);
registerClass(WxMpXmlOutTransferKefuMessage.class);
registerClass(WxMpXmlOutTransferBizAiIvrMessage.class);
}

/**
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
package me.chanjar.weixin.mp.bean.message;

import org.testng.Assert;
import org.testng.annotations.Test;

/**
* 转接AI回复消息测试.
*
* @author copilot
*/
public class WxMpXmlOutTransferBizAiIvrMessageTest {

@Test
public void test() {
WxMpXmlOutTransferBizAiIvrMessage m = new WxMpXmlOutTransferBizAiIvrMessage();
m.setCreateTime(1399197672L);
m.setFromUserName("fromuser");
m.setToUserName("touser");

String expected = "<xml>" +
"<ToUserName><![CDATA[touser]]></ToUserName>" +
"<FromUserName><![CDATA[fromuser]]></FromUserName>" +
"<CreateTime>1399197672</CreateTime>" +
"<MsgType><![CDATA[transfer_biz_ai_ivr]]></MsgType>" +
"</xml>";
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 = "<xml>" +
"<ToUserName><![CDATA[touser]]></ToUserName>" +
"<FromUserName><![CDATA[fromuser]]></FromUserName>" +
"<CreateTime>1399197672</CreateTime>" +
"<MsgType><![CDATA[transfer_biz_ai_ivr]]></MsgType>" +
"</xml>";
System.out.println(m.toXml());
Assert.assertEquals(m.toXml().replaceAll("\\s", ""), expected.replaceAll("\\s", ""));
}
}