🆕 #3879 【公众号】被动回复消息增加「转接AI回复」支持
This commit is contained in:
@@ -53,6 +53,7 @@ public class WxConsts {
|
|||||||
public static final String DEVICE_STATUS = "device_status";
|
public static final String DEVICE_STATUS = "device_status";
|
||||||
public static final String HARDWARE = "hardware";
|
public static final String HARDWARE = "hardware";
|
||||||
public static final String TRANSFER_CUSTOMER_SERVICE = "transfer_customer_service";
|
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_TASKCARD = "update_taskcard";
|
||||||
public static final String UPDATE_BUTTON = "update_button";
|
public static final String UPDATE_BUTTON = "update_button";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -131,6 +131,15 @@ public abstract class WxMpXmlOutMessage implements Serializable {
|
|||||||
return new TransferCustomerServiceBuilder();
|
return new TransferCustomerServiceBuilder();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获得转接AI回复消息builder
|
||||||
|
*
|
||||||
|
* @return 转接AI回复消息构建器
|
||||||
|
*/
|
||||||
|
public static TransferBizAiIvrBuilder TRANSFER_BIZ_AI_IVR() {
|
||||||
|
return new TransferBizAiIvrBuilder();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获得设备消息builder
|
* 获得设备消息builder
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -15,6 +15,7 @@ import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMusicMessage;
|
|||||||
import me.chanjar.weixin.mp.bean.message.WxMpXmlOutNewsMessage;
|
import me.chanjar.weixin.mp.bean.message.WxMpXmlOutNewsMessage;
|
||||||
import me.chanjar.weixin.mp.bean.message.WxMpXmlOutTextMessage;
|
import me.chanjar.weixin.mp.bean.message.WxMpXmlOutTextMessage;
|
||||||
import me.chanjar.weixin.mp.bean.message.WxMpXmlOutTransferKefuMessage;
|
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.WxMpXmlOutVideoMessage;
|
||||||
import me.chanjar.weixin.mp.bean.message.WxMpXmlOutVoiceMessage;
|
import me.chanjar.weixin.mp.bean.message.WxMpXmlOutVoiceMessage;
|
||||||
|
|
||||||
@@ -30,6 +31,7 @@ public class XStreamTransformer {
|
|||||||
registerClass(WxMpXmlOutVideoMessage.class);
|
registerClass(WxMpXmlOutVideoMessage.class);
|
||||||
registerClass(WxMpXmlOutVoiceMessage.class);
|
registerClass(WxMpXmlOutVoiceMessage.class);
|
||||||
registerClass(WxMpXmlOutTransferKefuMessage.class);
|
registerClass(WxMpXmlOutTransferKefuMessage.class);
|
||||||
|
registerClass(WxMpXmlOutTransferBizAiIvrMessage.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -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", ""));
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user